b.log()

blog92@web:~$ cd categories/backend

Backend

서버·API·인증 — 백엔드 개발 기록

38 ENTRIES
categories/backend/
01

요청 한 건의 일생 6편 — 스트리밍과 읽기 복제본, 마지막 요청까지 지키는 종료

수십만 행을 메모리에 올리지 않고 내보내는 커서 스트리밍, 읽기 복제본과 복제 지연의 함정, 진행 중인 요청을 지키는 Graceful Shutdown, 그리고 요청 한 건의 타임라인과 운영 전 체크리스트로 시리즈를 닫는다.

2026-09-17
[backend]
request-lifecycle-06-scale-and-shutdown.md
02

요청 한 건의 일생 5편 — 캐시와 타임아웃, 에러와 추적으로 파이프라인을 지키는 법

DB 조회를 아예 하지 않는 캐싱 계층부터 Cache Stampede, 바깥이 길고 안쪽이 짧아야 하는 타임아웃 체인과 쿼리 취소, 에러를 계층 경계에서 번역하는 법, 그리고 요청 하나를 끝까지 추적하는 관측성까지.

2026-09-17
[backend]
request-lifecycle-05-cache-timeout-observability.md
03

요청 한 건의 일생 4편 — 트랜잭션과 커넥션 풀, 부하에서 먼저 무너지는 지점

트랜잭션이 하나의 연결 위에서만 성립하는 이유와 격리 수준, 커넥션 풀이 고갈되는 장애 시나리오와 사이징 기준, 그리고 EXPLAIN ANALYZE와 N+1과 OFFSET 페이지네이션까지 실무에서 터지는 지점들을 본다.

2026-09-17
[backend]
request-lifecycle-04-transaction-and-pool.md
04

요청 한 건의 일생 3편 — 커넥션 풀을 지나 DB에 닿았다가 JSON으로 돌아오기까지

커넥션 풀에서 연결을 빌리는 순간부터 DB 안에서 파서와 플래너와 실행기가 움직이는 과정, 그리고 결과 행이 DTO와 JSON을 거쳐 상태 코드와 헤더를 달고 클라이언트로 나가기까지를 따라간다.

2026-09-17
[backend]
request-lifecycle-03-db-and-response.md
05

요청 한 건의 일생 2편 — Node.js는 요청을 받아 어떤 계층으로 흘려보내는가

요청이 애플리케이션 서버 안으로 들어온 뒤의 이야기. 소켓에서 req 객체가 만들어지는 과정과 싱글 스레드가 동시 요청을 처리하는 원리, 미들웨어 파이프라인, 그리고 Controller에서 Service를 거쳐 Repository까지 내려가는 계층 구조를 본다.

2026-09-17
[backend]
request-lifecycle-02-app-entry.md
06

요청 한 건의 일생 1편 — 요청은 브라우저를 떠나 어디를 지나 서버에 닿는가

버튼 하나를 누른 요청이 DB에 닿았다가 돌아오기까지의 전체 지도를 먼저 그린다. URL 해석과 DNS, TCP와 TLS 핸드셰이크, 그리고 로드밸런서와 리버스 프록시가 요청에 무엇을 더하는지까지.

2026-09-17
[backend]
request-lifecycle-01-the-map.md
07

패턴을 고르는 법 — 교환 조건의 계산

충돌하는 힘을 숫자로 적고, 팔 권한을 확인하고, 되돌리기 비용으로 정렬하는 선택 절차. 패턴이 안티패턴이 되는 세 경로와 판 것을 남기는 ADR. 시리즈 완결.

2026-09-15
[backend]
backend-design-patterns-16-choosing-patterns.md
08

운영을 패턴으로 — Health Check, Correlation ID, Leader Election

Health Check, Graceful Shutdown, Correlation ID, Leader Election을 시스템이 자기 상태를 선언하는 장치로 본다. 프로브 설정이 정하는 시간, 로그 저장 비용, 펜싱 토큰 없는 락의 한계.

2026-09-15
[backend]
backend-design-patterns-15-operational-patterns.md
09

변경을 안전하게 내보내기 — Sidecar, Feature Toggle, Expand-Contract

배포는 원자적이지 않다는 전제에서 나오는 Expand-Contract, Feature Toggle, Canary, Sidecar. 배포 3배·토글 조합 1,024가지·canary 검출 하한이라는 가격표와 만료일을 박은 토글.

2026-09-15
[backend]
backend-design-patterns-14-deployment-and-change-patterns.md
10

실패를 설계에 넣기 — Stability Patterns

Nygard 계열 안정성 장치 여덟 개를 무엇을 막는가로 정리하고, 겹치는 순서와 설정값의 근거를 계산한다. 틀린 설정이 없는 것보다 나쁜 이유와 장치별 한계 이득.

2026-09-15
[backend]
backend-design-patterns-13-stability-patterns.md
11

읽기와 쓰기를 가르다 — CQRS와 Event Sourcing

CQRS의 세 단계와 단계별 비용, CQRS와 별개인 Event Sourcing이 읽기 모델을 사실상 강제하는 이유. 투영 재구축 시간, 업캐스팅, 잊힐 권리와의 충돌.

2026-09-15
[backend]
backend-design-patterns-12-cqrs-and-event-sourcing.md
12

분산 쓰기의 정합성 — Saga, Transactional Outbox, Idempotent Receiver

원자성 대신 보상을 사는 Saga의 Orchestration과 Choreography 비교, 상태 머신으로 쓴 조정자, Outbox 폴링·정리 비용과 멱등성 키의 보관 기간.

2026-09-15
[backend]
backend-design-patterns-11-saga-and-outbox.md
13

서비스 경계를 긋는 법 — Bounded Context와 분해 전략

Bounded Context와 Context Mapping으로 경계를 긋고 커밋 로그의 동시 변경으로 후보를 검증한다. 조율 쌍 K(K−1)/2, 잘못 그은 경계의 수정 비용, Modular Monolith가 먼저인 이유.

2026-09-15
[backend]
backend-design-patterns-10-service-decomposition.md
14

이질적인 것을 막아내는 벽 — Anticorruption Layer와 Strangler Fig

외부 모델을 한 곳에 가두는 Anticorruption Layer와 레거시를 조각내 대체하는 Strangler Fig. 번역 비용을 측정 가능하게 모으는 법과 전면 재작성이 더 싼 규모의 계산.

2026-09-15
[backend]
backend-design-patterns-9-anticorruption-and-strangler.md
15

메시지로 말하기 — Enterprise Integration Patterns

Enterprise Integration Patterns 중 현역인 것들과 비동기 메시징이 파는 즉시성·순서·디버깅 가능성. 멱등 소비자와 DLQ 골격, 큐 대신 PostgreSQL 작업 테이블로 충분한 경우.

2026-09-15
[backend]
backend-design-patterns-8-messaging-patterns.md
16

원격 경계의 문법 — Remote Facade, DTO, API Composition, BFF

원격 경계에서 왕복 횟수·내부 구조 유출·흩어진 데이터·클라이언트별 요구를 다루는 네 패턴. 가용성 산술로 본 부분 실패 처리와 필드 하나당 늘어나는 매핑 지점.

2026-09-15
[backend]
backend-design-patterns-7-remote-boundary-patterns.md
17

변하는 것을 갈아끼우기 — 백엔드에서 살아남은 GoF

GoF 23개 중 백엔드에서 살아남은 여덟 개의 서식지. Strategy와 Decorator를 클래스와 함수로 나란히 써 보고, 함수 버전이 사는 컴파일 타임 검사와 파는 발견 가능성을 비교한다.

2026-09-15
[backend]
backend-design-patterns-6-gof-in-the-backend.md
18

도메인을 말하는 어휘 — 값 객체, 엔티티, 애그리게이트, 도메인 이벤트

값 객체·엔티티·애그리게이트·도메인 이벤트가 검증 지점을 줄이는 방식. 애그리게이트 크기와 동시성 충돌의 교환, 판별 유니온 대안, 경계 없이 전술 패턴만 사면 손해인 이유.

2026-09-15
[backend]
backend-design-patterns-5-ddd-tactical-patterns.md
19

같은 말을 네 번 하는 그림들 — Layered, Hexagonal, Onion, Clean

Layered·Hexagonal·Onion·Clean은 의존 방향이라는 한 규칙의 다른 그림이다. 의존성 역전을 클로저 하나로 구현하고, 유스케이스당 파일 7개와 필드당 8군데라는 가격표를 붙인다.

2026-09-15
[backend]
backend-design-patterns-4-hexagonal-and-friends.md
20

영속성을 도메인에서 떼어내기 — Repository, Data Mapper, Unit of Work

Repository만 넣고 Unit of Work를 빠뜨리면 트랜잭션 경계가 사라지는 이유. AsyncLocalStorage로 만든 최소 Unit of Work, Identity Map과 Lazy Load의 대가, 쓰기와 조회 경로의 분리.

2026-09-15
[backend]
backend-design-patterns-3-persistence-patterns.md

blog92@web:~$ cd ..