blusk***
2021-09-22

『처음 시작하는 마이크로서비스』는 현업에서 오랜 시간 마이크로서비스 아키텍처를 구축해온 저자의 경험을 기반으로 작성되어 팀 설계, 도메인 설계, 인프라, 엔지니어링 및 릴리스를 포괄하는 실용적이고 통합적인 마이크로서비스 아키텍처 구축에 대한 지식을 담은 실용서다.
이 책은 마이크로서비스에 대한 이론적 지식과 실습 프로젝트를 통해서 실제 마이크로서비스를 구현해볼수 있는 내용을 담고 있다. 두가지의 서비스를 각각의 다른 언어로 설계부터 개발, 릴리즈, 배포까지 프로젝트의 한 사이클을 담아놨다. 저자가 말했듯이 실제 production 에 반영을 하기에는 부족하긴 하지만 마이크로서비스를 경험해 보기에는 충분한 예제이다.
마이크로 서비스는 굉장히 주목받고 있는 아키텍쳐이긴 하지만 실제 구현하기는 쉽지 않다. 우선 무엇보다도 뭐부터 시작해야할지가 가늠이 안간다. 모놀리스 아키텍쳐에 익숙한 개발자에게는 어느정도를 기능단위로 나눠야 되는지 구분하는게 가장 어렵게 느껴진다.
이 책에서도 서비스 경계 설정에 대해서 다음과 같은 고려사항들을 언급해 놓았다.
- 느슨한 결합
- 서비스를 변경해도 다른 서비스에 영향을 주지 않는다.
- 독립적인 배포가 가능해진다.
- 높은 응집력
- 하나의 기능만 담당하기 때문에 응집력이 높아진다.
- 비즈니스 기능과 연결
- 도메인 주도 설계
- 테이블 기준이 아닌 업무 도메인 기준으로 설계가 되어야 한다.
또 한가지 중요한 요소중 하나는 데이터 이다.
마이크로서비스의 데이터 공유
- 물리적인 데이터베이스 클러스터 공유는 가능하다
- 여러개의 마이크로서비스가 동일한 논리적인 테이블 공간과 데이터를 수정하지 않아야 한다.
여기에서 물리적인 데이터베이스 클러스터 공유가 가능하다는 말은 예를들어 같은 데이터베이스를 사용하되 스키마는 달라야 한다정도로 이해를 했다.
위에 말한 2가지는 내가 이 책을 읽으면서 마이크로서비스에 관련된 개념중 중요하다고 생각했던 것들이다. 이 외에도 다른 의미적으로 중요한 개념들이 많이 나오니 그 부분들은 정독을 하는게 좋다.
그리고 이 책에서는 프로젝트코드들이 있다. 환경설정부터 시작해서 필요한 리소스나 툴들의 사용법들이 차례차레 나온다. 사용되는 툴의 종류도 다양하다. 우선 클라우드는 AWS 를 사용하고 Docker, Terraform, Github, kubernetes, Node.js, Argo CD 등이 있다.
책에 그림이나 코드들이 다 나와있긴 하지만 처음부터 끝까지 따라하기는 쉽지는 않을것 같다. 그래서 책에 나온 툴들에 대해서 자세히 알 필요는 없지만 기본적인 기능을 조금이라도 알고 있다면 프로젝트를 진행하는데 더 수월할 것이다.
여러번 말했지만 마이크로서비스로 가는 길은 쉽지 않은 길이다. 하지만 이론부터 차근차근, 작은것부터 점진적으로 변화를 시켜나간다면 실패를 줄여 나갈수 있을 것이다. 그리고 이책을 통해서 전체적인 시스템이 어떻게 구성되는지, 그리고 무엇이 필요한지 기본적인 지식을 습득한다면 큰도움이 될것이다.
"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."