
1. HTTP와 HTTPS
HTTP (HyperText Transfer Protocol)
- 웹에서 클라이언트와 서버 간 데이터 전송 프로토콜
- 기본 포트: 80
- 특징: 무상태(Stateless), 비연결성(Connectionless), 단순하고 확장 가능
HTTPS (HTTP Secure)
- HTTP + SSL/TLS 암호화
- 기본 포트: 443
- 장점: 데이터 암호화, 무결성 보장, 서버 인증, SEO 순위 개선
요약: HTTPS는 사실상 표준이며, 보안 및 신뢰성 확보를 위해 필수적입니다.
2. HTTP Method (GET vs POST)
GET
- 데이터 조회용
- URL에 파라미터 포함 (/api/users?page=1)
- 캐시 가능, 히스토리 저장, 길이 제한 존재
- 멱등성 보장
POST
- 데이터 생성/수정용
- 요청 본문(Body)에 데이터 포함
- 캐시/히스토리 저장 불가, 길이 제한 없음
- 멱등성 보장 안 함
// GET
fetch('/api/users?page=1')
// POST
fetch('/api/users', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ name: '홍길동' })
})
요약: GET은 안전하고 멱등적, POST는 상태를 바꾸는 요청에 사용.
3. CORS (Cross-Origin Resource Sharing)
- 브라우저 보안 정책(Same-Origin Policy) 때문에, 다른 출처(Origin)의 자원 접근을 제한함.
- 출처 = 프로토콜 + 도메인 + 포트
동작 방식
- Simple Request: 조건 만족 시 바로 요청 가능 (GET 등)
- Preflight Request: OPTIONS로 서버 허용 여부 확인 후 본 요청 진행
요약: CORS는 보안과 확장성 사이 균형을 맞추기 위한 메커니즘.
4. TCP와 UDP
TCP (Transmission Control Protocol)
- 연결 지향적, 신뢰성 보장
- 데이터 순서 유지, 오류 검출, 혼잡 제어
- 사용: 웹, 이메일, 파일 전송
UDP (User Datagram Protocol)
- 비연결성, 빠름
- 순서 보장 X, 오류 복구 X, 오버헤드 적음
- 사용: 실시간 스트리밍, 온라인 게임, DNS
요약: TCP는 신뢰성, UDP는 속도.
5. 쿠키와 세션
쿠키 (Cookie)
- 클라이언트(브라우저)에 저장되는 작은 데이터 조각
- 자동 전송, 4KB 제한, 만료 시간 설정 가능
세션 (Session)
- 서버에 저장, 세션 ID로 식별
- 상대적으로 보안성 높음
- 브라우저 종료 시 만료
요약: 쿠키는 클라이언트 저장, 세션은 서버 저장.
6. REST와 RESTful API
REST 제약 조건
- 클라이언트-서버 구조
- 무상태(Stateless)
- 캐시 가능
- 일관된 인터페이스
- 계층 구조
- 필요 시 코드 온 디맨드
RESTful API 설계 원칙
- 자원(Resource)은 URI로 표현
- 행위는 HTTP Method로 표현
- 응답 메시지는 스스로를 설명해야 함
// RESTful API 예시
GET /api/users // 사용자 조회
POST /api/users // 사용자 생성
PUT /api/users/123 // 사용자 수정
DELETE /api/users/123 // 사용자 삭제
요약: RESTful API는 “자원 중심” 설계 철학.
7. 로드 밸런싱 (Load Balancing)
필요성
알고리즘
- Round Robin: 순서대로 분배
- Weighted Round Robin: 서버 가중치 반영
- Least Connections: 연결 수 가장 적은 서버 선택
- IP Hash: 클라이언트 IP 기반 분배
종류
- L4: 전송 계층 (IP, Port) 기반, 빠름
- L7: 응용 계층 (URL, 헤더, 쿠키) 기반, 정교함
요약: 로드 밸런싱은 안정적 서비스 운영을 위한 핵심 기술.