마이크로서비스 아키텍처(Microservices Architecture), MSA는 이제 적어도 소프트웨어 분야에서는 인기 많고 원숙한 아키텍처 방법론으로 자리 잡았다. 이는 기업 및 조직의 개발자뿐만 아니라 기획자, 마케팅, 사업, 구매 및 검증 부서의 사람들도 알아볼 만큼 대중적이고 평범한 기술이 된 것 같다. 그래서 혹자(대부분 제대로 해 본 적이 없거나 새로운 트렌드만 좇는 사람들)는 MSA는 한물 갔다고까지 말하곤 한다. 하지만 역자는 여러 조직의 마이크로서비스 및 클라우드 네이티브 프로젝트의 성공과 실패 사례를 보고 연구하면서 제대로 마이크로서비스 아키텍처를 도입하거나 전환하는 것이 얼마나 어려운지 분명히 깨닫게 되었다. 아는 만큼 어렵다는 말이 역설처럼 들리지만, 이 책에 소개된 정도의 마이크로서비스의 여러 원칙과 실천 사항을 이해하고 따르는 것은 마이크로서비스를 작성하는 것 이상(조직과 팀의 책임과 권한, DDD에 기반을 둔 적절한 분리, 독립적이고 자동화된 배포, IaC, 불변성 및 완전성의 산출물, 구성 서버, 이벤트 기반 설계, 데이터 동기화, 중앙화된 로깅 및 모니터링 등)을 필요로 하기 때문에 쉬운 일은 아니다. 우리는 복잡함이라는 비용으로 생산성, 확장성, 안정성이라는 마이크로서비스의 혜택을 누리려고 한다. 이 책은 마이크로서비스에 필요한 원칙 및 개념을 쉽게 설명하고 실제 스프링 코드와 도구로 실습하면서 독자의 이해를 돕는다는 면에서 특별하다.
마이크로서비스의 개념이 소개된 2015년 이후 이 책의 첫 판은 스프링 부트와 클라우드를 활용한 마이크로서비스 아키텍처의 좋은 길잡이가 되었다. 1판에서 스프링 마이크로서비스 기반의 애플리케이션 구축에 필요한 구성 서버, 서비스 디스커버리, 부하 처리, 보안, 로깅, 빌드 및 배포 등 다양한 주제를 각종 스프링 기술과 함께 소개했다. 각 장에서 소개된 필자의 경험담과 노트도 유익하며, 독립적으로 각 장이 분리되어 있어 쉽게 실행하고 테스트해 볼 수 있다는 것은 마이크로서비스의 특징과 닮은 이 책의 장점이다. 2판에서는 이러한 장점들을 그대로 이어받아, 이 주제를 기반으로 12 팩터 앱, 도커, 컨피그 서버의 하시코프 볼트 백엔드 저장소, 클라우드 로드 밸런서를 활용한 디스커버리, Resilience4j를 활용한 회복성, 스프링 클라우드 게이트웨이, OAuth2/키클록을 통한 서비스 보안, ELK 로깅 서버, AWS EKS 및 젠킨스 CI/CD, 그라파나와 프로메테우스를 활용한 모니터링 등 더욱 풍부한 사례와 기술 내용을 소개하므로 마이크로서비스 개발자들에게 좋은 지침서가 될 것으로 기대한다.
번역서에서는 각종 프레임워크 및 도구의 최신 버전에 맞게 실행 명령을 수정했다. 또한 애플 M1 계열과 호환성을 테스트했고, 실행 편의를 돕는 스크립트와 포스트맨 테스트케이스도 추가했다.
--- 「옮긴이의 말」 중에서