DEV 2026.05.05 · 12 min
Intermediate Modern Java In Action · 5
CompletableFuture는 왜 Future를 버렸는가
블로킹 get()의 한계부터 Treiber 스택 콜백 체인, thenApply/thenCompose/thenCombine 선택 기준, Executor 설계, 예외 처리 3가지, allOf/anyOf 패턴까지 비동기 파이프라인 설계의 핵심을 추적한다.
총 7개의 글
블로킹 get()의 한계부터 Treiber 스택 콜백 체인, thenApply/thenCompose/thenCombine 선택 기준, Executor 설계, 예외 처리 3가지, allOf/anyOf 패턴까지 비동기 파이프라인 설계의 핵심을 추적한다.
동기 호출의 결합에서 벗어나 EDA·Saga·API Composition·CQRS로 MSA 데이터 흐름을 설계하는 방법을 추적한다.
동기 호출 체인의 결합도 문제부터 Quorum Queue의 Raft 합의까지, RabbitMQ 설계 전반을 관통하는 '간접성을 통한 안정성' 철학을 추적한다.
Layered Architecture부터 Microservices까지, 8개 아키텍처 패턴이 공유하는 하나의 원칙을 추적한다. 각 패턴은 왜 같은 문제를 다르게 풀었는가.
Topology와 Task의 1:1 대응부터 Outbox Pattern의 원자성 보장까지, Kafka Streams의 아키텍처 결정들을 하나의 철학으로 추적한다.
Bounded Context 식별부터 Aggregate 불변식, 이벤트 기반 통합, CQRS 읽기 모델, 레거시 점진적 전환까지 — 전자상거래 도메인으로 DDD 설계 결정을 추적한다.
어노테이션 뒤에 숨은 CommandBus, EventStore, Tracking Processor의 동작 원리부터, Axon 없이 직접 구현했을 때 드러나는 CQRS의 본질까지 추적한다.