https://github.com/isntkyu/designing-data-intensive-applications
데이터 중심 애플리케이션 설계는 대규모 데이터와 트래픽을 일관적으로 처리하기 위한 아키텍처를 설계하고 싶다면
큰 도움이 되니 반드시 읽어야 할 책이라고 생각한다.
책의 초중반은 신입 백엔드 개발자들도 알아야할 정도의 DB 지식과 아키텍처 설계 사례로 구성되어 있어 비교적 이해하기 쉽다.
중반부터 MSA나 분산 환경에서의 합의에 대한 원리들과 실제 구현된 기술과 서비스들의 사례를 설명하며 내용이 급격히 심화된다.
후반에는 흔히 이야기하는 배치(일괄 처리), 스트림처리의 원리와 현재 기술들이 등장하게 된 문제해결 과정과 배경을 설명한다.
이 책을 읽다보면,
“이렇게 어려운 내용까지 이해해야 할까?”,
“굳이 이렇게 복잡하게 구현해야 할까?”,
“카프카 같은 잘 만들어진 도구만 활용하면 되지 않을까?”
라는 생각이 들 수 있다.
하지만 이런 의문은 중요하지 않았다.
책은 깊이있는 개념과 원리, 다양한 예외상황을 알려주는데
이를 해결하기 위한 논리적 과정을 강조한다. 이 과정을 이해하는 것 자체가 회사에서 좋은 아키텍처를 설계하고 코딩하는 데 큰 힌트를 제공하게 된다.
특히, 네트워크나 인프라 레이어에서의 사례로 설명하는 문제들도
애플리케이션 레이어에서도 반드시 고민해봐야할 문제라는 점을 깨닫게 된다.
또한, 내가 사용하는 AWS 클라우드 서비스에서 제공하는 기능과 용어들이 왜 고안되었는지, 그 배경과 원리를 깊이 이해할 수 있다.
기술을 사용할 때, 단순히 좋아보여서 쓰고 있다면, 그 기술들이 어떤 원리로 작동하며 왜 필요한지, 그리고 과거의 한계로부터 어떤 방식으로 발전해왔는지를 이해하게 된다.
이를 통해 하이엔드 기술들을 더 잘 다루게 되는 것은 물론이며
내가 만드는 서비스에 적합한 아키텍처를 설계하는 데에도 큰 도움을 받을 수 있다.
저자의 경험과 지식을 전부 흡수한다면 더 없이 좋은 백엔드 개발자가 될 수 있을 것이 분명하기 때문에 이 책을 추천한다.
나 자신에게도 2회독을 추천한다.