서브메뉴

본문

마이크로서비스 인 액션 (올바른 마이크로서비스 도입을 위한 완벽 실용서)
마이크로서비스 인 액션 (올바른 마이크로서비스 도입을 위한 완벽 실용서)
저자 : 모건 브루스|파울로 페레이라
출판사 : 위키북스
출판년 : 2019
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 추가 자료
요약

◎ 부록: 미니큐브에 젠킨스 설치하기
[예스24에서 제공한 정보입니다.]