스프링 부트를 활용한 마이크로서비스 개발

기초 개념부터 구현까지, 예제를 통해 배우는 실무 중심의 마이크로서비스 개발

작은 일체형부터 여러 서비스를 결합한 이벤트 중심 아키텍처까지 스프링 부트 애플리케이션을 조금씩 발전시켜 나가면서 마이크로서비스 아키텍처를 구축합니다. 이를 통해 마이크로서비스 아키텍처, 테스트 주도 개발, 유레카, 리본, 주울, 큐컴버를 이용한 엔드투엔드 테스트까지 차근차근 배울 수 있습니다.

저자인 모이세스 메이세로는 마이크로서비스 아키텍처의 이론적인 개념을 나열하는 대신 마이크로서비스의 장점을 실용적으로 설명합니다. 저자는 실용적인 관점에서 컴퓨터 프로그래밍의 최신 기술을 다룹니다. 중요한 것에 초점을 맞춰서 최소한의 실행 가능한 제품부터 시작하지만 더 다양하게 발전할 수 있는 유연함이 있습니다.

★ 이 책에서 다루는 내용 ★

  • 스프링 부트를 이용한 마이크로서비스 구축
  • 이벤트 중심 아키텍처와 RabbitMQ 메시징 활용
  • 스프링을 이용한 RESTful 서비스 구축
  • 유레카 서비스 디스커버리와 리본 로드 밸런싱
  • 주울 API 게이트웨이를 이용한 요청 라우팅
  • 큐컴버를 이용한 이벤트 중심 아키텍처의 엔드투엔드 REST 테스트 작성
  • 지속적인 통합과 배포

★ 대상 독자 ★

이 책은 자바 프로그래밍에 대한 최소한의 경험이 있는 분을 위한 책입니다. 스프링 부트에 대한 경험이 있으면 좋지만 필수는 아닙니다.

모이세스 메이세로(Moises Macero)

모이세스 메이세로는 어렸을 때부터 소프트웨어 개발자였습니다. 그는 대기업에서 일했고, 풀스택 개발자가 필수적인 스타트업에서도 일했습니다. 경력을 쌓는 동안 크고 작은 프로젝트에서 개발자, 디자이너, 아키텍트로 일했습니다. 그리고 애자일과 폭포수 환경에서 모두 일했습니다. 그는 다른 사람을 코치할 수 있을 뿐 아니라 배울 수 있는 팀에서 일하길 좋아합니다. 또한 블로그(http://thepracticaldeveloper.com)를 운영하고 있습니다. 블로그에서 기술적 문제의 해결책과 가이드, IT 회사에서 일하는 법을 공유합니다. 여가 시간에는 여행과 하이킹을 즐깁니다. 트위터 계정은 @moises_macero입니다.

한동호

삼성 SDS에서 개발자와 사내 강사를 거쳐 현재는 클라우드 엔지니어로 일하고 있습니다. 새로운 것을 배우고 글을 쓰는 것을 좋아해 여가 시간에 IT 블로그를 운영 중입니다. 블로그(https://futurecreator.github.io)에서 자바 개발 및 개발자도 쉽게 이해할 수 있도록 클라우드 기술을 소개하고 있습니다. 책을 읽는 것도 좋아하지만 모으는 것에 더 관심이 많습니다.

  • ▣ 01장: 소개
    • 들어가며
    • 당신은 어떤 사람인가요?
      • 이 책이 다른 점은 무엇인가요?
      • 기법 뒤에 숨겨진 원리
      • 단계별 학습 과정
      • 그럼 이건 가이드인가요, 책인가요?
    • 이 책에서 다루는 내용
      • 기초부터 심화까지
      • 전문적인 방법으로 스프링 부트를 이용한 뼈대 만들기
      • 테스트 주도 개발
      • 마이크로서비스 연결하기
      • 이벤트 중심 시스템
      • 엔드투엔드 테스트
    • 정리
    •  
  • ▣ 02장: 기본적인 스프링 부트 애플리케이션
    • 요구사항
    • 애플리케이션 구성
      • 실전 같은 애플리케이션
      • 애플리케이션 구조 만들기
    • TDD 실습으로 손 풀기
    • 정리
    •  
  • ▣ 03장: 3계층 스프링 부트 애플리케이션
    • 시작하기
    • 기초 마무리하기
    • 도메인 설계
    • 비즈니스 로직 레이어
    • 프레젠테이션 레이어(REST API)
      • Multiplication 컨트롤러
      • Result 컨트롤러
    • 프런트엔드(웹 클라이언트)
    • 애플리케이션 가지고 놀기 1
    • 새로운 요구사항(데이터 저장)
    • 리팩터링
    • 데이터 레이어
      • 데이터 모델
      • 리포지토리
    • 사용자 스토리 2 완성하기: 레이어 연결
    • 애플리케이션 가지고 놀기 2
    • 정리
    •  
  • ▣ 04장: 마이크로서비스 시작하기
    • 작은 일체형 접근법
      • 일체형 분석하기
      • 더 나아가기
    • 게임화 기초
      • 점수, 배지, 리더보드
      • 예제에 게임화 적용하기
    • 마이크로서비스 아키텍처로 전환하기
      • 관심사를 분리하고 결합도 낮추기
      • 독립적인 수정사항
      • 확장성
    • 마이크로서비스 연결하기
    • 이벤트 중심 아키텍처
      • 관련 기법
      • 이벤트 중심 아키텍처의 장점과 단점
      • 참고 자료
      • 이벤트 중심 아키텍처 적용하기
    • RabbitMQ와 스프링 AMQP를 이용한 이벤트 중심 설계
      • 시스템에 RabbitMQ 추가
      • 스프링 AMQP
    • 곱셈 서비스에서 이벤트 보내기
      • RabbitMQ 설정
      • 이벤트 모델링
      • 이벤트 전송: 디스패처 패턴
      • 게임화 마이크로서비스 살펴보기
    • RabbitMQ로 이벤트 받기
      • 구독자 측면
      • RabbitMQ 설정
      • 이벤트 핸들러
    • 마이크로서비스 간 데이터 요청
      • 반응형 패턴과 REST의 결합
      • 도메인을 격리된 상태로 유지하기
      • REST 클라이언트 구현
      • 게임화 비즈니스 로직 업데이트
    • 마이크로서비스 가지고 놀기
    • 정리
    •  
  • ▣ 05장: 마이크로서비스 도구 다루기
    • 소개
    • UI를 추출하고 게임화 서비스와 연결하기
      • 정적 콘텐츠 옮기기
      • UI와 게임화 서비스 연결
      • 기존 서비스 수정
      • (거의) 노력 없이 새롭고 더 나은 UI 만들기
    • 현재 아키텍처
    • 서비스 디스커버리와 로드 밸런싱
      • 서비스 디스커버리
      • 로드 밸런싱
      • 폴리글랏 시스템, 유레카, 리본
    • API 게이트웨이와 라우팅
      • API 게이트웨이 패턴
      • 함께 동작하는 주울, 유레카, 리본
    • 코드 작성
      • API 게이트웨이와 주울 구현
      • 서비스 디스커버리 가지고 놀기
      • 우리의 마이크로서비스는 확장할 준비가 됐나요?
      • 리본으로 로드 밸런싱하기
    • 서킷 브레이커와 REST 클라이언트
      • 하이스트릭스를 이용한 서킷 브레이커 구현
      • 하이스트릭스와 주울
      • REST 클라이언트의 하이스트릭스
      • 페인으로 REST 소비자 만들기
    • 마이크로서비스 패턴과 PaaS
    • 정리
    •  
  • ▣ 06장: 분산 시스템 테스트하기
    • 소개
    • 들어가며
    • 큐컴버 사용해보기
    • 직접 코딩하기
      • 빈 프로젝트 만들고 도구 선택하기
      • 테스트 가능한 시스템으로 만들기
      • 첫 번째 큐컴버 테스트 작성
      • 기능과 자바 코드 연결하기
      • 테스트를 지원하는 클래스
      • 여러 기능에서 스텝 재사용하기
      • 테스트를 실행하고 보고서 확인하기
    • 정리
    •  
  • ▣ 부록A: 스프링 부트 2.0으로 업그레이드하기
    • 소개
    • 종속성 업그레이드
    • 변경 사항 수정
      • CrudRepository 인터페이스 findOne() 미지원
      • 액추에이터 엔드포인트 이동
    • 선택적 업데이트 적용
      • WebMvcConfigurerAdapter 클래스 미지원
    • 스프링 부트 2.0 사용하기