acorn+PACKT 시리즈. 국내 많은 곳에서 마이크로서비스를 도입하거나 도입하려는 움직임을 볼 수 있다. 기존의 일체형 시스템 개발과 비교해보면 마이크로서비스의 장점을 개념적으로는 쉽게 이해할 수 있지만, 이를 실제로 구현해내려면 여러 가지 기술과 도구의 도움이 필요하다. 이 책은 스프링 부트와 스프링 클라우드 기술을 바탕으로 항공 운항 시스템을 마이크로서비스로 구현하는 과정을 다루고 있다.
일반적인 스프링 부트 웹 애플리케이션에서 시작하며, 스프링 클라우드 기술을 적용해 처음부터 끝까지 하나의 마이크로서비스를 구축해가는 전체 과정을 보여준다. 새로운 서비스의 구현뿐만 아니라, 이미 일체형 아키텍처로 구현된 프로젝트를 마이크로서비스로 전환하는 과정도 포함돼 실무에 직접적인 도움을 줄 수 있다.
오명운 (옮긴이)의 말
마이크로서비스는 이제 국내에서도 많은 곳에서 실제로 도입했거나 도입하려는 움직임을 어렵지 않게 찾을 수 있게 됐다. 기존의 일체형 시스템 개발과 비교해보면 개념적으로는 마이크로서비스의 장점을 쉽게 이해할 수 있지만, 이를 실제로 구현해내려면 여러 가지 기술과 도구들의 도움이 필요하다.
이 책은 스프링 부트와 스프링 클라우드 기술을 바탕으로 검색, 예약, 체크인, 운임 등 여러 도메인으로 구성된 항공 운항 시스템을 마이크로서비스로 구현하는 과정을 다룬다.
마이크로서비스라는 큰 주제에 대해 부분별로 서로 동떨어진 예제를 보여주는 것이 아니라 일반적인 스프링 부트 웹 애플리케이션에서 시작해서 스프링 클라우드 기술을 적용해가면서 처음부터 끝까지 일관성 있게 하나의 대상 시스템을 클라우드 기반의 마이크로서비스 아키텍처로 구축해가는 전체 과정을 보여주는 것이 이 책의 특징이자 가장 큰 장점이라고 할 수 있다.
새로운 서비스의 구현 뿐만 아니라 이미 일체형 아키텍처로 구현된 프로젝트를 마이크로서비스로 전환하는 과정도 상세하게 다룬다. 전환 과정에서 마주치게 될 난관들과 해결 방법에서 얻을 수 있는 통찰만으로도 이 책을 사서 볼 만한 가치가 충분하다고 생각한다. 꼭 마이크로서비스가 아니더라도 분산 환경에서 발생할 수 있는 다양한 문제들과 그 해법에서 많은 것을 배울 수 있다.
또한 서비스 지향 아키텍처 및 12 요소 애플리케이션과의 비교를 통한 마이크로서비스 개념 정립, 데브옵스와의 관계, 마이크로서비스 개발에 적합한 문화와 방법론 등 이론적인 면에 있어서도 폭넓은 이야깃거리를 다루며, 화두를 던진다.
마이크로서비스 역량 모델의 개념적 틀을 반복적으로 제시하면서 역량 모델의 각 요소에 대한 구체적인 내용을 전개해가는 서술 방식 덕분에 마이크로서비스의 방대한 내용을 공부할 때 중심을 잡고 길을 잃지 않도록 도와준다.
복잡다단한 다양한 서비스를 구현하는 많은 개발자들이 이 책을 통해 마이크로서비스를 익히고 실무에 점진적으로 적용해가면서 개인 역량도 up, 생산성도 up, 야근 시간은 down되기를 진심으로 바란다.
이 책은 전체적인 흐름이 매우 균형적이고 매끄럽다는 장점이 있는 반면에 세부적인 문장 단위로 보면 어딘지 모르게 부드럽게 읽히지 않는 미묘한 부분들이 상당히 많아서, 번역하는 입장에서 그런 부분을 보완하는 데 정말 많은 공을 들였다.
책의 기본 내용과 흐름이 워낙 좋아서 독자들의 만족도도 높으리라고 조심스레 예상해본다. 한걸음 더 나아가 독자들로부터 이 책을 '부드럽게' 읽을 수 있었다는 평을 들을 수 있다면 번역자로서 더 바랄 것이 없을 것 같다.
라제시 RV (지은이)의 말
마이크로서비스는 복잡한 시스템을 더 작은 여러 개의 서비스로 나눠서 대규모의 비즈니스 서비스를 처리하는 아키텍처 스타일이나 패턴이다. 마이크로서비스는 자율적이고, 자기 완비적(self-contained)이며, 독립적으로 배포할 수 있다. 오늘날 많은 기업에서는 대규모의 서비스 지향 기업 애플리케이션을 마이크로서비스로 만드는 것을 표준으로 삼는다.
스프링(Spring)은 개발자 커뮤니티에서 오랫동안 사랑받아온 프로그래밍 프레임워크다. 스프링 부트(Spring Boot)는 무거운 애플리케이션 컨테이너를 제거하고 가볍고 서버리스(server-less)한 애플리케이션 배포를 가능하게 했다. 스프링 클라우드(Spring Cloud)는 많은 넷플릭스(Netflix) 컴포넌트를 조합해서 대규모의 마이크로서비스를 실행하고 운영할 수 있는 생태계를 제공한다. 스프링 클라우드는 부하 분산, 서비스 레지스트리, 모니터링, 서비스 게이트웨이 등의 기능을 포함하고 있다.
하지만 마이크로서비스에도 모니터링, 운영, 배포, 확장, 의존 대상 서비스 발견 등 어려운 부분이 많다. 특히 대규모 배포에서 더 그렇다. 이런 공통된 난관을 해결하지 않고 마이크로서비스를 도입하면 큰 실패로 이어질 수 있다. 이 책은 마이크로서비스 역량 모델에 대한 기술 진단을 통해 마이크로서비스 적용 시 마주칠 수 있는 공통적인 난관을 해결하는 데 도움을 주는 것을 가장 중요한 목적으로 두고 있다.
이 책의 목표는 독자들에게 응답성 좋은 대규모의 마이크로서비스를 구현하는 실용적인 접근 방식이나 가이드라인을 알려주는 것이다. 독자들은 이 책에서 스프링 부트, 스프링 클라우드, 도커(Docker), 메소스(Mesos), 마라톤(Marathon)을 자세히 살펴볼 수 있을 것이다. 스프링 부트를 통해 무거운 애플리케이션 서버가 필요 없는 자율적이고 서버리스한 서비스를 만드는 방법을 이해하고, 스프링 클라우드의 서로 다른 여러 방면의 기능을 알아보며, 도커를 이용한 컨테이너화와 메소스를 이용한 자원 추상화 및 마라톤을 활용한 클러스터 제어에 대해 알게 될 것이다.
독자들이 이 책의 모든 부분을 즐겁게 읽을 수 있을 것이라 확신한다. 또한 각자의 비즈니스에 마이크로서비스를 성공적으로 도입하는 것을 상상할 수 있게 해줌으로써 무한한 가치를 전달해줄 수 있다고 믿는다. 이 책에는 여행 비즈니스 도메인을 대상으로 한 사례 연구를 비롯한 다양한 예제와 마이크로서비스 구현의 실질적인 부분이 담겨 있다. 책을 다 보고 나면 확장 가능한 마이크로서비스를 개발하고 배포하는 데 있어 실무에서 철저한 테스트를 거쳐 입증된 스프링 프레임워크, 스프링 부트, 스프링 클라우드를 통해 마이크로서비스 아키텍처를 구현하는 방법을 알게 될 것이다. 이 책은 최신 스펙의 스프링을 기준으로 독자들이 인터넷을 통해 들어오는 대규모의 다양한 요청을 처리할 수 있는 현대적인 자바 애플리케이션을 즉시 만들 수 있게 해 줄 것이다.