여러 domain team의 데이터를 한곳에서 적재·처리·저장·조회해 하루 약 200억 write와 분당 약 700만 read를 제공하는 '우아한 데이터 허브'의 시스템·소프트웨어 아키텍처를 소개한다. 폭주 트래픽과 부분 실패, business 변경에 유연하게 대응하는 설계를 다룬다.
핵심 포인트- producer·consumer가 하나의 data system만 바라보게 단순화하고 전체 흐름을 통합·처리·저장·조회 네 단계로 나눠 각 단계의 독립 확장·복구를 설계, 시간대별 유입 편차는 event-driven으로 흡수
- RPC publisher가 broker 기술을 추상화하고 Java interface message schema와 message ID별 partition ordering을 보장하며, listener는 종류별 consumer concurrency로 backpressure를 조절하고 timestamp seek 재발행·runtime start/stop을 admin에 제공 — ingestion과 처리 속도를 분리 제어
- database별 sharding 차이를 application-level persistent API로 통일해 shard key hash로 logical partition을 구하고 ZooKeeper·YAML lookup으로 실제 shard를 찾아 hot partition만 이동하며, JSON·MessagePack·Protobuf와 Netty·Grizzly, blocking·reactive·coroutine을 데이터 특성에 맞게 고르는 '우아한 RPC', 그리고 독립 transaction 단위 task를 `next`로 잇는 DAG flow로 부분 재처리와 순서 변경을 유연하게 만듦
왜 읽나초대용량 write/read를 감당하는 사내 데이터 플랫폼을 설계하는 엔지니어에게 backpressure·application-level sharding·선택형 RPC·DAG workflow를 엮은 종합 레퍼런스.