마이크로서비스 인 액션
도서명:마이크로서비스 인 액션
저자/출판사:모건,브루스,파울로,페레이라/위키북스
쪽수:520쪽
출판일:2019-06-28
ISBN:9791158391584
목차
[01부] 동향
▣ 01장: 마이크로서비스 설계하고 실행하기
1.1 마이크로서비스 애플리케이션이란 무엇인가?
__1.1.1 분해를 통한 확장
__1.1.2 핵심 원칙
__1.1.3 누가 마이크로서비스를 사용할까?
__1.1.4 왜 마이크로서비스가 올바른 선택인가?
1.2 무엇이 마이크로서비스를 어렵게 만드는가?
__1.2.1 설계상의 어려움
__1.2.2 운영상의 도전 과제
1.3 마이크로서비스 개발 라이프사이클
__1.3.1 마이크로서비스 설계하기
__1.3.2 마이크로서비스 배포하기
__1.3.3 마이크로서비스 관찰하기
1.4 운영에 대해 인지하고 책임지는 엔지니어링 문화
요약
▣ 02장: 마이크로서비스 적용 사례: 심플뱅크(SimpleBank)
2.1 심플뱅크는 무슨 일을 하는가?
2.2 마이크로서비스가 올바른 선택인가?
__2.2.1 금융 소프트웨어의 위험과 관성
__2.2.2 마찰 감소와 지속 가능한 가치의 전달
2.3 새로운 기능을 개발하기
__2.3.1 도메인 모델링을 통한 마이크로서비스 식별하기
__2.3.2 서비스 간의 협업
__2.3.3 서비스의 자율적 구성
2.4 서비스를 외부에 노출하기
2.5 운영 환경에 기능 반영하기
__2.5.1 품질 관리와 자동 배포
__2.5.2 회복성
__2.5.3 투명성
2.6 마이크로서비스 개발 확장하기
__2.6.1 기술적 다변화
__2.6.2 격리
2.7 다음 주제는?
요약
[02부] 설계
▣ 03장: 마이크로서비스 애플리케이션의 아키텍처
3.1 전체 아키텍처
__3.1.1 모놀리식에서 마이크로서비스로
__3.1.2 아키텍트의 역할
__3.1.3 아키텍처 원칙
__3.1.4 4 계층 마이크로서비스 애플리케이션
3.2 마이크로서비스 플랫폼
__3.2.1 운영 플랫폼 매핑
3.3 서비스
__3.3.1 역량(capabilities)
__3.3.2 집계 및 상위 주문 서비스
__3.3.3 중요 경로와 중요하지 않은 경로
3.4 커뮤니케이션
__3.4.1 언제 동기식 메시지를 사용하는가
__3.4.2 언제 비동기식 메시지를 사용하는가
__3.4.3 비동기식 커뮤니케이션 패턴
__3.4.4 다른 서비스 찾기
3.5 애플리케이션 경계(boundary)
__3.5.1 API 게이트웨이
__3.5.2 프런트엔드를 위한 백엔드
__3.5.3 컨슈머-주도 게이트웨이
3.6 클라이언트
__3.6.1 모놀리식 프런트엔드
__3.6.2 마이크로 프런트엔드
요약
▣ 04장: 신규 기능 설계하기
4.1 심플뱅크의 새로운 기능
4.2 비즈니스 역량의 범위 지정하기
__4.2.1 역량과 도메인 모델링
__4.2.2 투자 전략 생성하기
__4.2.3 내포된 컨텍스트와 서비스
__4.2.4 도전 과제와 한계
4.3 유스케이스로 범위 정하기
__4.3.1 투자 전략 주문 제출하기
__4.3.2 액션과 저장소
__4.3.3 조율과 자율적 구성
4.4 변동 가능성에 따라 범위 정하기
4.5 기술적 역량
__4.5.1 알림 보내기
__4.5.2 기술 역량은 언제 사용하는가
4.6 모호함 다루기
__4.6.1 큰 규모의 서비스로 시작하기
__4.6.2 향후 분해를 위한 준비
__4.6.3 제거와 이관
4.7 조직의 서비스 오너십
요약
▣ 05장: 마이크로서비스에서의 트랜잭션과 질의
5.1 분산 애플리케이션에서 일관된 트랜잭션
__5.1.1 왜 분산 트랜잭션을 사용할 수 없는가?
5.2 이벤트 기반 커뮤니케이션
__5.2.1 이벤트와 자율적 구성
5.3 사가(Sagas) 패턴
__5.3.1 자율적으로 구성된 사가 패턴
__5.3.2 조율된 사가 패턴
__5.3.3 중첩된(interwoven) 사가 패턴
__5.3.4 일관성 패턴
__5.3.5 이벤트 소싱
5.4 분산된 환경에서의 질의
__5.4.1 데이터 복제본 저장하기
__5.4.2 질의와 명령 분리하기
__5.4.3 CQRS의 어려운 점
__5.4.4 분석과 리포팅
5.5 참고 자료
요약
▣ 06장: 신뢰할 수 있는 서비스 설계하기
6.1 신뢰성 정의하기
6.2 잠재 위험 찾아내기
__6.2.1 장애의 원인
__6.2.2 장애의 전파
6.3 신뢰할 수 있는 커뮤니케이션 설계하기
__6.3.1 재시도
__6.3.2 폴백
__6.3.3 타임아웃
__6.3.4 회로 차단기
__6.3.5 비동기 커뮤니케이션
6.4 서비스 신뢰성 극대화하기
__6.4.1 부하 분산과 서비스 상태
__6.4.2 비율 제한
__6.4.3 신뢰성 검증과 장애 내성
6.5 기본적으로 안전하게
__6.5.1 프레임워크
__6.5.2 서비스 메시
요약
▣ 07장: 재사용할 수 있는 마이크로서비스 프레임워크 구축하기
7.1 마이크로서비스 섀시
7.2 마이크로서비스 섀시의 목적은 무엇인가?
__7.2.1 위험 제거
__7.2.2 신속한 기반 구축(bootstrapping)
7.3 섀시 설계
__7.3.1 서비스 디스커버리
__7.3.2 관측 가능성
7.4 섀시를 사용해 구현된 기능 살펴보기
7.5 혼재성이 마이크로서비스의****속 중 하나가 아니었나?
요약
[03부] 배포
▣ 08장: 마이크로서비스 배포하기
8.1 왜 배포가 중요한가?
__8.1.1 안정성과 가용성
8.2 마이크로서비스 운영 환경
__8.2.1 마이크로서비스 운영 환경의 기능
__8.2.2 자동화와 속도
8.3 서비스를 배포하는 빠른 방법
__8.3.1 서비스 시작하기
__8.3.2 가상 머신 배포하기
__8.3.3 서비스의 여러 인스턴스 실행하기
__8.3.4 부하 분산기 추가하기
__8.3.5 무엇을 배웠나?
8.4 서비스 산출물 만들기
__8.4.1 산출물이란 무엇인가?
__8.4.2 불변성
__8.4.3 서비스 산출물의 유형
__8.4.4 설정
8.5 서비스와 호스트의 모델
__8.5.1 호스트별 단일 서비스
__8.5.2 호스트별 여러 정적 서비스
__8.5.3 호스트별 여러 서비스 스케줄링
8.6 무중단 서비스 배포
__8.6.1 GCE에 카나리와 롤링 배포
요약
▣ 09장: 컨테이너와 스케줄러를 이용해 배포하기
9.1 서비스를 컨테이너화하기
__9.1.1 이미지 작업하기
__9.1.2 이미지 빌드하기
__9.1.3 컨테이너 실행하기
__9.1.4 이미지 저장하기
9.2 클러스터에 배포하기
__9.2.1 파드 설계하고 실행하기
__9.2.2 부하 분산하기
__9.2.3 간략하게 내부 살펴보기
__9.2.4 상태 점검
__9.2.5 새로운 버전 배포하기
__9.2.6 롤링 백
__9.2.7 여러 서비스 연결하기
요약
▣ 10장: 마이크로서비스 전달 파이프라인 구축하기
10.1 배포를 지루하게 만들기
__10.1.1 배포 파이프라인
10.2 젠킨스로 파이프라인 만들기
__10.2.1 빌드 파이프라인 설정하기
__10.2.2 이미지 빌드하기
__10.2.3 테스트 실행하기
__10.2.4 산출물 게시하기
__10.2.5 스테이징 환경에 배포하기
__10.2.6 스테이징 환경
__10.2.7 운영 환경에 배포하기
10.3 재사용할 수 있는 파이프라인 단계 만들기
__10.3.1 절차적 빌드 파이프라인과 선언적 빌드 파이프라인 비교
10.4 영향을 줄이는 배포와 출시 기법
__10.4.1 다크 런치(dark launches)
__10.4.2 기능 플래그
요약
[04부] 관측 가능성과 소유권
▣ 11장: 모니터링 시스템 구축하기
11.1 견고한 모니터링 스택
__11.1.1 좋은 모니터링은 계층화돼 있다
__11.1.2 골든 시그널
__11.1.3 메트릭의 유형
__11.1.4 추천 관례
11.2 프로메테우스와 그라파나로 심플뱅크 모니터링하기
__11.2.1 메트릭 수집 인프라스트럭처 설정하기
__11.2.2 인프라스트럭처 메트릭 수집하기 - 래빗엠큐
__11.2.3 심플뱅크의 주문 제출 계측하기
__11.2.4 경보 설정하기
11.3 감지할 수 있고 조치 가능한 경보 발생하기
__11.3.1 문제가 발생했을 때 누가 알아야 하는가?
__11.3.2 원인이 아닌 증상
11.4 애플리케이션 전체 관찰하기
요약
▣ 12장: 로그와 추적 정보로 동작 이해하기
12.1 서비스 간의 작동 이해하기
12.2 일관되고 구조적이며 읽기 편한 로그 생성하기
__12.2.1 로그에 포함할 유용한 정보
__12.2.2 구조와 가독성
12.3 심플뱅크를 위한 로깅 인프라스트럭처 구축하기
__12.3.1 ELK와 플루언트디 기반 솔루션
__12.3.2 로깅 솔루션 설정하기
__12.3.3 수집할 로그 구성하기
__12.3.4 모래사장에서 바늘 찾기
__12.3.5 올바른 정보를 로그로 남기기
12.4 서비스 간 상호작용 추적하기
__12.4.1 요청 연관 짓기: 트레이스와 스팬
__12.4.2 서비스에서 추적 구성하기
12.5 트레이스 시각화하기
요약
▣ 13장: 마이크로서비스 팀 구성하기
13.1 효과적인 팀 구성하기
__13.1.1 콘웨이의 법칙
__13.1.2 효과적인 팀을 위한 원칙
13.2 팀 모델
__13.2.1 기능에 의해 그룹 짓기
__13.2.2 기능적 조직을 넘어서 협업하기
__13.2.3 팀 경계 설정하기
__13.2.4 인프라스트럭처, 플랫폼, 제품
__13.2.5 누가 비상대기할 것인가?
__13.2.6 지식 공유하기
13.3 마이크로서비스 팀을 위한 추천 관습
__13.3.1 마이크로서비스의 다양한 변경 요인
__13.3.2 아키텍처의 역할
__13.3.3 동질성과 기술적 유연성
__13.3.4 오픈 소스 모델
__13.3.5 설계 검토
__13.3.6 살아있는 문서
__13.3.7 애플리케이션에 관한 질문에 답하기
13.4 추가 자료
요약
▣ 부록: 미니큐브에 젠킨스 설치하기