개념 정리

Kafka란 뭘까

개요대용량 서비스에선 Kafka를 필수적으로 사용한다고 합니다.왜 Kafka가 뭐길래 다쓰죠? 란 궁금증에서 한번 공부해보려 합니다. 이 글은 제가 Kafka를 처음 접하고, 개념을 이해하고, 직접 실습한 과정을 담은 기록입니다.Kafka란?정의Kafka는 분산 스트리밍 플랫폼으로, 대량의 데이터를 실시간 처리하는 데 사용되는 메시지 큐 시스템입니다.다시 말해, 여러 서버에 걸쳐 메시지를 수집, 저장, 처리, 전송할 수 있으며,실시간 데이터 파이프라인을 구성하는 데 최적화된 구조를 가지고 있습니다. 대표적인 특징은 다음과 같습니다:Pub/Sub 구조메시지를 발행(Publish)하는 Producer와 구독(Subscribe)하는 Consumer 간의 구조. Kafka의 Topic은 이벤트를 중심으로 데이터..

개념 정리

[Web] 웹 표준이란

웹 표준웹 표준(Web Standard)이란 웹에서 콘텐츠를 작성하고 서비스하기 위해 지켜야 할 기술적인 규칙과 명세입니다.웹 페이지가 다양한 브라우저, 운영체제, 기기에서 동일하게 작동할 수 있도록 공통된 기술 기반을 제공합니다.이러한 표준은 주로W3C (World Wide Web Consortium)WHATWG (Web Hypertext Application Technology Working Group)같은 기관에서 정의하고 관리합니다.쉽게 말해, 웹 표준은 모든 사용자에게 공평한 웹 환경을 제공하기 위한 글로벌한 약속이라 보시면 될 것 같습니다. 구성웹 표준은 웹을 구성하는 기본 기술들로 이루어져 있습니다:HTML (HyperText Markup Language)→ 웹 콘텐츠의 구조를 정의합니다. ..

DevOps

[DevOps] Raspberry로 서버 구축하기

Intro집에 굴러다니던 라즈베리파이를 이용해 서버를 하나 구축해봤습니다.서비스를 호스팅하고 싶었지만, 저는 돈이 없는 그지기 때문에 직접 서버를 만들어보기로 했습니다... ㅠ사실 라즈베리파이 하나만 있어도 제법 많은 걸 할 수 있습니다. 라즈베리파이로 개인 서버를 구축하는 과정을 기록하려 합니다.환경제가 서버를 구축한 환경은 다음과 같습니다.라즈베리파이 4B (RAM 4GB)microSD 카드 (16GB 이상)무선 공유기 (저는 iptime 공유기를 사용하였습니다.)Raspberry(기본 세팅은 어느정도 해뒀습니다.)라즈베리파이의 현재 IP 확인아래 명령어를 통해 DHCP가 할당해준 IP를 확인합니다.ifoncig저는 공유기로부터 192.168.0.83 이라는 아이피를 할당받은 상태였습니다. 고정 IP..

Spring Boot

[Spring Boot] Hibernate가 뭘까?

IntroSpring Boot 프로젝트 중 JPA 의존성을 추가하고 실행하면 콘솔에 Hibernate라는 키워드가 자주 등장하는 로그를 보신 적이 있을 겁니다.처음에는 “나는 JPA를 쓴다고 했는데, Hibernate는 왜 자꾸 나오지?” 하고 의문이 들 수 있습니다.사실, 우리가 흔히 “JPA를 쓴다”고 말하지만, 실제로는 Hibernate가 모든 걸 처리하고 있다는 사실을 알고 계셨나요?오늘은 우리가 자주 사용하는 JPA의 구조와 그 뒤에서 일하는 진짜 구현체인 Hibernate에 대해 설명해 보려고 합니다.JPA는 뭘까?JPA의 정식 명칭은 Java Persistence API입니다. 말 그대로 "자바 객체를 어떻게 데이터베이스에 저장할 것인가?"를 정해놓은 일종의 표준 명세(인터페이스)입니다.JP..

Spring Boot

[Spring Boot] 왜 필드 주입 대신 생성자 주입을 써야 할까? (DI)

저는 스프링에서 의존성을 아래와 같이 주입했습니다.@Componentpublic class TilService { @Autowired private TilRepository tilRepository;}간단하고 눈에 잘 들어오죠. 그래서 처음에는 "이게 제일 깔끔한 방식 아닌가?" 싶었습니다.그런데 계속 자료를 찾아보며 공부하다보니 많은 개발자들이 생성자 주입 방식을 권장하고 있다는 걸 알게 됐습니다. 스프링 공식 문서와 여러 커뮤니티에서도 이 방식을 기본으로 추천하더라구요. 그래서 오늘은 필드 주입의 문제점을 알고 왜 생성자 주입을 사용하는지 간단히 정리해보려합니다.필드 주입은 왜 문제가 될까?필드 주입은 겉보기엔 참 간결합니다. @Autowired만 붙이면 되니까요. 하지만 아래와 같은 문제..

Spring Boot

[JAVA] 자바 기초 2 - 객체와 메모리, 예외까지

자바를 공부하다 보면 "객체를 만들면 어떻게 동작하지?"라는 질문이 자연스럽게 떠오르게 됩니다. 단순히 new 키워드를 써서 객체를 만든다고는 하는데 그게 실제로 메모리 상에서 어떻게 처리되는 걸까? 그리고 그 객체는 언제, 어떻게 사라질까? 이 글에서는 전 포스팅에 이어서 자바의 객체 생성과 메모리 해제 부터 하여 배열과 컬렉션, 상속과 다형성, 예외 처리, 캡슐화와 패키지 구성 등 자바의 핵심 개념들을 정리해보겠습니다.객체는 어디에, 어떻게 만들어질까?자바 프로그램이 실행되면 JVM(Java Virtual Machine)이 등장합니다. JVM은 메모리를 다음과 같이 나누어집니다:Heap: new로 만든 객체들이 저장되는 공간.Stack: 메서드 호출 시 생성되는 지역 변수와 매개변수가 저장됨.Meth..

Spring Boot

[JAVA] 자바 기초 - 메서드부터 클래스까지

이 글에서는 자바의 기초 개념을 다시 돌아보며 하나씩 정리하려합니다.메서드자바에서 메서드는 클래스 내에 정의되어야 하며 어떤 작업을 수행하는 명령문의 집합입니다. 다른 언어에서 말하는 '함수'와 유사한 개념이지만, 자바에서는 반드시 클래스 내부에 존재하기 때문에 메서드라고 부릅니다.메서드를 정의할 때는 반환 타입, 메서드 이름, 매개변수, 본문으로 구성되며, 예를 들어 다음과 같이 정의할 수 있습니다.public int add(int a, int b) { return a + b;}이 메서드는 두 개의 정수를 받아서 더한 결과를 반환합니다. 반환 타입은 int, 메서드 이름은 add, 매개변수는 a와 b입니다. 반환이 필요 없는 경우에는 void를 사용합니다.또한, 여러 메서드를 하나의 클래스 안에 ..

DevOps

[DevOps] 5MB 파일 테스트 시 에러율 급증 - 트러블슈팅 기록

문제 현상 5MB 파일 테스트에서 에러율이 80% 이상 발생특히 동시 사용자 수가 많아질수록 오류 폭증원인 분석테스트 환경은 같은 VPC 안의 서버 간 통신으로 외부 네트워크를 차단한 구조그러나 VPC 내부 통신도 Bandwidth의 제한을 받음예시 시나리오:200명의 VUser가 1초에 한 번씩 5MB 파일 요청 시 → 200 * 5MB = 1,000MB = 1GB/s이는 m5.large 인스턴스의 실질 처리 대역폭을 초과AWS 문서에 따르면 m5.large 인스턴스의 네트워크 대역폭은 최대 10Gbps로 표기되어 있지만, burstable이 아니며 지속적으로 1Gbps 미만의 성능이 나올 수 있음결론대형 파일 서빙으로 WS를 사용하는건 부적절하다.대형 파일 전송이 필요한 경우엔 S3 CDN을 통한 통..

DevOps

[DevOps] JSON 정적 파일 서빙에 최적화된 웹 서버는? - 벤치마킹테스트

개요저희 서비스 MODiE는 이미지 리소스 없이 주로 JSON 기반의 텍스트 데이터를 정적 파일 형태로 서빙하는 형태입니다.입력값 길이 제한과 페이지네이션 기능이 적용되어 있어 위 사진과 같이 JSON 응답 크기가 5kB를 넘지 않는 구조를 가지고 있습니다.MODiE와 같이 "작은 JSON 파일을 고빈도로 서빙하는 서비스"에 가장 적합한 Web Server를 도출하고자 합니다. 비교군 & 왜 이런 비교군을 잡았나정적 파일 서빙에서 가장 널리 쓰이는 3대 웹서버+++웹 서버 구조Nginx비동기 이벤트 기반Apache HTTPD멀티 프로세스 기반CaddyGo 기반 단일 바이너리 공통 조건인스턴스 타입: m5.large(non-burstable 인스턴스)→ 성능 편차 없이 공정 비교 가능→ 모든 웹 서버는 동..

Spring Boot

[Spring Boot] CRUD 간단 구현

Intro사정이 있어 며칠만에 돌아와 글을 작성합니다. 지금까지 Spring Boot 기반으로 프로젝트 환경과 폴더 구조를 정리해왔습니다.이제 본격적으로 간단한 CRUD 기능을 구현해보려 합니다.그 전에, 제가 진행 중인 NoteAnywhere 프로젝트의 전반적인 구조를 간략히 소개드리겠습니다.본격적인 코드 작성 전에 전체 흐름을 이해하는 데 도움이 될 것입니다. ERD사용자는 여러 개의 문서를 작성할 수 있고, 문서에는 여러 개의 댓글이 달릴 수 있는 구조입니다.아래는 이를 시각화한 ERD입니다.REST API 명세API 명세는 Notion을 통해 관리하고 있습니다. 아래 링크를 참고해주세요.https://imyeachan.notion.site/noteanywhere-api-docs API 명세서 | ..

Spring Boot

[Spring Boot] 기본적인 폴더 구조와 domain을 선택한 이유

Intro이전 글에서는 Spring Boot에서 사용되는 MVC 패턴의 구조와 요청 처리 흐름에 대해 살펴보았습니다.이번 글에서는 그 흐름을 실제로 구현하기 위해 Spring Boot 프로젝트 내에서 어떻게 폴더를 구성하고각 폴더가 어떤 역할을 가지는지 정리해 보려 합니다Spring Boot 프로젝트를 설계하는 데 있어 기본적인 폴더 구조와 책임 분리는 매우 중요한 부분입니다. 기본 폴더 구조우선 필자의 프로젝트에서 사용할 폴더 구조는 아래와 같습니다. 이 구조는 Spring Boot 기반의 대부분의 프로젝트에서도 자주 사용되는 형태이며,크게 다음과 같은 네 개의 계층으로 나눌 수 있습니다. 각 폴더의 역할controller/HTTP 요청을 받아 처리하는 클래스들이 위치합니다.사용자의 요청을 받아 어떤 ..

Spring Boot

[Spring Boot] MVC 패턴이란

IntroPython의 Django가 MTV(Model-Template-View) 패턴을 따르듯Java 기반의 Spring Boot는 MVC(Model-View-Controller) 패턴을 따릅니다. 이전 글에서는 프로젝트 초기 세팅과 서버 첫 실행까지 다뤘습니다.이번에는 본격적인 기능 구현에 앞서 Spring Boot의 핵심 구조인 MVC 패턴이 무엇인지, 어떤 원리로 동작하는지 가볍게 짚고 넘어가겠습니다. MVC 패턴이란?MVC는 Model–View–Controller의 약자로 애플리케이션을 세 가지 책임으로 분리해 구조화하는 디자인 패턴입니다.Model: 데이터와 비즈니스 로직을 담당합니다.예: DB 테이블과 매핑되는 @Entity, Repository, 서비스 로직 등View: 사용자에게 보여지는..

Spring Boot

[Spring Boot] 시작하기 - 환경 세팅

Intro지금까지는 막연히 "파이썬만 잘하면 취업할 수 있겠지" 라는 생각을 가지고 있었습니다.하지만 취업 시장을 마주하고 보니, 현실은 그리 녹록지 않더군요. 허허.그래도 Django, Express, FastAPI 등 다양한 웹 프레임워크를 다뤄본 경험이 있기에 Spring Boot도 금방 익숙해질 수 있으리라 생각합니다.이 글을 시작으로 Spring Boot의 기본적인 사용법을 익히고, 동시에 작은 프로젝트를 하나 만들어보려 합니다.저는 단순히 기능 구현에 그치지 않고 기술 하나하나를 선택할 때 왜 사용하는지 어떤 대안이 있는지를 항상 고민하며 학습하고자 합니다.단순한 기능 구현은 이제 중학생도 할 수 있습니다.기술자의 입장에서는 어떤 선택에도 책임과 확신이 필요하다고 생각합니다.그런 마음가짐으로 ..

개념 정리

React에서 전역 상태 관리

React에서 상태 관리 라이브러리란?정의: 애플리케이션의 여러 컴포넌트들이 공유하는 데이터를 저장하고 관리할 수 있도록 도와주는 도구.쉽게 말해, 애플리케이션 전반에서 공유해야 하는 중요한 정보를 한 곳에 모아놓고, 각 컴포넌트가 이 정보를 편리하게 불러오고 수정할 수 있도록 하는 일종의 "중앙 창고" 같은 역할을 한다.상태 관리 라이브러리를 사용하는 이유복잡한 컴포넌트 구조에서의 상태 전달 문제 해결 (props drilling)React는 컴포넌트 트리 구조로 이루어져 있어, 자식 컴포넌트에 데이터를 전달하려면 props를 통해 상위에서 하위로 상태를 내려주어야 한다. 하지만 트리가 깊어질수록 props를 계속해서 전달해야 하므로 코드가 복잡해지고 관리하기 어려워지는 문제점이 있다. 이 문제를 상태..

개념 정리

CSR, SSR, SSG 뭐가 다르냐~~?

개요웹페이지 렌더링 방식은 웹 애플리케이션의 속도와 효율성을 높여 사용자 경험(UX)을 개선하기 위해 발전해 왔다.대표적으로 CSR(Client-Side Rendering), SSR(Server-Side Rendering), SSG(Static Site Generation) 세 가지 렌더링 방식이 등장했고 각 방식은 사용자에게 페이지를 제공하는 과정에서의 차이점을 가지고 있으며, 각각의 장단점이 있다. 이러한 차이점과 각 방식의 특징을 자세히 알아보도록 하자.렌더링 방식의 변화 과거의 웹 애플리케이션은 정적 렌더링 방식을 사용하여, URL에 요청이 오면 해당하는 정적 HTML 파일을 전달하는 형식이였다. 이런 방식은 페이지를 단순하게 제공하는 데에 적합하지만, 페이지 내부의 콘텐츠를 동적으로 변경하거나 ..

개념 정리

RDBMS의 한계와 NoSQL을 사용하는 이유

RDBMS란?Relational Database Management System로 데이터를 테이블이라는 구조로 관리하는 데이터베이스 시스템.테이블은 행(Row)과 열(Column)로 구성되며, 데이터는 고정된 스키마(Schema)에 따라 저장된다. 대표적인 RDBMS로는 MySQL, PostgreSQL, OracleDB 등이 있습니다.RDBMS의 주요 개념스키마: 데이터를 저장하기 위한 구조를 정의. 테이블의 컬럼 이름, 데이터 타입, 제약 조건 등이 포함됨.ACID 속성: 트랜잭션의 안정성을 보장하는 원칙.Atomicity(원자성): 모든 작업이 성공하거나 모두 실패함.Consistency(일관성): 트랜잭션 전후에 데이터 무결성 유지.Isolation(격리성): 트랜잭션 간 간섭을 최소화.Durabi..

DevOps

[DevOps] 모니터링 환경 구축 Prometeus, Grafana, Loki, Promtail - Modie

이번엔 각 데브서버와 프로덕션 환경의 모니터링 세팅을 어떻게 하였는지 정리해보겠습니다.모니터링은 왜 해야할까?운영 중인 서버와 애플리케이션은 항상 다양한 위험에 노출되어 있습니다.서버 리소스(CPU, Memory, Disk 사용량)나 애플리케이션 상태를 실시간으로 관찰하지 않으면문제가 발생했을 때 즉각적으로 대응할 수 없습니다.-> 따라서 모니터링은 문제 예방과 빠른 대응을 위한 필수 요소입니다.모니터링은 뭘로 하지?제목에도 써있다싶이 Prometheus, Grafana, Loki, Promtail을 사용하여 모니터링 서버를 구축하였습니다.각각의 역할을 간단히 정의하면Prometheus - 메트릭 데이터를 수집하는 시스템Grafana - 수집된 데이터를 시각화하고 대시보드를 제공하는 시각화 도구Loki ..

DevOps

[DevOps] 백엔드 Prod 서버 ASG 기반 롤링 배포 자동화 - Modie

이번 글에서는 백엔드 프로덕션 환경을 기록합니다.데브서버의 단순히 빠른 개발 적용 서버와 다르게 비용, 보안, 확장성까지 모두 고려해서 설계한 풀스택 인프라 구축기입니다.(ECR, EC2, RDS, ALB, ASG, CloudFront, GitHub Actions까지 다 활용했다)구성 개요핵심 컨셉프라이빗 서브넷 기반 EC2 (Auto Scaling Group)ALB로 외부 트래픽 관리RDS는 프라이빗으로 운영NAT Gateway를 통해 외부 통신 허용GitHub Actions로 CI/CD 자동화아키텍처를 이렇게 선택한 이유(초기 시도) 퍼블릭 서브넷 + 보안 그룹처음에는 비용 아끼려고 EC2와 RDS를 퍼블릭 서브넷에 넣고, 보안 그룹으로 외부 접근만 막는 전략을 썼다.나쁘진 않았는데 문제는…퍼블릭 I..

DevOps

[DevOps] 백엔드 DEV서버 단일 EC2 기반 Blue/Green 배포 자동화 - Modie

이 글에서는 백엔드 개발 환경을 위한 AWS 인프라 설정과 Blue/Green 배포 전략을 다룰 계획입니다. 이 환경은 운영 환경과 달리 단일 EC2 인스턴스에서 빠른 테스트와 배포 자동화에 중점을 두고 구성했습니다.구조 설계 개요EC2 단일 인스턴스 (t3.medium)퍼블릭 서브넷 배치Nginx 기반 리버스 프록시와 포트 스왑 방식의 Blue/Green 배포ECR 및 GitHub Actions 활용 CI/CD 구성DEV 서비는 트래픽이 적고 빠른 개발 적용과 테스트가 중요하므로 복잡한 오토스케일링 구조 없이, 효율적인 배포 자동화에 중점을 두였습니다.배포 전략: Nginx + Docker 포트 스왑Nginx의 upstream 기능과 Docker 커테이너를 이용해 8080/8081 포트를 교차 활용하는..

DevOps

[DevOps] 프로젝트 Dev/Prod 서버 아키텍처 설계 경험 정리

INTRO이 포스팅은 카카오테크 부트캠프 클라우드 네이티브 제주 2기 과정 마지막 팀 프로젝트에서 DevOps를 담당하며 진행했던 업무와 트러블슈팅을 기록한 내용입니다.저희가 개발한 Modie는"일회성 모임을 쉽고 빠르게 모집하고, 일정 조율부터 정산까지 한 번에 해결할 수 있는 서비스"입니다.Modie 서비스의 1차 출시가 완료된 후, 본격적인 2차 기능 개발에 돌입하기 전에 그동안의 과정을 블로그에 정리해보고자 합니다.서비스 링크: https://modie.site MODiE모임을 더 쉽고 편하게!modie.site 프로젝트 구조프로젝트는 React와 Spring Boot를 기반으로 개발하였고,저는 이 개발된 결과물이 안전하게 운영될 수 있도록 배포 인프라를 구축하는 역할을 맡았습니다.이전까지는EC2..

개념 정리

OAuth 2.0 카카오 로그인 구현하기 (Express)

1. 앱키 발급 및 받을 사용자 정보 설정https://developers.kakao.com/ Kakao Developers카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다.developers.kakao.comKakao Developers 가입 후 어플리케이션 생성 하여 앱키를 발급받는다. 제품 설정 - 카카오 로그인 항목의 활성화 설정, OpenID Connect 활성화 설정을 ON으로 바꿔준다.  그 아래 Redirect URI에 본인 백엔드 서버의 파둘 엔드포인트 하나를 추가한다.보통 callback 키워드로 엔드포인트를 생성하더라 근데 난 그냥 kakako로 했다. 제품설정 - 카카오 로그인 - 동의항목 에서..

개념 정리

k8s에서 데이터 영속성을 보장하는 방법

볼륨(Volume)이 뭐냐영어로는 부피나 소리의 크기를 의미하지만 Kubernetes와 Docker에서의 볼륨은 데이터를 저장하고 관리하는 방식과 관련된 중요한 개념이다. → 영속성을 보장하기위한 개념각각의 볼륨이 어떤 의미를 가지는지 알아보자.Docker Volume도커에서 볼륨은 컨테이너 내부와 호스트 사이에서 데이터를 공유하기 위한 방법으로 사용된다.Docker 컨테이너는 기본적으로 격리된 가상화 환경에서 동작하기 때문에, 컨테이너 내부에서 생성된 데이터는 기본적으로 컨테이너의 라이프사이클에 종속된다.문제점:컨테이너가 삭제되면 내부 데이터도 모두 삭제되므로 영속적으로 데이터를 저장하거나 공유하려면 별도의 방법이 필요함.해결책:Docker 볼륨을 사용하면, 컨테이너 삭제와 관계없이 데이터를 유지하거나..

개념 정리

SSL/TLS/HTTPS

간단 정리SSL은 과거에 사용된 프로토콜로, TLS가 이를 대체.TLS는 현대 인터넷 보안 통신의 핵심.HTTPS는 TLS를 사용하여 HTTP 트래픽을 암호화하며, 웹사이트 보안을 위한 필수 요소.OSI 7계층 & TCP/IP 4계층OSI 모델이 너무 복잡해서 TCP/IP가 표준이랍니다~네트워크 접근 계층 (Network Access Layer)역할: 데이터를 물리적으로 전송하는 계층.인터넷 계층 (Internet Layer)역할: 데이터의 논리적 전송 경로를 결정.전송 계층 (Transport Layer)역할: 프로세스 간 신뢰할 수 있는 데이터 전송 제공.애플리케이션 계층 (Application Layer)역할: 사용자와 가장 가까운 계층으로 데이터 표현 및 통신 서비스를 제공Encapsulate, ..

DevOps

GitHub Actions 머리 박치기

CI/CD란?CI는 Continuous Integration(지속적 통합), CD는 Continuous Delivery(지속적 전달)의 줄임말.CI : 테스트, 빌드, Dockerizing, 저장소에 전달하는 것까지 프로덕션 환경으로 서비스를 배포할 수 있도록 준비하는 프로세스CD : 저장소로 전달된 프로덕션 서비스를 실제 사용자들에게 배포하는 프로세스작업한 소스 코드를 빌드하고, 저장소에 전달 후 배포까지 하는 과정을 통상적으로 CI/CD라고 부른다.GitHub Actions개요GitHub Actions는 빌드, 테스트 및 배포 파이프라인을 자동화할 수 있는 CI/CD(연속 통합 및 지속적인 업데이트) 플랫폼입니다. 리포지토리에 대한 모든 끌어오기 요청을 빌드 및 테스트하거나 병합된 끌어오기 요청을 프..

DevOps

블루-그린(Blue/Green) 배포 머리 박치기

블루-그린 배포란 무엇인가?블루-그린 배포: 애플리케이션이나 서비스를 배포할 때 다운타임을 최소화하고, 배포 과정에서 발생할 수 있는 문제를 빠르게 복구할 수 있도록 설계된 배포 전략.기존 시스템(블루 환경)과 새로운 시스템(그린 환경)을 동시에 운영하며, 안정적이고 빠른 배포를 가능하게 한다.블루-그린 배포의 원리두 개의 환경(Blue와 Green) 운영Blue 환경: 현재 운영 중인 환경Green 환경: 새로운 버전의 애플리케이션을 배포하고 테스트하는 환경그린 환경으로 트래픽 전환새 버전이 Green 환경에 배포되면, 트래픽을 기존 Blue 환경에서 Green 환경으로 전환합니다. 이 과정은 주로 로드밸런서나 DNS 변경을 통해 수행됩니다.롤백 가능성 보장만약 Green 환경에서 문제가 발생하면, 트..

개념 정리

언제 JWT이 아닌 쿠키/세션으로 인증/인가를 해야하는지

HTTP는 Stateless (상태 비저장) 프로토콜HTTP는 상태를 저장하지 않는(stateless) 프로토콜이다. 즉, 클라이언트가 서버에 요청을 보낼 때마다 서버는 이전 요청에 대한 정보를 기억하지 않는다. 각 요청은 독립적으로 처리되며, 서버는 요청이 끝나면 클라이언트가 누구였는지에 대해 기억하지 않는다. 이를 stateless라 하며, 이는 웹 애플리케이션을 설계할 때 중요한 고려사항이 된다.이러한 특성을 보완하기 위해 HTTP에서는 쿠키와 세션이 사용된다. 클라이언트의 상태를 유지하고, 클라이언트가 누구인지 확인하기 위해 두 가지 방법을 활용할 수 있습니다.쿠키와 세션의 개념쿠키 (Cookie)정의: 클라이언트(브라우저)에 작은 데이터를 저장하는 방법. 서버는 클라이언트에게 쿠키를 보내고, 클..

개념 정리

네트워크 개념 한줄정리

네트워크와 관련된 주요 개념 정리1. 통신과 네트워크통신: 데이터를 주고받는 행위를 의미네트워크: 통신을 가능하게 하는 연결의 구조를 뜻함.네트워크는 작은 LAN(Local Area Network)에서부터 큰 범위의 WAN(Wide Area Network)까지 다양한 규모로 구성될 수 있음.LAN은 주로 집이나 회사처럼 한정된 지역에서 사용되고, WAN은 지리적으로 멀리 떨어진 네트워크를 연결함.2. IP 주소IP(Internet Protocol) 주소: 네트워크에서 기기를 식별하는 고유 주소.정적 IP는 고정된 주소로 변하지 않고, 동적 IP는 네트워크에 접속할 때마다 새로 할당됨.동적 IP의 할당은 DHCP(Dynamic Host Configuration Protocol) 서버가 담당하며, 네트워크 ..

html css js

Javascript 공부

💡 JavaScript를 공부하며 중요하다 생각되는 부분만 정리하는 노트입니다. let과 var (보통 let 사용) var은 중복 선언 가능 하지만 let은 중복 선언 불가 const도 중복 선언 불가(read-only) 템플릿 리터럴? let name = 'yeachan'; let name2 = `name is ${name}` //-< 이거 유용함 기억 비교 연산자 ==과 === ==은 값만 ===은 자료형까지 비 함수 표현식과 함수 선언식의 차이 함수 선언식은 호이스팅을 통해 최상단으로 올려져 실행된다. 함수 표현식은 화살표 함수로도 표현 가 // 함수 표현식 let helloA = function(){ return "집가고싶다.."; } // 위 함수 표현식을 화살표 함수로 사 let helloA..

Django

aws Django 배포하기

1. github에 장고 파일 올리기 가상환경 파일은 같이 push하지 말 것! settings.py에 secretkey와 database내용을 숨기거나 repository를 privite로 변경 2. aws회원가입 3. EC2 만들기 우측 상단 나라를 서울로 변경 ec2검색 인스턴트 시작 클릭! 이름 설정 애플리케이션 및 OS 이미지 - Ubuntu / 22.04(프리 티어 사용 가능) 인스턴스 유형 - t2.micro(프리 티어 사용 가능) 키페어 생성 - 이름 설정 / RSA / .pem(Windows의 경우 .ppk 사용) --> 반드시 기억할 수 있는 곳에 저장해두어야 함. 네트워크 설정 - 인터넷에서 HTTPs 트래픽 허용 체크, 인터넷에서 HTTP 트래픽 허용 체크 시작 클릭 보안그룹 클릭!..

Django

[Django]웹 프로그래밍#2 Django 사전지식2 ( Web, 디자인 패턴 )

웹은 URL, HTTP, HTML로 구성한다. URL - 정보자원의 위치 정보 HTTP - 통신방법 - 1.GET ( 갖다줘! ) 2. POST ( 처리해줘! ) 등 HTML - 보여주고 연결해주고 ( 연결은 태그 ! ) => 서버 - URL, HTML을 미리 준비하여 HTTP 요청이 들어오면 응답해 주는 녀석 장고는 디자인 패턴으로 MTV 패턴을 가진다. M(Model) - 데이터베이스와 상호작용하는 부분 T(Template) - 사용자들 눈에 보이는 부분 V(View) - 내부 동작의 논리를 담당하는 부분

Django

[Django]웹 프로그래밍#2 Django 사전지식1 (파이썬)

사전지식1 - 파이썬 기본 지식 파이썬을 기본적으로 다룰 줄 안다면 좋다. 그 중 딕셔너리, 예외 처리, 객체와 클래스, 모듈 패키지 라이브러리에 대한 내용을 알고 장고를 공부하는 것이 좋다. 1. 딕셔너리 - 대응 관계를 나타내는 자료형 - 나중에 python 파일의 데이터를 html 파일로 넘길 때 사용하기도 함 -> key값과 이에 대응하는 value값을 가짐-기본 형태 - val = {key1:value, key2:value2, ... } 딕셔너리의 사용법은 알아서 찾아봐라 -> https://wikidocs.net/16 여기 잘 나와있네 2. 예외처리 - 프로그램을 멈춤 없이 실행 -> 파이썬 오류를 다루는 기능 -기본 형태 - try: ... except 발생 오류: # 발생 오류를 안쓰면 어..

Django

[Django]웹 프로그래밍#1 Django 장고?

Django(장고)? 파이썬으로 만들어진 웹 프레임워크 웹 프레임워크? 웹 프로그램밍을 도와줄 라이브러리들의 집합 라이브러리? 각 기능을 실행시킬 함수들 예) 로그인/로그아웃 함수 Django의 장점? 1. Ridiculously fast. - '개발'이 말도안되게 빠름 2. Reassuringly secure. - 보안이 좋은 3. Exceedingly scalable. - 확장성이 좋음 출처(http://www.djangoproject.com/) Django의 단점? 1. '실행'속도가 느리다 - Python으로 만들어져 단점을 그대로 가져옴 Django의 특징? M.T.V (Model Template View)패턴을 가짐 1. Model (모델) - 모델링을 통해 만들어짐, 데이터를 다룸, (추상적..

html css js

HTML 기초

웹 앱을 만들어 보고 싶어 필요한 기본 지식인 HTML CSS JS를 공부해보기로 했다. ※이 글은 html을 공부하며 html 코드로 직접 작성한 글임.※ ※아직 CSS JS를 1도 모르는 상태에서 html만을 사용한 글임※ 시작 HTML - HyperTEXT Markup Language HTML문서는 태그들로 이루어짐 태그의 이름이 규칙으로 정해짐 (태그마다 역할이 다름) 태그 안에는 속성값이 들어감 태그&속성 태그와 속성은 의 형태로 나타냄 id, class 속성 모든 태그에는 id, class속성 지정가능 => 이를 이용하면 CSS JS에서 태그를 쉽게 다룰 수 있음 id속성은 태그마다 하나씩 적용가능 class는 여러태그에 적용가능 예) style 속성 보이는 형태를 정의하는 속성 => CSS속..

예찬예찬
예찬예찬