| 마이크로서비스를 처음 접하는 분들이 전체적인 개념 정도 이해할 목적으로 보시면 좋을 것 같아요. 국내 개발자 환경이 스프링 기반이 주류인 점에서, 스프링 기반에서 마이크로서비스 아키텍처를 채택하여 어떻게 시스템을 구축할까를 중심으로 기술하고 있습니다. 필요한 구성 요소들과 고려해야할 사항들에 대한 감을 잡을 목적으로 봤는데 그런 목적에는 잘 부합하는 것 같아요. 실제 내용은 실무적으로 적용하기는 어려울 것 같아요. |
|
요즘(?) 추세인 마이크로서비스 관련된 연구소 세미나를 준비하기 위해 구매한 책입니다. 개인적으로는 마이크로서비스 개념 + 스프링 부트 + 알파 정도로 생각하고 골랐는데... 밑에 평들 보시면 아시겠지만... 두께에 속으시면 절대 안 됩니다. (빙산이나 양파라고 생각하시면 됩니다. 숨겨진 내용이 더 많아요) 내용도 알파 부분이 생각보다 엄청 방대한 내용인데 간략하게 담고 있어서 아 MSA는 이렇게 생겼구나 정도로 이해하셔야 할 듯 싶습니다. git, gradle, spring boot는 기본, 필수로 아셔야 할 듯 하고, 그 외 주요한 에코시스템이라고 할 수 있는 설정 서버, eureka, zuul, turbin, hystrix dashboard 등에 대해서는 간략한 샘플을 제공하고 있는데... 자세히 보시려면 한 꼭지마다 꽤 공부해야 할 듯 싶습니다. (spring boot + spring cloud기반이라고 봐야 할듯...) docker나 CI이 서버인 Jenkins 등도 다루고 있구요. 물론 모르셔도 구글신의 도움을 받으면 소스 실행은 가능합니다^^ 사실 MSA는 한참 전에 나온 개념이고 그때 찾아본 바로는 "서비스 게이트웨이가 중요하겠구나...그런데 트랙잭션이나 인증은 어떻게 하지?" 정도로 넘어갔습니다만... (이 책에도 트랙잭션, 인증에 대해서는 다루지 않고 있습니다.) 이 책을 읽고 보니 어느 정도 그림은 그려지더군요. 개념적으로는 서비스 잘게 쪼개면 되겠지 하고 깊게 생각하지 않고 마이크로서비스로 가자!!!는 생각을 버리는데(윗분들 생각을 버리게 하는데) 많은 도움이 될듯 싶습니다. 참... 책에서 사용된 스프링 부트 버전은 1.5(+Java 8)입니다. 최신 2.x가 아닌건 조금 아쉽네요. (책 나오는 시점에 2.0이 나와서 이해가 가긴 합니다만...) |
|
프로젝트 성공의 열쇠는 구성원들 간의 협업은 물론 과거의 성공했던 경험과 지식을 공유하고 각자의 역할에 충실히 완료하는 것입니다. 성공한 경험의 공유라는 측면에서 ‘마이크로서비스 아키텍처’ 기반의 시스템 구축이라는, 익숙하지는 않지만 흥미로운 주제를 통해서 경험의 한 조각을 공유하려 합니다. --- p.ix 서비스 개발에서 배포, 운영까지 서비스의 확장이 자유롭고 관리가 쉬운 자동화된 인프라입니다. 서비스를 개발하는 아이디어도 중요하지만, 빠르게 서비스를 개발하고 선보일 수 있는 체계를 갖추는 것이 생존을 위해 훨씬 더 중요할 것입니다. 기업의 입장에서 이러한 체계는 문화적 환경과 방법론, 기술 요소들입니다. 즉, 기업의 문화와 적절한 방법론 그리고 이를 실현할 수 있는 기술적 인프라가 서로 조화를 이룰 때 마이크로서비스의 진정한 가치가 빛나는 것입니다. --- p.23 자율적 서비스는 서비스를 기획, 개발, 테스트, 배포 및 서비스의 운영까지 담당 조직(팀)이 독립적으로 의사결정을 하고, 서비스에 대한 소유권(ownership)을 가지고 관리되는 서비스입니다. 즉, 비즈니스 변화, 서비스 자체의 문제나 이슈에 대해서 서비스 간 영향 없이 독립적으로 관리할 수 있어야 합니다. 서비스 자율성의 의미는 서비스를 관리하는 조직의 자율성이라고 생각하면 이해하기 쉽습니다. --- p.60 마이크로서비스와 마이크로서비스 아키텍처를 구성하기 위해서는 ‘환경 설정 관리’, ‘서비스 라우팅’, ‘서비스 등록 감지’, ‘서킷 브레이커’, ‘메시징 시스템’, ‘CQRS’와 같은 몇 가지의 기능과 이를 잘 구성하고 운영하기 위한 ‘서비스 구성 체계’, ‘테스트 체계’, '빌드 및 배포 체계’ 등이 필요합니다. --- p.102 ‘repository’ 패키지는 회원 정보를 조회하는 기능을 구현하기 위한 패키지입니다. ‘커피 주문 마이크로서비스’와는 다른 구조로 데이터베이스 처리를 위해서 ‘mybatis’ 라이브러리를 사용하였습니다. ‘repository’의 클래스 ‘CoffeeMemberRepository’는 ‘mybatis’ 라이브러리에서 제공하는 Mapper를 사용하여 구현하였습니다. --- p.146 마이크로서비스의 빌드 단위는 깃 저장소(Git repository)에 올라가 있는 자바 프로젝트(애플리케이션) 단위입니다. 마이크로서비스당 하나의 독립적 깃 주소가 할당되어 독립적 배포가 가능합니다. 그러나 조직과 시스템의 상황에 맞게 다양한 형태를 고려해야 합니다. 데브옵스 체계가 잘 갖춰진 조직에서는 세분화된 마이크로서비스의 운영에 대한 부담이 덜 할 수 있지만, 그렇지 않은 조직은 서비스 운영을 제대로 할 수 없을 것입니다. |