b.log()

프론트엔드부터
인프라까지,
배운 것을 기록합니다.

210 posts · 10 categories · 2026

01

Nginx & Caddy 완전 정복 8편 — Nginx vs Caddy: 장단점 비교와 선택 가이드

시리즈를 마무리하며 Nginx와 Caddy를 설계 철학, HTTPS, 설정, 기능, 성능, 보안, 확장성, 생태계, 운영 관점에서 비교하고 상황별 선택 기준을 제시합니다.

2026-10-06
[devops]
nginx-caddy-08-nginx-vs-caddy.md
02

Nginx & Caddy 완전 정복 7편 — 실전: 같은 아키텍처를 Nginx와 Caddy로 각각 구성하기

Next.js 프런트엔드, API 서버 2대, WebSocket, 관리자 페이지로 이루어진 서비스를 Docker Compose 위에서 Nginx와 Caddy로 각각 구성하고, 설정과 운영 관점에서 나란히 비교합니다. Nginx→Caddy 지시어 대응표도 함께 제공합니다.

2026-10-06
[devops]
nginx-caddy-07-hands-on-same-architecture.md
03

Nginx & Caddy 완전 정복 6편 — Caddy 심화: 매처, 지시어 순서, 헬스 체크, Admin API, 플러그인

이름 있는 매처와 지시어 실행 순서, handle/route/handle_path, 스니펫, 로드 밸런싱과 액티브 헬스 체크, DNS 챌린지와 On-Demand TLS, JSON 설정과 Admin API, xcaddy 플러그인 빌드, 메트릭과 튜닝을 다룹니다.

2026-10-06
[devops]
nginx-caddy-06-caddy-advanced.md
04

Nginx & Caddy 완전 정복 5편 — Caddy 기초: Caddyfile과 자동 HTTPS

Caddy의 설계 철학과 구조, 설치와 CLI, Caddyfile 문법, 자동 HTTPS의 동작 원리, 정적 파일 서빙과 리버스 프록시 기본을 다룹니다.

2026-10-06
[devops]
nginx-caddy-05-caddy-basics.md
05

Nginx & Caddy 완전 정복 4편 — Nginx 심화: 캐싱, Rate Limit, 보안, 성능 튜닝, L4 프록시

proxy_cache, limit_req/limit_conn, add_header 상속 함정과 보안 헤더, 워커·커널 튜닝, 구조화 로그, stream 모듈을 이용한 TCP 프록시와 트러블슈팅을 다룹니다.

2026-10-06
[devops]
nginx-caddy-04-nginx-advanced.md
06

Nginx & Caddy 완전 정복 3편 — Nginx 중급: location 매칭, 리버스 프록시, 로드 밸런싱, HTTPS

server/location 선택 알고리즘, proxy_pass 슬래시 규칙, 프록시 헤더와 WebSocket, upstream 로드 밸런싱, certbot과 공식 ACME 모듈을 이용한 HTTPS 설정까지 다룹니다.

2026-10-06
[devops]
nginx-caddy-03-nginx-intermediate.md
07

Nginx & Caddy 완전 정복 2편 — Nginx 기초: 아키텍처와 설정 파일 읽는 법

Nginx 설치, 마스터/워커 이벤트 기반 아키텍처, nginx.conf의 문법과 컨텍스트 구조, 정적 파일 서빙과 필수 명령어를 다룹니다.

2026-10-06
[devops]
nginx-caddy-02-nginx-basics.md
08

Nginx & Caddy 완전 정복 1편 — 웹 서버와 리버스 프록시, 무엇을 하는 물건인가

Nginx와 Caddy를 배우기 전에 알아야 할 웹 서버, 리버스 프록시, TLS, 로드 밸런싱의 기본 개념을 정리합니다.

2026-10-06
[devops]
nginx-caddy-01-web-server-basics.md
09

WebSocket 완전 정복 16편 — 생태계와 대안, 그리고 시리즈 정리와 실습 과제

Socket.IO가 WebSocket이 아닌 이유부터 STOMP·GraphQL Subscriptions·SSE·HTTP/2 위 WebSocket·WebTransport·WebRTC까지 생태계와 대안을 정리하고, DevTools·wscat·k6 같은 도구, 시리즈 핵심 요약 일곱 가지와 난이도별 실습 과제 다섯 가지, 참고 문서를 담았습니다.

2026-09-23
[network]
websocket-16-ecosystem-alternatives-and-wrap-up.md
10

WebSocket 완전 정복 15편 — 보안 체크리스트

전송·핸드셰이크·메시지·연결 수명·운영 다섯 묶음으로 나눈 WebSocket 보안 점검 목록입니다. wss 강제, Origin 허용 목록, maxPayload 축소, 입력 스키마 검증, 메시지별 인가, rate limit, 미인증 연결 타임아웃, 로그 마스킹, 1006 비율 모니터링까지 담았습니다.

2026-09-23
[network]
websocket-15-security-checklist.md
11

WebSocket 완전 정복 14편 — 인프라: Nginx, 로드밸런서, 그리고 OS 한계

Upgrade와 Connection이 hop-by-hop 헤더라 기본 전달되지 않는다는 사실에서 출발해 Nginx 설정을 줄 단위로 읽고, L7과 L4 로드밸런서의 차이, 파일 디스크립터와 에페메랄 포트라는 OS 한계, 메모리 산정과 Node.js 단일 이벤트 루프의 특성을 다룹니다.

2026-09-23
[network]
websocket-14-infrastructure-proxy-lb-os.md
12

WebSocket 완전 정복 13편 — 백프레셔와 흐름 제어: bufferedAmount와 slow consumer

느린 클라이언트 몇 개가 서버 메모리를 고갈시키는 slow consumer 문제를 bufferedAmount 임계값으로 방어하는 코드와, 메시지를 버릴지 최신값으로 덮어쓸지 연결을 끊을지 데이터 성격에 따라 정하는 정책, 그리고 반대 방향의 rate limit을 다룹니다.

2026-09-23
[network]
websocket-13-backpressure-and-flow-control.md
13

WebSocket 완전 정복 12편 — 수평 확장: Pub/Sub 백플레인과 무중단 배포

연결 자체가 상태이기 때문에 서버를 늘리는 것만으로는 끝나지 않는 이유와 Redis Pub/Sub 백플레인 구현을 코드로 살펴보고, Redis·NATS·Kafka 선택지, 스티키 세션이 보통 불필요한 이유, 연결 불균형과 무중단 배포, 프레즌스 관리까지 다룹니다.

2026-09-23
[network]
websocket-12-horizontal-scaling.md
14

WebSocket 완전 정복 11편 — 서브프로토콜과 확장: 버전 협상과 permessage-deflate

Sec-WebSocket-Protocol로 애플리케이션 프로토콜과 버전을 핸드셰이크 단계에서 협상하는 법과 협상이 어긋났을 때의 동작, 그리고 permessage-deflate 압축 확장이 주는 이득과 연결당 컨텍스트 메모리·CPU·CRIME류 위험이라는 대가를 다룹니다.

2026-09-23
[network]
websocket-11-subprotocols-and-extensions.md
15

WebSocket 완전 정복 10편 — 인증과 인가: 티켓 방식과 CSWSH 방어

쿠키·쿼리스트링 토큰·티켓·첫 메시지 네 가지 인증 방식을 주의사항과 함께 비교하고, Upgrade 단계에서 Origin을 검사하고 일회용 티켓을 소모하는 서버 코드, CORS가 적용되지 않아 생기는 CSWSH 공격의 원리, 그리고 연결 이후의 인가와 토큰 재검증을 다룹니다.

2026-09-23
[network]
websocket-10-authentication-and-authorization.md
16

WebSocket 완전 정복 9편 — 재연결 전략: 지수 백오프와 지터, seq 기반 상태 복구

연결은 반드시 끊긴다는 전제에서 출발해 thundering herd를 막는 지수 백오프와 full jitter, 재연결하면 안 되는 상황을 코드로 구분하는 법, 그리고 스냅샷·seq 재전송·하이브리드 세 가지 상태 복구 방식과 그에 필요한 저장소를 다룹니다.

2026-09-23
[network]
websocket-09-reconnection-strategy.md
17

WebSocket 완전 정복 8편 — 메시지 설계: 봉투 형식, correlation id, 그리고 seq

WebSocket이 메시지의 의미를 정해 주지 않으므로 직접 설계해야 하는 애플리케이션 프로토콜을 다룹니다. 타입 유니온으로 표현한 봉투 형식, 요청-응답을 잇는 correlation id, 재연결 복구의 토대가 되는 seq, 버전 관리 원칙과 RPC 클라이언트 구현을 담았습니다.

2026-09-23
[network]
websocket-08-message-design.md
18

WebSocket 완전 정복 7편 — 제어 프레임: Ping/Pong 하트비트와 Close 코드

half-open 연결과 유휴 타임아웃 때문에 하트비트가 필요한 이유, ws로 구현하는 서버 주도 Ping/Pong과 주기를 정하는 기준, 그리고 1000부터 4999까지 Close 코드 표와 실무에서 가장 흔한 1006의 원인을 다룹니다.

2026-09-23
[network]
websocket-07-control-frames-ping-pong-close.md
19

WebSocket 완전 정복 6편 — 프레임 구조: FIN, opcode, Payload len, 그리고 마스킹

WebSocket 프레임의 비트 레이아웃을 도식으로 읽고 FIN·RSV·opcode·Payload len·Masking-key를 필드별로 해설한 뒤, 클라이언트에서 서버로 가는 프레임만 마스킹하는 이유가 프록시 캐시 오염 방지라는 점과 학습용 파서 코드를 다룹니다.

2026-09-23
[network]
websocket-06-frame-structure.md
20

WebSocket 완전 정복 5편 — ws로 만드는 첫 번째 서버와 브로드캐스트

Node.js의 ws 라이브러리로 연결을 받고 모든 클라이언트에 브로드캐스트하는 30줄짜리 서버를 만들고, wscat으로 터미널 두 개를 열어 확인하는 법, 그리고 maxPayload 기본값 100MiB를 처음부터 줄여 둬야 하는 이유를 다룹니다.

2026-09-23
[network]
websocket-05-first-server.md

blog92@web:~$ exit