goldw***
2017-04-04

제목을 보면 "마이크로서비스"라는 생소한 단어가 포함되어 있는데 이 책의 정의에 따르면 마이크로서비스란 "작고 자율적으로 협업하는 서비스"를 의미합니다. 즉, 이 책은 전체 시스템을 자율적으로 협업하는 조그마한 서비스들로 나누어 구축하는 방법에 대해 설명하고 있습니다. 각 마이크로서비스들은 각각 별도의 독립된 프로세스 상에서 동작하며 서로 간의 모든 통신은 네트워크 호출을 통해 이루어집니다.
마이크로서비스 구조를 적용하게 되면 다음의 혜택을 얻을 수 있습니다.
- 기술 이기종성: 각 마이크로서비스들은 자신 만의 최적의 기술을 선택할 수 있습니다.
- 회복성: 한 서비스에서 장애가 발생하더라도 전체 서비스로 장애가 전파되지 않도록 차단할 수 있습니다.
- 확장성: 필요한 서비스만 확장이 용이합니다.
- 배포 용이성: 작은 서비스로 분리되어 있는 경우 나머지 시스템과 독립적으로 한 서비스만 변경하여 배포가 용이합니다. 배포 시 문제가 발생하더라도 해당 서비스만 복구하면 되기 때문에 해당 문제를 쉽게 격리할 수 있습니다.
- 조직 부합성: 시스템 아키텍처를 조직의 구조에 맞추어 변경하기가 쉽기 때문에 생산성이 증가됩니다.
- 조합성: 서비스가 작게 분리되어 있기 때문에 재사용성이 향상됩니다.
- 대체 가능성을 위한 최적화: 각 서비스들의 크기가 작기 때문에 나중에 서비스를 재작성하거나 제거하기가 쉽습니다.
즉, 마이크로서비스 구조를 적용함으로써 나중에 새로운 기능이 추가되거나 요구 사항이 변경되어도 쉽게 수정 및 배포가 가능한 시스템을 만들 수 있습니다.
저자는 마이크로서비스 구조 시스템을 개발하면서 단계별로 고려해야할 중요 사항들과 빠지기 쉬운 함정들을 실제 예제와 그림 등의 부가 자료를 통해 명료하게 설명합니다.
- 1장 마이크로서비스
- 2장 아키텍트의 역할
- 3장 서비스 모델링하기
- 4장 통합
- 5장 모놀리스 분리하기
- 6장 배포
이 책은 아키텍트라면 지속적으로 진화 가능한 아키텍처 설계를 위해 옆에 두고 꾸준히 참고해야할 도서라고 생각합니다. 그리고 단순 개발자에서 벗어나 아키텍트로 성장하기를 원하시는 분들께도 새로운 안목과 통찰을 얻는데 많은 도움이 될 것으로 확신합니다.