마이크로서비스는 복잡한 시스템을 더 작은 여러 개의 서비스로 나눠서 대규모의 비즈니스 서비스를 처리하는 아키텍처 스타일이나 패턴이다. 마이크로서비스는 자율적이고, 자기 완비적(self-contained)이며, 독립적으로 배포할 수 있다. 오늘날 많은 기업에서는 마이크로서비스로 대규모의 서비스 지향 기업 애플리케이션을 만드는 것을 표준으로 삼는다.
스프링(Spring)은 개발자 커뮤니티에서 오랫동안 사랑 받아온 프로그래밍 프레임워크다. 스프링 부트(Spring Boot)는 무거운 애플리케이션 컨테이너를 제거하고, 가볍고 서버리스(server-less)한 애플리케이션 배포를 가능하게 했다. 스프링 클라우드(Spring Cloud)는 많은 넷플릭스(Netflix) 컴포넌트를 조합해서 대규모의 마이크로서비스를 실행하고 운영할 수 있는 생태계를 제공한다. 스프링 클라우드는 부하 분산, 서비스 레지스트리, 모니터링, 서비스 게이트웨이 등의 기능을 포함하고 있다.
하지만 마이크로서비스에도 모니터링, 운영, 배포, 확장, 의존 대상 서비스 탐색 등 어려운 부분이 많다. 특히 대규모 배포에서 더 그렇다. 이런 공통된 난관을 해결하지 않고 마이크로서비스를 도입하면 큰 실패로 이어질 수 있다. 이 책은 마이크로서비스 역량 모델에 대한 기술 진단을 통해 마이크로서비스 적용 시 마주칠 수 있는 공통적인 난관을 해결하는 데 도움을 주는 것을 가장 중요한 목적으로 삼고 있다.
이 책의 목표는 독자들에게 응답성 좋은 대규모의 마이크로서비스를 구현하는 실용적인 접근 방식이나 가이드라인을 알려주는 것이다. 독자들은 이 책에서 마이크로서비스를 빌드하는 데 필요한 요소들을 예제와 함께 전반적으로 살펴보고, 스프링 부트, 스프링 클라우드, 도커(Docker), 메소스(Mesos), 마라톤(Marathon)을 자세히 살펴볼 수 있을 것이다. 이 책을 모두 보고 나면 스프링 부트를 통해 무거운 애플리케이션 서버가 필요 없는 자율적이고 서버리스한 서비스를 만드는 방법을 이해하고, 스프링 클라우드의 서로 다른 여러 방면의 기능을 알아보며, 도커를 이용한 컨테이너화와 메소스를 이용한 자원 추상화 및 마라톤을 활용한 클러스터 제어에 대해 알게 될 것이다.
독자들이 이 책의 모든 부분을 즐겁게 읽을 수 있을 것이라 확신한다. 또한 각자의 비즈니스에 마이크로서비스를 성공적으로 도입하는 것을 상상할 수 있게 해줌으로써 무한한 가치를 전달해줄 수 있다고 믿는다. 이 책에는 여행 비즈니스 도메인을 대상으로 한 사례 연구를 비롯한 다양한 예제와 마이크로서비스 구현의 실질적인 부분이 담겨 있다. 책을 다 보고나면 확장 가능한 마이크로서비스를 개발하고 배포하는 데 있어 실무에서 철저한 테스트를 거쳐 입증된 스프링 프레임워크, 스프링 부트, 스프링 클라우드를 통해 마이크로서비스 아키텍처를 구현하는 방법을 알게 될 것이다. 이 책은 최신 스펙의 스프링을 기준으로 독자들이 인터넷을 통해 들어오는 대규모의 다양한 요청을 처리할 수 있는 현대적인 자바 애플리케이션을 즉시 만들 수 있게 해줄 것이다.
마이크로서비스는 복잡한 시스템을 더 작은 여러 개의 서비스로 나눠서 대규모의 비즈니스 서비스를 처리하는 아키텍처 스타일이나 패턴이다. 마이크로서비스는 자율적이고, 자기 완비적(self-contained)이며, 독립적으로 배포할 수 있다. 오늘날 많은 기업에서는 대규모의 서비스 지향 기업 애플리케이션을 마이크로서비스로 만드는 것을 표준으로 삼는다.
스프링(Spring)은 개발자 커뮤니티에서 오랫동안 사랑받아온 프로그래밍 프레임워크다. 스프링 부트(Spring Boot)는 무거운 애플리케이션 컨테이너를 제거하고 가볍고 서버리스(server-less)한 애플리케이션 배포를 가능하게 했다. 스프링 클라우드(Spring Cloud)는 많은 넷플릭스(Netflix) 컴포넌트를 조합해서 대규모의 마이크로서비스를 실행하고 운영할 수 있는 생태계를 제공한다. 스프링 클라우드는 부하 분산, 서비스 레지스트리, 모니터링, 서비스 게이트웨이 등의 기능을 포함하고 있다.
하지만 마이크로서비스에도 모니터링, 운영, 배포, 확장, 의존 대상 서비스 발견 등 어려운 부분이 많다. 특히 대규모 배포에서 더 그렇다. 이런 공통된 난관을 해결하지 않고 마이크로서비스를 도입하면 큰 실패로 이어질 수 있다. 이 책은 마이크로서비스 역량 모델에 대한 기술 진단을 통해 마이크로서비스 적용 시 마주칠 수 있는 공통적인 난관을 해결하는 데 도움을 주는 것을 가장 중요한 목적으로 두고 있다.
이 책의 목표는 독자들에게 응답성 좋은 대규모의 마이크로서비스를 구현하는 실용적인 접근 방식이나 가이드라인을 알려주는 것이다. 독자들은 이 책에서 스프링 부트, 스프링 클라우드, 도커(Docker), 메소스(Mesos), 마라톤(Marathon)을 자세히 살펴볼 수 있을 것이다. 스프링 부트를 통해 무거운 애플리케이션 서버가 필요 없는 자율적이고 서버리스한 서비스를 만드는 방법을 이해하고, 스프링 클라우드의 서로 다른 여러 방면의 기능을 알아보며, 도커를 이용한 컨테이너화와 메소스를 이용한 자원 추상화 및 마라톤을 활용한 클러스터 제어에 대해 알게 될 것이다.
독자들이 이 책의 모든 부분을 즐겁게 읽을 수 있을 것이라 확신한다. 또한 각자의 비즈니스에 마이크로서비스를 성공적으로 도입하는 것을 상상할 수 있게 해줌으로써 무한한 가치를 전달해줄 수 있다고 믿는다. 이 책에는 여행 비즈니스 도메인을 대상으로 한 사례 연구를 비롯한 다양한 예제와 마이크로서비스 구현의 실질적인 부분이 담겨 있다. 책을 다 보고 나면 확장 가능한 마이크로서비스를 개발하고 배포하는 데 있어 실무에서 철저한 테스트를 거쳐 입증된 스프링 프레임워크, 스프링 부트, 스프링 클라우드를 통해 마이크로서비스 아키텍처를 구현하는 방법을 알게 될 것이다. 이 책은 최신 스펙의 스프링을 기준으로 독자들이 인터넷을 통해 들어오는 대규모의 다양한 요청을 처리할 수 있는 현대적인 자바 애플리케이션을 즉시 만들 수 있게 해 줄 것이다.
글로벌 기업이 디지털 트랜스포메이션 프로그램을 가속화하며 비즈니스의 기민함을 달성하고 있다. 과거라는 강력한 기반 위에 서서 변화에 저항하는 전략은 효과적이지 않다. 격동하는 현재의 시장에서 비즈니스의 기민함은 더 생산적으로 적응하며 대응하기 위한 성배(Holy grail)와도 같다. 비즈니스의 기민함을 지닌 조직은 가치를 즉각적으로 전달하기 위해 애자일 소프트웨어 개발을 IT 전략의 중심에 둔다.
린 애자일 원칙(Lean-Agile principles)은 전달 속도에 집중하고 흐름의 방해물을 제거해 빠른 비즈니스 변화를 지원하기 위해 애자일 개발 프랙티스를 중시한다. 그 결과 기존의 전통적인 아키텍처 원칙들과 프랙티스는 어려움에 직면했다. 이 책은 속도와 품질의 절충 없이도 애자일 소프트웨어 개발 프로젝트에 맞춰 아키텍처 개발 프랙티스를 효과적으로 조정하는 데 도움이 되는 아이디어를 제공한다. 그리고 애자일 소프트웨어 프로젝트에서 제공할 수 있는 최대한의 가치를 전달하기 위해 아키텍트들이 어떤 위치에 있어야 할지 살펴본다.
이 책은 엔터프라이즈 아키텍트(Enterprise Architect)와 솔루션 아키텍트(Solution Architect)라는아키텍트의 두 가지 핵심 역할에 초점을 맞춘다. 애자일 소프트웨어 개발에서 두 역할에 주어진 의무를 다양한 사례와 함께 살펴본다.
또한 속도와 품질을 절충하지 않고도 가치를 전달하기 위한 전략, 모범 사례와 패턴들을 소개한다. 후반에는 기민한 조직 설계에 있어 아키텍트가 담당하는 중요한 역할을 다룬다. 마지막으로 아키텍트로 성공하는 데 필요한 다양한 개인적 특성 및 대인 관계에서의 특성을 살펴본다.