b.log()

blog92@web:~$ cd categories/backend

Backend

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

38 ENTRIES
categories/backend/
21

도메인 로직은 어디에 사는가 — Transaction Script, Domain Model, Table Module

같은 규칙을 쓰는 유스케이스 수 K로 Transaction Script와 Domain Model의 전환점을 계산하고, Node/TypeScript에서 Table Module이 성립하지 않는 이유를 따진다.

2026-09-15
[backend]
backend-design-patterns-2-where-domain-logic-lives.md
22

패턴은 무엇을 파는가 — 해법이 아니라 교환 조건

패턴을 해법이 아니라 교환 조건으로 읽는 법. 간접성·일관성·중복이라는 세 통화, Repository로 계산해 본 가격표, 그리고 16편 시리즈의 지도.

2026-09-15
[backend]
backend-design-patterns-1-what-patterns-sell.md
23

왜 같은 실수가 반복되는가 — 안티패턴의 생산 메커니즘

알려진 해법이 있는데도 같은 구조가 반복되는 이유. Conway의 법칙, 도구 우선 선택, 지연 도착하는 비용, 중앙화와 분산의 진자. 시리즈 완결.

2026-09-14
[backend]
backend-antipatterns-16-why-we-repeat-ourselves.md
24

관측 불가능한 시스템 — 로그만 있는 분산 시스템

로그만 있는 분산 시스템에서 장애 원인을 못 찾는 이유. 로그·메트릭·트레이스의 역할 분담, Correlation ID, 카디널리티 폭발, 알림 피로.

2026-09-14
[backend]
backend-antipatterns-15-unobservable-system.md
25

이벤트 루프를 막는 자 — Node.js 런타임 고유 안티패턴

CSV 내보내기 하나가 무관한 엔드포인트의 p99까지 올리는 이유. CPU가 이벤트 루프를 붙잡는 네 가지 통로, 동시성 없는 async, 스트림과 백프레셔.

2026-09-14
[backend]
backend-antipatterns-14-blocking-the-event-loop.md
26

상태를 잊은 함수 — 서버리스 안티패턴

스케일 아웃된 함수가 DB 커넥션을 고갈시키는 이유, 콜드 스타트의 네 단계, Lambda Pinball, 그리고 서버리스가 오히려 정답인 경우.

2026-09-14
[backend]
backend-antipatterns-13-stateless-function-serverless.md
27

동기 호출 사슬과 장애 전파 — Retry Storm, Thundering Herd

하위 서비스 하나가 느려지자 전체가 멈추는 동기 호출 사슬. 재시도 증폭, 캐시 동시 만료, 커넥션 풀 도미노와 각 방어책의 대가.

2026-09-14
[backend]
backend-antipatterns-12-retry-storm-thundering-herd.md
28

Dual Write와 2PC의 유혹 — 분산 트랜잭션 안티패턴

DB 저장과 이벤트 발행을 나란히 쓰는 다섯 줄이 깨지는 방식, 2PC가 후퇴한 이유, Saga의 전제, Transactional Outbox와 멱등 소비자.

2026-09-14
[backend]
backend-antipatterns-11-dual-write-and-2pc.md
29

Shared Database와 Entity Service — 경계를 데이터로 그을 때

컬럼 하나를 못 바꾸는 공유 DB와 명사로 쪼갠 Entity Service의 함정. 경계를 변경 이유로 긋고 데이터 중복을 결합도의 값으로 치르는 법.

2026-09-14
[backend]
backend-antipatterns-10-shared-database-entity-service.md
30

Distributed Monolith — 가장 비싼 실패

기능 하나에 서비스 일곱 개가 같은 날 배포되는 구조. 함께 바뀌는 것을 세어 진단하고 Modular Monolith로 후퇴하는 탈출 경로.

2026-09-14
[backend]
backend-antipatterns-9-distributed-monolith.md
31

계약의 붕괴 — Chatty Interface, 버전 없는 API, Over-fetching

Chatty Interface, 버전 없는 API, Over-fetching이 한 화면에 모이는 이유와 유스케이스 기반 엔드포인트·런타임 계약으로 계약을 고정하는 법.

2026-09-14
[backend]
backend-antipatterns-8-contract-collapse.md
32

Fallacies of Distributed Computing — 네트워크를 함수 호출로 취급한 죄

네트워크 호출을 함수 호출처럼 쓴 대가. 분산 컴퓨팅의 여덟 가지 오류를 장애 시나리오로 번역하고 타임아웃·재시도·멱등성을 API의 1급 요소로 만든다.

2026-09-14
[backend]
backend-antipatterns-7-fallacies-of-distributed-computing.md
33

Smart Pipes, Dumb Endpoints — ESB 안티패턴

비즈니스 규칙이 게이트웨이 미들웨어에 숨는 순간. ESB의 실패가 API 게이트웨이로 되살아나는 구조와 게이트웨이의 책임을 문서로 고정하는 법.

2026-09-14
[backend]
backend-antipatterns-6-smart-pipes-dumb-endpoints.md
34

데이터베이스가 아키텍처가 될 때 — Smart DB와 DB-as-IPC

스토어드 프로시저에 로직이 숨은 Smart DB의 청구서, Oracle에서 PostgreSQL로 갈 때 돌아오는 비용, 무엇을 DB에 남길지의 기준.

2026-09-14
[backend]
backend-antipatterns-5-smart-db-as-architecture.md
37

God Object와 Big Ball of Mud — 경계 없는 서버

나쁜 커밋 하나 없이 1,800줄 파일이 되는 과정. 응집도·결합도를 형용사가 아닌 기준으로 말하는 법과 이음매를 찾아 경계를 되살리는 순서.

2026-09-14
[backend]
backend-antipatterns-2-god-object-big-ball-of-mud.md
38

안티패턴이란 무엇인가 — 패턴의 그림자

안티패턴의 엄격한 정의(해법이 두 개 있어야 한다), 코드 스멜·실패 사례와의 구분, 판별 체크리스트, 그리고 16편 시리즈의 지도.

2026-09-14
[backend]
backend-antipatterns-1-what-is-an-antipattern.md

blog92@web:~$ cd ..