※ 한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.
애플리케이션에 대한 설계 패턴에 대해 공부해볼 수 있는 책이다.
총 8장으로 구성된 이 책은 주로 클라우드 네이티브 애플리케이션에 대한 비즈니스 로직을 개발할 때 반드시 적용해야 하는 개발 패턴을 다룬다.
이러한 다양한 패턴들이 어떤 차이가 있고 장/단점은 무엇인지를 공부해볼 수 있다.
1. 클라우드 네이티브 애플리케이션이란?
퍼블릭, 프라이빗, 하이브리드, 멀티 클라우드와 같은 환경에서 실행할 수 있는 독립적인 비즈니스 기능 중심의 마이크로서비스들을 느슨하게 결합하여 크기 조절이 가능하고 탄력적이며 관리와 용이한 자동화 소프트웨어 애플리케이션을 만드는 것이라고 정의할 수 있는데, 이는 사람과, 기관에 따라 서로 다른 의미를 가진다.
본격적인 설계 패턴들에 대해 공부하기 전 클라우드 네이티브에 대한 개념과 특징, 요소와 애플리케이션을 만들 때 디자인 패턴의 중요성을 다룬다.
2. 통신 패턴
클라우드 네이티브 애플리케이션을 만들 때 주로 사용할 수 있는 통신 패턴을 다룬다.
통신 패턴은 마이크로서비스들 간에나 외부 시스템 혹은 애플리케이션 등과 같이 애플리케이션을 사용하는 다른 애플리케이션과의 통신 채널을 만들 때 사용한다.
동기, 비동기 통신의 기본적인 통신 패턴에 대한 동작방식과 함께 이 통신 패턴을 이루는 여러 패턴과 매체들을 상세하게 소개하며 이들이 어떠한 방식으로 서로 상호작용하는지 공부해볼 수 있다.
또한 통신 패턴을 설계하면서 고려해야 하는 사항들도 같이 정리해볼 수 있어 설계 과정에 놓칠 수 있는 부분들도 이 책을 통해서 다시 리마인드 해볼 수 있다.
3. 연결 및 조합 패턴
마이크로서비스들을 다른 마이크로서비스나 애플리케이션과 연결하는 다양한 패턴을 공부해볼 수 있다.
특히 서비스들을 연결하여 이 서비스들 간의 기능을 조합해서 우리가 만들고자 하는 비즈니스 기능을 제공할 수 있다.
특히 이 장에서는 그림을 통해 각 패턴들 간의 동작방식을 소개하여 이해하기 쉽도록 구성되어 있다.
또한 추후 서비스를 연결하여 비즈니스 기능을 클라이언트들에게 제공해야 할 때 고려해볼 수 있도록 한다.
마이크로서비스 혹은 다른 애플리케이션 간의 연결에 네트워크를 사용할 수 없는 상황 속에서 어떻게 탄력적으로 연결하는 지에 대한 기법에 대한 이해는 실 업무에서도 많은 도움이 될 것이라고 생각된다.
4. 데이터 관리 패턴
클라우드 네이티브 애플리케이션에서의 데이터와 데이터를 관리하는 방법에 대해 알아본다.
데이터 아키텍처가 무엇이고, 어떻게 데이터를 모아서 처리하고 저장하는 흐름을 공부해볼 수 있다.
또한 데이터의 구조와 크기 등을 여러 관점에서 살펴보는데, 이후에는 데이터 관리 시에 어떤 저장소를 사용할 수 있는지를 소개한다.
이후에는 실제로 여러가지 다양한 패턴을 소개하며, 데이터를 중앙집중화하고 분산처리, 데이터 조합, 캐싱, 관리, 성 최적화, 신뢰성, 보안 등의 요소를 다루어 데이터를 어떤 방식으로 설계할 수 있는지 점차 이해도를 높일 수 있다.
5. 이벤트 주도 아키텍처 패턴
동기와 다른 비동기로 동작하는 이벤트 주도 아키텍처를 낮은 결합도로 개발하여 확장도 쉽고 대규모 분산 처리를 할 수 있는 기본 구조인 이벤트 주도 아키텍처에 대한 개념을 시작으로 내용을 다룬다.
또한 이 장에서 가장 많이 등장하는 이벤트라는 용어를 예시로 소개하고 이벤트를 어떤 목적에서 다루는지도 정리해볼 수 있다.
이벤트와 관련된 내용에서 아마 가장 많이 들어본 개념인 이벤트를 소비자에게 전달하는 방식인 최대 한번 전달, 최소 한번 전달, 딱 한번 전달의 개념도 정리해볼 수 있다.
또한 메시지와 브로커의 역할과 여러 패턴들의 동작방식, 사용방법, 고려사항 등이 잘 정리되어 있다.
6. 스트림 프로세싱 패턴
스트림과 스트림 프로세싱이란 용어에 대한 이해를 시작으로 이 장을 다룬다.
이 장도 다른 장과 마찬가지로 어떤 패턴이 있고 각 패턴들의 동작방식을 그림으로 소개한다.
또한 상태, 무상태 클라우드 애플리케이션이 대규모 이벤트 스트림을 어떻게 처리할 수 있는지 다루고, 실제로 장애가 발생하였을 때, 메모리에 저장된 상태 정보를 어떻게 안정적으로 보호하고 신뢰성을 구현하는지도 공부해볼 수 있다.
7. API 관리 및 사용 패턴
API 관리에서 가장 많이 사용하는 패턴에 대해 공부해볼 수 있다.
API 관리 패턴에서는 가장 많이 알려진 API 게이트웨이 패턴을 시작으로 API 마이크로게이트웨이 패턴, 서비스 메시 사이드카 게이트웨이 패턴에 대한 동작방식, 구성요소, 사용방법, 고려사항 등을 다룬다.
또한 각 패턴별로 사용하면 좋은 경우와 그렇지 않은 경우를 표로 정리되어 있어서 실제 운영 환경에서 어떤 패턴을 적용해야 되는지도 이해해볼 수 있다.
API 사용 패턴에서는 프론트엔드를 위해 사용하는 몇가지 패턴을 소개한다.
이 패턴들에는 마이크로서비스와 직접 통신을 하는 패턴과 API 게이트웨이를 통해서 프론트엔드를 사용하는 패턴, 특정 프론트엔드 애플리케이션을 위해 사용할 수 있는 패턴을 다룬다.
이 내용에서도 패턴들의 동작방식, 구성요소, 사용방법, 고려사항 등을 다루고, 각 패턴별로 사용하면 좋은 경우와 그렇지 않은 경우도 표로 정리되어 있다.
8. 클라우드 네이티브 패턴 적용하기
마지막 장에서는 지금까지 다룬 패턴들을 실제 운영 환경에서 어떻게 활용할 수 있는지를 예시를 들어 설명한다.
각 장에서 공부한 패턴들을 조합하여 온라인 쇼핑몰을 만드는 과정을 하나하나 소개한다.
운영 환경에서 발생할 수 있는 여러 상황을 고려하여 하나의 시스템을 만들어 가는 과정에서 앞서 다룬 패턴들을 하나씩 적용하는 과정을 따라갈 수 있다.
이 책이 좋았던 부분은 각 패턴별이 어떤 방식으로 동작하고, 사용법과 이를 도입했을 때 고려해야 하는 사항들을 필수 내용으로 포함다는 점인데, 패턴별로 특정상황에서 적합한 패턴을 선택하는데 참고해볼 수 있을 것 같다.