1장. 쉽게 알아보는 마이크로서비스
__마이크로서비스로의 진화
____마이크로서비스로 진화의 촉매:비즈니스적 요구
____마이크로서비스로 진화의 촉매: 기술
____명령형 아키텍처의 진화
__마이크로서비스란 무엇인가?
__마이크로서비스와 벌집
__마이크로서비스의 원칙
____서비스 하나에 책임도 하나
____마이크로서비스는 자율적
__마이크로서비스의 특징
____서비스는 일급 시민
____마이크로서비스 안에 있는 서비스들의 특징
____마이크로서비스는 경량
____다양한 언어로 구성할 수 있는 마이크로서비스
____마이크로서비스 환경에서의 자동화
____마이크로서비스를 지원하는 생태계
____동적이고 분산돼 있는 마이크로서비스
____붕괴 저항성, 빨리 실패하기, 자체 치유
____마이크로서비스 예제
__휴일 정보 포털의 예
____마이크로서비스 기반의 주문 관리 시스템
____여행사 포털 사례
__마이크로서비스의 장점
____폴리글랏 아키텍처 지원
____실험과 혁신 유도
____탄력적이고 선택적인 확장
____대체 가능성
____유기적 시스템 구축 유도
____기술적 부채 경감
____다양한 버전의 공존
____자기 조직 시스템 구축 지원
____이벤트 주도 아키텍처 지원
____데브옵스 지원
__다른 아키텍처 스타일과의 관계
____SOA와의 관계
______서비스 지향 통합
______기존 시스템의 현행화
______서비스 지향 애플리케이션
______SOA를 사용한 일체형의 전환
____12 요소 애플리케이션과의 관계
______단일 코드 베이스
______의존성 꾸러미
______환경설정 외부화
______후방 지원 서비스 접근성
______빌드, 출시, 운영 사이의 고립성
______무상태,비공유 프로세스
______서비스를 포트에 바인딩해서 노출
______확장을 위한 동시성
______폐기 영향 최소화
______개발과 운영의 짝 맞춤
______로그 외부화
______패키지 매니저 프로세스
__마이크로서비스 사용 사례
____마이크로서비스를 일찍 도입한 조직
____공통적인 주제는 일체형의 전환
__정리
2장. 스프링 부트로 만드는 마이크로서비스
__개발 환경 구축
__RESTful 서비스 만들기: 기존 방식
__전통적인 웹 애플리케이션에서 마이크로서비스로의 전환
__스프링 부트로 RESTful 마이크로서비스 만들기
__스프링 부트 시작
__CLI를 활용한 스프링 부트 마이크로서비스 개발
__STS를 활용한 스프링 부트 자바 마이크로서비스 개발
____POM 파일
____Application.java
____application.properties
____ApplicationTests.java
____스프링 부트 마이크로서비스 테스팅
__Spring Initializr를 활용한 스프링 부트 마이크로서비스 개발: HATEOS 예제
__다음에 알아볼 내용
__스프링 부트 환경설정
____스프링 부트 자동 환경설정의 이해
____환경설정 기본 값 변경
____환경설정 파일의 위치 변경
____사용자 정의 속성 정보 사용
____환경설정 정보 관리에 .yaml 파일 사용
____프로파일을 활용한 다중 환경설정
____환경설정 속성 정보를 읽을 수 있는 다른 방법
__내장된 기본 웹서버의 변경
__스프링 부트 보안
____마이크로서비스에 기본적인 보안 적용
____OAuth2를 사용하는 마이크로서비스 보안
__다른 도메인에 존재하는 정보 요청 활성화
__스프링 부트 메시징 구현
__종합적인 마이크로서비스 예제
__스프링 부트 액추에이터
____JConsole을 활용한 모니터링
____SSH를 활용한 모니터링
__애플리케이션 관련 정보 설정
__사용자 정의 서버 진단 모듈
____사용자 정의 지표
__마이크로서비스 문서화
__정리
3장. 마이크로서비스 개념 적용
__패턴 및 설계상의 일반적인 의사 결정
____적절한 마이크로서비스 경계 설정
______자율적인 기능
______배포 단위의 크기
______분리하기에 가장 적합한 기능 또는 서브도메인
______폴리글랏 아키텍처
______선택적 확장
______작고 애자일한 팀
______단일 책임
______복제 가능성과 변경 가능성
______결합과 응집
______마이크로서비스를 하나의 제품으로 생각하기
____통신 방식 설계
______동기 방식 통신
______비동기 방식 통신
______동기와 비동기, 선택의 기준
____마이크로서비스 오케스트레이션
____마이크로서비스 하나에 얼마나 많은 종단점을 둘 것인가?
____가상머신 하나당 하나의 마이크로서비스 또는 다수의 마이크로서비스
____룰 엔진:공유 또는 내장
____BPM의 역할과 작업 흐름
____마이크로서비스가 데이터 스토어를 공유할 수 있는가?
____트랜잭션 경계 설정
______트랜잭션 요구 사항을 단순화하기 위한 사용 사례의 변경
______분산 트랜잭션 시나리오
____서비스 종단점 설계 고려 사항
__계약 설계
______프로토콜 선택
____공유 라이브러리 처리
____마이크로서비스에서의 사용자 인터페이스
____마이크로서비스에서 API 게이트웨이 사용
____ESB 및 iPass와 마이크로서비스의 사용
____서비스 버저닝 고려 사항
____크로스오리진 설계
____공유 참조 데이터 처리
____마이크로서비스와 대규모 데이터 작업
__마이크로서비스의 과제
____데이터 섬
____로깅과 모니터링
____의존 관계 관리
____조직 문화
____관리 체계 문제
____운영 오버헤드
____마이크로서비스 테스팅
____인프라스트럭처 프로비저닝
__마이크로서비스 역량 모델
____핵심 역량
____인프라스트럭처 역량
____지원 역량
____프로세스 및 통제 역량
__정리
4장. 마이크로서비스의 진화: 사례 연구
__마이크로서비스 역량 모델 다시 보기
__PSS 애플리케이션의 이해
____비즈니스 절차적 관점
____기능적 관점
____구조적 관점
____설계 관점
____구현 관점
____배포 관점
__일체형의 죽음
____문제점
____간극 메우기를 멈추기
____회고
______공유 데이터
______단일 데이터베이스
______도메인 경계
__마이크로서비스의 구원
__비즈니스 사례
__진화 계획
____진화론적 접근
____마이크로서비스의 경계 식별
______의존 관계 분석
____마이그레이션을 위한 마이크로서비스 우선순위 지정
____마이그레이션 중의 데이터 동기화
____참조 데이터 관리
____사용자 인터페이스와 웹 애플리케이션
______세션 관리 및 보안
____테스트 전략
____생태계 역량 구축
__필요할 때만 모듈을 마이그레이션
__목표 구조
____마이크로서비스의 내부 계층 구조
____마이크로서비스 조직화
____다른 시스템과의 통합
____공유 라이브러리 관리
____예외 처리
__구현 목표
____프로젝트 구현
____프로젝트 실행 및 테스트
__정리
5장. 스프링 클라우드를 활용한 마이크로서비스 확장
__마이크로서비스 역량 모델 다시 보기
__브라운필드 PSS 시스템 다시 보기
__스프링 클라우드란?
____스프링 클라우드 출시 버전
____스프링 클라우드 컴포넌트 구성 요소
______스프링 클라우드와 Netflix 오픈소스 소프트웨어
__브라운필드 PSS 시스템을 위한 개발 환경설정
__Spring Cloud Config
____다음에 알아볼 내용
____Config 서버 셋업
____Config 서버 URL의 이해
______클라이언트에서 Config 서버 접근
____환경설정 정보 변경 전파 및 반영
____환경설정 변경을 전파하는 Sping Cloud Bus
____Config 서버에 고가용성 적용
____Config 서버 상태 모니터링
____Config 서버 환경설정 파일
____Config 서버를 사용하는 환경설정 외부화 완성
__선언적 REST 클라이언트 Feign
__로드 밸런서 Ribbon
__Eureka를 이용한 서비스 등록 및 발견
____동적 서비스 등록 및 발견의 이해
____Eureka의 이해
____Eureka 서버 구성
____고가용성 Eureka 서버
__Zuul 프록시 API 게이트웨이
____Zuul 설정
____고가용성 Zuul
______클라이언트가 Eureka 클라이언트이기도 할 때의 고가용성 Zuul
______클라이언트가 Eureka 클라이언트가 아닐 때의 고가용성 Zuul
____다른 모든 브라운필드 마이크로서비스에 Zuul 적용
__리액티브 마이브로서비스를 위한 스트림
__브라운필드 PSS 시스템 정리
__정리
6장. 마이크로서비스 자동 확장
__마이크로서비스 역량 모델 다시 보기
__스프링 클라우드를 활용한 마이크로서비스 확장
__자동 확장 개념의 이해
____자동 확장의 장점
____여러 가지 자동 확장 모델
______애플리케이션 자동 확장
______인프라스트럭처 자동 확장
____클라우드 자동 확장
__자동 확장 방식
____자원 제약 조건 기반의 확장
____특정 기간 동안 확장
____메시지 큐 길이 기반의 확장
____비즈니스 파라미터 기반의 확장
____예측에 의한 확장
__BrownField PSS 마이크로서비스 자동 확장
____자동 확장 시스템에 필요한 기능
____스프링 부트를 활용한 사용자 정의 라이프 사이클 매니저의 구현
____배포 토폴로지의 이해
____실행 흐름의 이해
____라이프 사이클 매니저 코드 따라가기
____라이프 사이클 매니저 실행하기
__정리
7장. 마이크로서비스 로깅 및 모니터링
__마이크로서비스 역량 모델 다시 보기
__로그 관리와 관련된 난제
__중앙 집중형 로깅
__로깅 솔루션 선택
____클라우드 서비스
____내장 가능한 로깅 솔루션
____최상의 통합
______로그 적재기
______로그 스트림 처리기
______로그 저장소
______대시보드
____사용자 정의 로깅 구현
____Spring Cloud Sleuth로 분산 로그 추적
__마이크로서비스 모니터링
____모니터링 도전 과제
____모니터링 도구
____마이크로서비스 의존 관계 모니터링
____장애를 견딜 수 있는 마이크로서비스를 위한 Spring Cloud Netflix
____Turbine을 통한 Hystrix스트림 통합
__데이터 호수를 사용한 데이터 분석
__정리
8장. 도커 컨테이너와 마이크로서비스
__마이크로서비스 역량 모델 다시 보기
__지금까지 만들어온 브라운필드 PSS 마이크로서비스의 한계
__컨테이너란 무엇인가?
__가상머신과 컨테이너의 차이
__컨테이너의 장점
__마이크로서비스와 컨테이너
__도커 소개
____도커 핵심 컴포넌트
______도커 데몬
______도커 클라이언트
____도커 주요 개념
______도커 이미지
______도커 컨테이너
______도커 레지스트리
______Dockerfile
__마이크로서비스를 도커로 배포
__도커에서 Rabbit MQ 실행
__도커 레지스트리 사용
____Docker Hub 구성
____도커 허브에 마이크로서비스 퍼블리싱
__클라우드에서의 마이크로서비스
____AWS EC2에 도커 설치
__EC2에서 브라운필드 서비스 실행
__라이프 사이클 매니저 업데이트
__컨테이너화의 미래 :유니커널과 강화된 보안
__정리
9장. 메소스와 마라톤을 이용한 도커화된 마이크로서비스 관리
__마이크로서비스 역량 모델 다시 보기
__잃어버린 조각
__클러스터 관리가 중요한 이유
__클러스터 관리가 하는 일
__마이크로서비스와의 관계
__가상화와의 관계
__클러스터 관리 솔루션
____도커 스웜
____쿠버네티스
____아파치 메소스
____노매드
____플릿
__메소스와 마라톤을 이용한 클러스터 관리
____메소스 속속들이 알아보기
______메소스 아키텍처
______마라톤
__브라운필드 마이크로서비스에 메소스와 마라톤 적용
____AWS 구성
____주키퍼, 메소스, 마라톤 설치
______주키퍼 설정
______메소스 설정
______메소스, 마라톤, 주키퍼를 서비스로서 실행
______브라운필드 PSS 서비스 준비
______브라운필드 PSS 서비스 배포
______배포 다시 보기
__라이프 사이클 매니저
____메소스와 마라톤을 사용하게 재작성한 라이프 사이클 매니저
__기술 메타모델
__정리
10장. 마이크로서비스 개발 라이프 사이클
__마이크로서비스 역량 모델 다시 보기
__린 IT의 새로운 만트라: 데브옵스
____낭비 줄이기
____가능한 모든 과정을 자동화
____가치 주도 전달
____개발과 운영의 연결
__삼총사의 만남: 마이크로서비스, 데브옵스, 클라우드
____마이크로서비스를 위한 셀프 서비스 인프라스트럭처로서의 클라우드
____마이크로서비스를 위한 관습과 프로세스로서의 데브옵스
__마이크로서비스 개발을 위한 관습
____비즈니스 동기 및 가치에 대한 이해
____프로젝트에서 제품 개발로의 사고방식 전환
____개발 철학의 선택
______디자인 사고
______스타트업 모델
______애자일 관습
____실행 가능한 최소한의 프로젝트 개념 활용
____레거시 난관 극복
____데이터베이스를 둘러싼 문제 해결
____자기 조직화 팀의 구성
____자체 클라우드 구축
____마이크로서비스 생태계 구축
____데브옵스 스타일의 마이크로서비스 라이프 사이클 프로세스 정의
______가치 주도 계획
______애자일 개발
______지속적 통합
______지속적 테스팅
______지속적 출시
______지속적 모니터링 및 피드백
____지속적 전달 파이프라인 자동화
______개발
______지속적 통합
______테스트 자동화
______지속적 배포
______모니터링과 피드백
____자동화된 설정 관리
__마이크로서비스 배포 통제 , 참조 아키텍처, 라이브러리
__정리