Designing Data-Intensive Applications 서평
- sangwon ki
- Jun 29
- 2 min read

나는 무선통신과 임베디드 소프트웨어 등 주로 하드웨어와 가까운, 비교적 로우레벨 분야를 다루는 소프트웨어 엔지니어다. 그동안 데이터 시스템, 분산 처리, 스트리밍 같은 주제는 나와는 거리가 먼 영역이라고 생각해왔다. 하지만 "Designing Data-Intensive Applications"를 일주일에 2시간씩, 거의 1년에 걸쳐 나란의 독서 멤버들과 함께 읽어가면서 내 생각이 많이 바뀌었다. (500페이지가 넘는 방대한 분량과 높은 난이도 때문에, 혼자 읽었다면 분명히 포기했을 것이다.)
책을 함께 읽고 토론하는 과정에서, 시스템을 설계하고 운영하는 사람이라면 로우레벨 소프트웨어든, 하이레벨 데이터 시스템이든 결국 비슷한 문제의식을 반복한다는 걸 알게 됐다. 그리고 내가 익숙하지 않았던 분야에서 이미 더 정교하게 논의되고 있는 개념과 해법들을 보며 많은 영감을 받았다.
이 책은 단순히 데이터베이스의 사용법만 다루는 것이 아니라, 대규모 시스템이 직면하는 근본적인 문제인 신뢰성, 확장성, 유지보수성을 다양한 관점에서 설명한다. 각 장은 데이터 모델링, 저장 방식, 검색, 트랜잭션, 분산 환경에서의 장애 처리 등 데이터 시스템의 근간이 되는 핵심 주제를 비교적 자세히 다루고 있다. 특히 복제와 파티셔닝, 배치 처리와 스트리밍을 실무적인 관점에서 설명해 주는 점이 좋았다.
데이터 시스템의 기본 구조와 작동 원리에서 출발해서 데이터 모델과 인코딩, 저장 구조, 검색, 그리고 데이터 복제, 파티셔닝, 트랜잭션, 장애 처리, 배치 및 스트리밍 데이터 처리 같은 주제를 체계적으로 다룬다.읽는 동안 “이런 내용이 내 업무와 도움이될까?”하는 의문이 있었지만, 실제로는 대규모 시스템의 확장성, 신뢰성, 장애 처리 등은 임베디드나 네트워크 소프트웨어에서도 반복되는 고민임을 발견하게 됐다. 역시 ‘사람 사는 곳 다 비슷하다’는 생각이 들어 부가적으로, 심적인 평안을 얻기도 했다. 각 분야의 경계 너머에도 적용할 수 있는 원리와 패턴이 많다는 점을, 나란의 멤버들과 토론하며 깊은 인사이트로 얻을 수 있었다. 다양한 시각을 가진 독서 멤버들과 함께 질문하고 설명하며 공부한 덕분에 더 넓고 깊게 이해할 수 있었다.
이 책의 가장 큰 장점은 단순한 이론 소개를 넘어서, 다양한 실제 사례와 기술들을 비교 분석하며 실무적으로 도움이 되는 지침을 제공한다는 점이다. 특정 기술의 장단점을 자세히 설명하고, 왜 그런 접근이 필요한지 그 맥락까지 짚어주기 때문에 흥미를 잃지 않고 재미있었다. 특히 분산 시스템의 신뢰성, 확장성, 장애 대응 방식 등은 임베디드 분야에서도 점점 더 중요해지는 이슈라 내게도 직접적으로 와닿았다.
"Designing Data-Intensive Applications"는 데이터 시스템 분야의 전문가뿐 아니라, 임베디드 소프트웨어 엔지니어 등 전혀 다른 분야의 엔지니어들에게도 시스템 설계에 대한 새로운 관점과 영감을 줄 수 있는 책이다. 특히 나처럼 “데이터 시스템은 내 일이 아니다”라고 생각했던 분들에게도 일독을 권하고 싶다. 특히, 일주일에 2시간씩 1년에 걸쳐서 읽어야 할 만큼 쉽지 않은 책이지만, 함께 읽고 나누는 과정에서 얻는 지식과 통찰은 그 이상의 가치가 있다. 분산 시스템의 본질, 그리고 신뢰성, 확장성, 유지보수성 등에 대한 통찰력을 얻고 싶은 분들께 이 책을 추천한다.
Comments