읽기와 쓰기를 가르다 — CQRS와 Event Sourcing
CQRS의 세 단계와 단계별 비용, CQRS와 별개인 Event Sourcing이 읽기 모델을 사실상 강제하는 이유. 투영 재구축 시간, 업캐스팅, 잊힐 권리와의 충돌.
210 posts · 10 categories · 2026
CQRS의 세 단계와 단계별 비용, CQRS와 별개인 Event Sourcing이 읽기 모델을 사실상 강제하는 이유. 투영 재구축 시간, 업캐스팅, 잊힐 권리와의 충돌.
원자성 대신 보상을 사는 Saga의 Orchestration과 Choreography 비교, 상태 머신으로 쓴 조정자, Outbox 폴링·정리 비용과 멱등성 키의 보관 기간.
Bounded Context와 Context Mapping으로 경계를 긋고 커밋 로그의 동시 변경으로 후보를 검증한다. 조율 쌍 K(K−1)/2, 잘못 그은 경계의 수정 비용, Modular Monolith가 먼저인 이유.
외부 모델을 한 곳에 가두는 Anticorruption Layer와 레거시를 조각내 대체하는 Strangler Fig. 번역 비용을 측정 가능하게 모으는 법과 전면 재작성이 더 싼 규모의 계산.
Enterprise Integration Patterns 중 현역인 것들과 비동기 메시징이 파는 즉시성·순서·디버깅 가능성. 멱등 소비자와 DLQ 골격, 큐 대신 PostgreSQL 작업 테이블로 충분한 경우.
원격 경계에서 왕복 횟수·내부 구조 유출·흩어진 데이터·클라이언트별 요구를 다루는 네 패턴. 가용성 산술로 본 부분 실패 처리와 필드 하나당 늘어나는 매핑 지점.
GoF 23개 중 백엔드에서 살아남은 여덟 개의 서식지. Strategy와 Decorator를 클래스와 함수로 나란히 써 보고, 함수 버전이 사는 컴파일 타임 검사와 파는 발견 가능성을 비교한다.
값 객체·엔티티·애그리게이트·도메인 이벤트가 검증 지점을 줄이는 방식. 애그리게이트 크기와 동시성 충돌의 교환, 판별 유니온 대안, 경계 없이 전술 패턴만 사면 손해인 이유.
Layered·Hexagonal·Onion·Clean은 의존 방향이라는 한 규칙의 다른 그림이다. 의존성 역전을 클로저 하나로 구현하고, 유스케이스당 파일 7개와 필드당 8군데라는 가격표를 붙인다.
Repository만 넣고 Unit of Work를 빠뜨리면 트랜잭션 경계가 사라지는 이유. AsyncLocalStorage로 만든 최소 Unit of Work, Identity Map과 Lazy Load의 대가, 쓰기와 조회 경로의 분리.
같은 규칙을 쓰는 유스케이스 수 K로 Transaction Script와 Domain Model의 전환점을 계산하고, Node/TypeScript에서 Table Module이 성립하지 않는 이유를 따진다.
패턴을 해법이 아니라 교환 조건으로 읽는 법. 간접성·일관성·중복이라는 세 통화, Repository로 계산해 본 가격표, 그리고 16편 시리즈의 지도.
한 번 빠르게 만든 코드는 다음 PR에서 다시 느려진다. 실제 사용자 환경의 측정, 성능 예산을 CI에 거는 법, lint로 판단을 기계화하는 법, 리뷰 질문, 기존 코드베이스에 적용하는 순서, 그리고 시리즈 총정리.
JS는 받고, 해석하고, 실행하고, hydration해야 쓸모가 생긴다. 'use client' 경계가 번들을 결정하는 방식, 코드 분할 단위, import 습관, 서드파티 스크립트, 이미지·폰트, hydration 불일치.
계산을 더 줄일 수 없을 때 남는 방법은 우선순위다. INP의 세 구간, useTransition과 useDeferredValue의 선택 기준, 디바운스와의 차이, 긴 작업 쪼개기, 가상화의 대가, Activity로 화면 상태 보존하기.
사용자가 느끼는 지연의 대부분은 렌더가 아니라 데이터 도착 순서에서 생긴다. Waterfall이 생기는 세 경로, 요청을 위에서 병렬로 시작하는 법, Suspense 경계 배치 기준, 서버 컴포넌트와 클라이언트 캐시의 역할 분담, Actions와 useOptimistic.
useEffect는 '무언가 바뀌면 실행'하는 도구가 아니라 '화면이 존재하는 동안 외부 시스템과 맞추는' 도구다. Effect가 필요 없는 일곱 가지 경우, 필요한 다섯 가지 경우, 의존성 배열을 줄이는 법, useEffectEvent.
렌더 반경을 사후에 막는 memo 대신, 반경이 처음부터 넓어지지 않게 하는 네 가지 구조 기법. 컴포넌트 정체성 규칙과 React Compiler가 바꾼 것, 바꾸지 못한 것.
state는 렌더의 원인이자 버그의 출처다. 최소 상태를 가려내는 세 질문, 파생값 계산, 상태 5분류와 각자의 자리, Colocation, 불가능한 상태를 타입으로 막는 법.
렌더를 일으키는 원인 세 가지, 렌더가 전파되는 규칙, 전파가 멈추는 두 조건. 최적화 API를 꺼내기 전에 알아야 할 React의 비용 구조를 정리한다.
blog92@web:~$ exit