프로젝트 성공의 열쇠는 구성원들 간의 협업은 물론 과거의 성공했던 경험과 지식을 공유하고 각자의 역할에 충실히 완료하는 것입니다. 성공한 경험의 공유라는 측면에서 ‘마이크로서비스 아키텍처’ 기반의 시스템 구축이라는, 익숙하지는 않지만 흥미로운 주제를 통해서 경험의 한 조각을 공유하려 합니다. --- p.ix
서비스 개발에서 배포, 운영까지 서비스의 확장이 자유롭고 관리가 쉬운 자동화된 인프라입니다. 서비스를 개발하는 아이디어도 중요하지만, 빠르게 서비스를 개발하고 선보일 수 있는 체계를 갖추는 것이 생존을 위해 훨씬 더 중요할 것입니다. 기업의 입장에서 이러한 체계는 문화적 환경과 방법론, 기술 요소들입니다. 즉, 기업의 문화와 적절한 방법론 그리고 이를 실현할 수 있는 기술적 인프라가 서로 조화를 이룰 때 마이크로서비스의 진정한 가치가 빛나는 것입니다. --- p.23
자율적 서비스는 서비스를 기획, 개발, 테스트, 배포 및 서비스의 운영까지 담당 조직(팀)이 독립적으로 의사결정을 하고, 서비스에 대한 소유권(ownership)을 가지고 관리되는 서비스입니다. 즉, 비즈니스 변화, 서비스 자체의 문제나 이슈에 대해서 서비스 간 영향 없이 독립적으로 관리할 수 있어야 합니다. 서비스 자율성의 의미는 서비스를 관리하는 조직의 자율성이라고 생각하면 이해하기 쉽습니다. --- p.60
마이크로서비스와 마이크로서비스 아키텍처를 구성하기 위해서는 ‘환경 설정 관리’, ‘서비스 라우팅’, ‘서비스 등록 감지’, ‘서킷 브레이커’, ‘메시징 시스템’, ‘CQRS’와 같은 몇 가지의 기능과 이를 잘 구성하고 운영하기 위한 ‘서비스 구성 체계’, ‘테스트 체계’, '빌드 및 배포 체계’ 등이 필요합니다. --- p.102
‘repository’ 패키지는 회원 정보를 조회하는 기능을 구현하기 위한 패키지입니다. ‘커피 주문 마이크로서비스’와는 다른 구조로 데이터베이스 처리를 위해서 ‘mybatis’ 라이브러리를 사용하였습니다. ‘repository’의 클래스 ‘CoffeeMemberRepository’는 ‘mybatis’ 라이브러리에서 제공하는 Mapper를 사용하여 구현하였습니다. --- p.146
마이크로서비스의 빌드 단위는 깃 저장소(Git repository)에 올라가 있는 자바 프로젝트(애플리케이션) 단위입니다. 마이크로서비스당 하나의 독립적 깃 주소가 할당되어 독립적 배포가 가능합니다. 그러나 조직과 시스템의 상황에 맞게 다양한 형태를 고려해야 합니다. 데브옵스 체계가 잘 갖춰진 조직에서는 세분화된 마이크로서비스의 운영에 대한 부담이 덜 할 수 있지만, 그렇지 않은 조직은 서비스 운영을 제대로 할 수 없을 것입니다.
--- p.181