우리가 실제 서비스를 개발할 때 (특히 클라우드 환경) 어떤 기술 스택이 필요하고 DB는 NoSQL이 좋은 지 관계형 데이터베이스가 좋은 지, 혹은 여러 시스템 간에 데이터를 주고받을 때 어떤 프로토콜이 효율적인지 직접 경험해 보지 않으면 쉽게 해답을 찾을 수 없습니다. (책 후반부에 소개된 온라인 쇼핑몰 시스템 개발과 같은 경우)
예시) 온라인 쇼핑몰 시스템 개발
1. 주문 서비스는 RESTful API 형태로 서비스 제공
2. 고객 서비스는 GraphQL 사용
3. 주문 서비스는 REST/HTTP와 같은 동기식 프로토콜 통해 메시지 전달
4. 주문 요청은 AMQP를 통해 RabbitMQ로 비동기식으로 전달
5. 외부 시스템 간의 통신은 gRPC와 같은 고성능 동기식 메시징 기술 사용
6. 상품과 관련된 DB 구성은 아래 이미지 참조
이 책에는 위와 같은 우리들의 공통된 고민을 해소하기 위한 클라우드 환경에서의 애플리케이션 구성과 방법론을 몇 가지의 정형화된 디자인 패턴으로 묶어서 제시하고 있습니다.
즉, 책 제목이 모든 것을 말해주듯이 클라우드 네이티브 애플리케이션 개발에 필요한 기술 스택과 설계 패턴을 설명한 책입니다.
저는 AWS 같은 클라우드 인프라, 도커 같은 컨테이너 기반 시스템 그리고 분산 애플리케이션 구성을 위한 gRPC등에 관심을 가졌다가 자연스럽게 마이크로서비스와 클라우드 네이티브 애플리케이션이라는 것을 알게 되었습니다.
현업에서 관련 기술 스택이나 아키텍처를 협업자들과 공유하거나 실무 적용 시 참고하기 위해 한번은 꼼꼼하게 정리할 필요성을 느끼게 되었습니다.
애플리케이션의 구조나 개발에서 배포까지의 라이프 사이클을 도식 등으로 정리하는 것은 쉬운 일은 아닌데, 감사하게도 이 책에 제가 필요했던 클라우드 네이티브 애플리케이션 개발을 위한 기술 스택이 디자인 패턴이라는 이름으로 잘 정리가 되어 있습니다.
<강조: 독자의 이해력을 높이기 위해 책 곳곳에 삽입된 아키텍처 구성도나 서비스 흐름도만으로도 이 책은 소장할 가치가 충분합니다!>
이 책의 핵심인 디자인 패턴은 크게 7가지의 클라우드 네이티브 애플리케이션 개발 패턴으로 나누어져 있습니다.
각 패턴마다 개요, 동작 방식, 사용 방법, 관련된 패턴 소개, 해당 패턴 적용 시 고려해야할 사항들이 상세히 설명되어 있습니다.
패턴 속 여러 용어들이 조금 낯설기는 하지만 도입부의 개요 설명을 꼼곰히 읽어 보면 우리가 대부분 한번은 들어보고 직접 개발도 해본 방법론(예. RPC, 큐, API등)이라서 크게 어렵지는 않습니다.
저자의 오랜 경험에서 축적된 노하우도 책의 곳곳에 적혀 있는데, 예들 들어 동기 메시징 패턴을 사용하면 안되는 경우를 표로 잘 정리해 놓아서 실제 해당 패턴을 적용할 때 유용한 참고사항이 됩니다.
책에는 단일 기술에 대한 언급만 있는 것이 아니 라서 마이크로서비스, 컨테이너, RPC, NoSQL 등에 지식이 있으면 이해하는데 큰 도움이 됩니다.
책의 마지막에는 앞에서 설명한 클라우드 네이티브 애플리케이션 개발에 사용할 다양한 패턴을 어떻게 활용할 수 있는지 온라인 쇼핑몰 시스템을 통해 살펴볼 수 있습니다.
"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."