-
-
마이크로서비스 아키텍처 구축 - 대용량 시스템의 효율적인 분산 설계 기법
샘 뉴먼 지음, 정성권 옮김 / 한빛미디어 / 2017년 3월
평점 :
구판절판
제목을 보면 "마이크로서비스"라는 생소한 단어가 포함되어 있는데 이 책의 정의에 따르면 마이크로서비스란 "작고 자율적으로 협업하는 서비스"를 의미합니다. 즉, 이 책은 전체 시스템을 자율적으로 협업하는 조그마한 서비스들로 나누어 구축하는 방법에 대해 설명하고 있습니다. 각 마이크로서비스들은 각각 별도의 독립된 프로세스 상에서 동작하며 서로 간의 모든 통신은 네트워크 호출을 통해 이루어집니다.
마이크로서비스 구조를 적용하게 되면 다음의 혜택을 얻을 수 있습니다.
- 기술 이기종성: 각 마이크로서비스들은 자신 만의 최적의 기술을 선택할 수 있습니다.
- 회복성: 한 서비스에서 장애가 발생하더라도 전체 서비스로 장애가 전파되지 않도록 차단할 수 있습니다.
- 확장성: 필요한 서비스만 확장이 용이합니다.
- 배포 용이성: 작은 서비스로 분리되어 있는 경우 나머지 시스템과 독립적으로 한 서비스만 변경하여 배포가 용이합니다. 배포 시 문제가 발생하더라도 해당 서비스만 복구하면 되기 때문에 해당 문제를 쉽게 격리할 수 있습니다.
- 조직 부합성: 시스템 아키텍처를 조직의 구조에 맞추어 변경하기가 쉽기 때문에 생산성이 증가됩니다.
- 조합성: 서비스가 작게 분리되어 있기 때문에 재사용성이 향상됩니다.
- 대체 가능성을 위한 최적화: 각 서비스들의 크기가 작기 때문에 나중에 서비스를 재작성하거나 제거하기가 쉽습니다.
즉, 마이크로서비스 구조를 적용함으로써 나중에 새로운 기능이 추가되거나 요구 사항이 변경되어도 쉽게 수정 및 배포가 가능한 시스템을 만들 수 있습니다.
저자는 마이크로서비스 구조 시스템을 개발하면서 단계별로 고려해야할 중요 사항들과 빠지기 쉬운 함정들을 실제 예제와 그림 등의 부가 자료를 통해 명료하게 설명합니다.
- 1장 마이크로서비스
- 2장 아키텍트의 역할
- 3장 서비스 모델링하기
- 4장 통합
- 5장 모놀리스 분리하기
- 6장 배포
- 7장 테스팅
- 8장 모니터링
- 9장 보안
- 10장 콘웨이의 법칙과 시스템 설계
- 11장 대규모 마이크로서비스
- 12장 종합 정리
[ 결론 ]
소프트웨어 공학과 관련된 전문 용어도 많고 시스템 아키텍처와 관련된 광범위한 내용들이 포함되어 있다보니 쉽게 이해하고 넘어가기 편한 책은 아니었습니다. 그리고 번역서이다 보니 일부 영어 번역이 어색하거나 이해하기 난해한 부분도 있었고 몇 군데 오타나 단어가 누락된 부분도 확인할 수 있었습니다. 하지만 대부분의 번역은 이해하기에 큰 어려움이 없었습니다. 또한 역자분이 별도로 추가 설명을 달아주신 덕에 전문 용어를 이해하고 책에 언급된 기술의 내용을 확인하는데 많은 시간을 절약할 수 있었습니다.
이 책은 아키텍트라면 지속적으로 진화 가능한 아키텍처 설계를 위해 옆에 두고 꾸준히 참고해야할 도서라고 생각합니다. 그리고 단순 개발자에서 벗어나 아키텍트로 성장하기를 원하시는 분들께도 새로운 안목과 통찰을 얻는데 많은 도움이 될 것으로 확신합니다.