가상 면접 사례로 배우는 대규모 시스템 설계 기초 2 - 알렉스 쉬
대규모 시스템 설계는 단순히 트래픽을 처리하는 수준을 넘어서, 비기능 요구사항과 실시간성, 확장성, 장애 대응까지 고려해야 하는 복잡한 작업입니다. 『가상 면접 사례로 배우는 대규모 시스템 설계 기초 2』는 이러한 현실적인 문제들을 구체적인 서비스 사례를 통해 설명하며, 실무자에게 실질적인 통찰을 제공합니다. 특히 데이터 엔지니어링 관점에서 매우 유익한 책입니다.


실무에 바로 적용 가능한 설계 사례
책에서 다루는 각 장은 가상의 면접 질문을 기반으로 실전 설계 프로세스를 단계별로 풀어가는 방식으로 구성되어 있습니다. 단순히 이론적인 설명을 넘어서, 현실적인 제약 조건과 기술 선택 간의 트레이드오프를 함께 보여줍니다.
예를 들어, 근접성 기반 서비스나 주변 친구 찾기 기능을 설계하는 장에서는 다음과 같은 내용을 다룹니다:
- 비기능 요구사항(확장성, 고가용성 등)을 전제로 한 API 및 데이터 모델 설계
- 로드밸런서, 데이터베이스 클러스터링, 캐싱 전략을 조합한 아키텍처
- 해시 기반 및 트리 기반 탐색 알고리즘 비교를 통한 성능 최적화 방안
이를 통해 단순한 위치 기반 서비스가 아니라, 운영 환경에 맞는 유연한 설계가 어떻게 이루어지는지를 직관적으로 이해할 수 있습니다.
메시지 큐와 이벤트 스트리밍의 깊이 있는 비교
책에서 특히 인상 깊었던 부분은 분산 메시지 큐와 이벤트 스트리밍 플랫폼에 대한 설명입니다. Kafka, RabbitMQ 등 다양한 솔루션을 비교하면서 다음과 같은 핵심 포인트를 짚어줍니다:
- 결합도 완화, 확장성 확보, 비동기 처리 구조의 중요성
- 파티셔닝 및 컨슈머 그룹을 활용한 수평 확장 전략
- 데이터 장기 보관과 높은 처리량을 위한 구조 설계
데이터 파이프라인을 운영하는 입장에서 메시지 큐는 필수적인 도구인데, 이 책은 기술 선택과 구조 설계에 있어 실질적인 가이드를 제공해줍니다.
데이터 저장과 일괄 처리에 대한 실용적 통찰
WAL(Write-Ahead Logging)을 활용한 디스크 기반 로그 저장 방식과, 일괄 처리(batch processing)의 최적화 기법에 대한 설명도 실용적입니다.
예를 들어, 메시지 키와 오프셋을 기반으로 데이터를 조회하거나, 일괄 처리 주기 조정과 스루풋 향상을 위한 전략은 대규모 로그 데이터를 다루는 엔지니어에게 매우 실질적인 팁이 됩니다.
실제 설계 사례로 배우는 설계 원칙
책의 후반부에서는 다양한 실제 서비스 사례를 통해 앞서 설명한 개념을 어떻게 적용할 수 있는지 구체적으로 보여줍니다.
- 호텔 예약 시스템: 낙관적 락 기반 동시성 처리, 샤딩 및 캐시 전략
- 분산 이메일 서비스: 이메일 전송 프로토콜, DNS 설정, 보안 정책 적용
- 객체 저장소 설계: S3와 유사한 구조로 버킷, 객체, 메타데이터 처리 설계
- 실시간 게임 순위표: 실시간 업데이트를 위한 SQL vs NoSQL 비교 및 응답 성능 고려
단순한 설계 이론이 아니라, 실제 상황에서 무엇을 고려해야 하는지, 어떤 기술이 현실적인 대안인지를 판단할 수 있는 기준을 마련해줍니다.