b.log()

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

210 posts · 10 categories · 2026

141

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

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

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

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

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

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

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

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

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

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

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

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

메시지로 말하기 — Enterprise Integration Patterns

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

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

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

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

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

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

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

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

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

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

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

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

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

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

영속성을 도메인에서 떼어내기 — 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
151

도메인 로직은 어디에 사는가 — 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
152

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

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

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

효율적인 React 8편 — 측정하고 유지하기: 판단을 기계에 맡기고, 시리즈를 정리한다

한 번 빠르게 만든 코드는 다음 PR에서 다시 느려진다. 실제 사용자 환경의 측정, 성능 예산을 CI에 거는 법, lint로 판단을 기계화하는 법, 리뷰 질문, 기존 코드베이스에 적용하는 순서, 그리고 시리즈 총정리.

2026-09-15
[frontend]
efficient-react-8-measure-and-sustain.md
154

효율적인 React 7편 — 경계와 번들: JS가 도착하기까지

JS는 받고, 해석하고, 실행하고, hydration해야 쓸모가 생긴다. 'use client' 경계가 번들을 결정하는 방식, 코드 분할 단위, import 습관, 서드파티 스크립트, 이미지·폰트, hydration 불일치.

2026-09-15
[frontend]
efficient-react-7-boundaries-and-bundle.md
155

효율적인 React 6편 — 반응성과 우선순위: 빠르게 만들 수 없으면 먼저 반응한다

계산을 더 줄일 수 없을 때 남는 방법은 우선순위다. INP의 세 구간, useTransition과 useDeferredValue의 선택 기준, 디바운스와의 차이, 긴 작업 쪼개기, 가상화의 대가, Activity로 화면 상태 보존하기.

2026-09-15
[frontend]
efficient-react-6-responsiveness.md
156

효율적인 React 5편 — 데이터 흐름 설계: 도착 순서를 트리와 함께 설계한다

사용자가 느끼는 지연의 대부분은 렌더가 아니라 데이터 도착 순서에서 생긴다. Waterfall이 생기는 세 경로, 요청을 위에서 병렬로 시작하는 법, Suspense 경계 배치 기준, 서버 컴포넌트와 클라이언트 캐시의 역할 분담, Actions와 useOptimistic.

2026-09-15
[frontend]
efficient-react-5-data-flow.md
157

효율적인 React 4편 — Effect 없이 생각하기: 동기화와 이벤트를 구분하는 법

useEffect는 '무언가 바뀌면 실행'하는 도구가 아니라 '화면이 존재하는 동안 외부 시스템과 맞추는' 도구다. Effect가 필요 없는 일곱 가지 경우, 필요한 다섯 가지 경우, 의존성 배열을 줄이는 법, useEffectEvent.

2026-09-15
[frontend]
efficient-react-4-effects.md
158

효율적인 React 3편 — 구조로 렌더 범위 줄이기: memo보다 먼저 할 일

렌더 반경을 사후에 막는 memo 대신, 반경이 처음부터 넓어지지 않게 하는 네 가지 구조 기법. 컴포넌트 정체성 규칙과 React Compiler가 바꾼 것, 바꾸지 못한 것.

2026-09-15
[frontend]
efficient-react-3-render-scope.md
159

효율적인 React 2편 — 상태 설계: 적게, 올바른 자리에, 불가능한 조합 없이

state는 렌더의 원인이자 버그의 출처다. 최소 상태를 가려내는 세 질문, 파생값 계산, 상태 5분류와 각자의 자리, Colocation, 불가능한 상태를 타입으로 막는 법.

2026-09-15
[frontend]
efficient-react-2-state-design.md
160

효율적인 React 1편 — 비용 모델: React는 무엇에 비용을 쓰는가

렌더를 일으키는 원인 세 가지, 렌더가 전파되는 규칙, 전파가 멈추는 두 조건. 최적화 API를 꺼내기 전에 알아야 할 React의 비용 구조를 정리한다.

2026-09-15
[frontend]
efficient-react-1-cost-model.md

blog92@web:~$ exit