반응형

이 책은 마이크로서비스에 대한 이론적 지식과 실습 프로젝트를 통해서 실제 마이크로서비스를 구현해볼수 있는 내용을 담고 있다. 두가지의 서비스를 각각의 다른 언어로 설계부터 개발, 릴리즈, 배포까지 프로젝트의 한 사이클을 담아놨다. 저자가 말했듯이 실제 production 에 반영을 하기에는 부족하긴 하지만 마이크로서비스를 경험해 보기에는 충분한 예제이다. 

마이크로 서비스는 굉장히 주목받고 있는 아키텍쳐이긴 하지만 실제 구현하기는 쉽지 않다. 우선 무엇보다도 뭐부터 시작해야할지가 가늠이 안간다. 모놀리스 아키텍쳐에 익숙한 개발자에게는 어느정도를 기능단위로 나눠야 되는지 구분하는게 가장 어렵게 느껴진다. 

이 책에서도 서비스 경계 설정에 대해서 다음과 같은 고려사항들을 언급해 놓았다. 

- 느슨한 결합
  - 서비스를 변경해도 다른 서비스에 영향을 주지 않는다.
  - 독립적인 배포가 가능해진다.
- 높은 응집력
  - 하나의 기능만 담당하기 때문에 응집력이 높아진다. 
- 비즈니스 기능과 연결
- 도메인 주도 설계
  - 테이블 기준이 아닌 업무 도메인 기준으로 설계가 되어야 한다.

또 한가지 중요한 요소중 하나는 데이터 이다. 

마이크로서비스의 데이터 공유
- 물리적인 데이터베이스 클러스터 공유는 가능하다
- 여러개의 마이크로서비스가 동일한 논리적인 테이블 공간과 데이터를 수정하지 않아야 한다.


여기에서 물리적인 데이터베이스 클러스터 공유가 가능하다는 말은 예를들어 같은 데이터베이스를 사용하되 스키마는 달라야 한다정도로 이해를 했다. 

다음은 개발자 워크스페이스에 대한 내용과 가이드 라인이다. 가이드 라인 같은 경우는 책에서 제시하는 환경에 의존적인 부분이 있긴 하지만 알아두면 좋을것 같다.

표준을 수립할 때에는 기술적인 '방법' 과 '무엇'을 제시하기 전에 사람들이 프로세스의 '이유'에 대해 공감할 수 있어야 한다.

  • 짧은 시간 내에 코드 설정이 가능해야 한다.
  • 새로운 마이크로 서비스는 빠르고, 쉽고, 예측 가능하게 만들어야 한다.
  • 품질 관리는 자동화되어야 한다.

개발자 경험을 위한 10가지 워크스페이스 가이드라인

  1. 도커를 유일한 종속성으로 만든다.
  2. 실행환경이 원격인지 로컬환경인지는 중요하지 않다. -> 환경에 관계 없이 실행 가능 해야한다.
  3. 서로 다른 기술 스택의 워크스페이스를 준비한다.
  4. 단일 마이크로 서비스를 실행하는 것과 여러개의 하위 시스템으로 구성된 마이크로 서비스를 실행하는것은 간단해야 한다.
  5. 가능하면 데이터베이스는 로컬에서 실행한다. (도커 사용)
  6. 컨테이너화 가이드라인을 구현한다.
  7. 데이터베이스 마이그레이션을 위한 간단한 규칙을 정한다.
    • 데이터베이스에 대한 변경사항은 마이그레이션 스크립트에 코드화 되어있어야 한다.
  8. 실용적인 테스트 자동화 방법을 정한다.
  9. 분기 및 병합 규칙을 정한다. -> 브랜치 관리
  10. 공통사항은 makefile 에 코드화 한다.

 그리고 이 책에서는 프로젝트코드들이 있다. 환경설정부터 시작해서 필요한 리소스나 툴들의 사용법들이 차례차레 나온다. 사용되는 툴의 종류도 다양하다. 우선 클라우드는 AWS 를 사용하고 Docker, Terraform, Github, kubernetes, Node.js, Argo CD 등이 있다. 

책에 그림이나 코드들이 다 나와있긴 하지만 처음부터 끝까지 따라하기는 쉽지는 않을것 같다. 그래서 책에 나온 툴들에 대해서 자세히 알 필요는 없지만 기본적인 기능을 조금이라도 알고 있다면 프로젝트를 진행하는데 더 수월할 것이다. 

여러번 말했지만 마이크로서비스로 가는 길은 쉽지 않은 길이다. 하지만 이론부터 차근차근, 작은것부터 점진적으로 변화를 시켜나간다면 실패를 줄여 나갈수 있을 것이다. 그리고 이책을 통해서 전체적인 시스템이 어떻게 구성되는지, 그리고 무엇이 필요한지 기본적인 지식을 습득한다면 큰도움이 될것이다.

 "한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

728x90
반응형

+ Recent posts