
구매문의 및 도서상담은 031-944-3966(매장)으로 문의해주세요.
매장전집은 전화 혹은 매장방문만 구입 가능합니다.

지은이 : 한정헌
어느덧 21년차 개발자. 인터넷 서비스 업체를 시작으로 동양시스템즈에 근무했고, 2006년부터 SK(주) C&C에 15년째 근무 중이다. 다양한 SI 프로젝트를 경험했으며 개발방법론/설계 전문가로 다수의 대규모 프로젝트 설계 과정을 리딩했다. 애자일 프랙티스, 애플리케이션 설계에 관심이 많으며 최근에는 클라우드 기반의 애플리케이션 개발, 도메인 주도 설계 확산 활동을 하고 있다. 우리가 살아가는 세상이 지금보다 좀 더 나아지기를 바라며 개발자로써 그에 기여하고자 한다. 천성적인 게으름에도 불구하고 KMOOC 강좌, 사외 전문가 멘토링 활동, 대학 강의 등의 활동을 병행하고 있다.
지은이 : 유해식
대학에서 컴퓨터공학과를 전공하고, 첫 직장인 도담시스템스에서 군용 항공기 시뮬레이터를 개발했다. 2011년 SK(주) C&C로 이직해서 클라우드 기반의 애플리케이션 개발방법론을 정립하고 클라우드 기반 MSA 프로젝트의 설계/개발 기술지원 업무를 수행하고 있다. 올해는 프로젝트 인큐베이션 업무를 수행하고 있으며, 이 활동을 통해 개발이 행복한 회사를 만드는 것이 목표다. 외부 활동으로는 2018년에 K-MOOC에서 온라인 강좌를 개발하는 것을 시작으로, 사외 ICT 멘토링, 그룹 내 MSA 분야에서 마스터로 활동하고 있다.
지은이 : 최은정
SI와 SM의 경계에서 자바 기반의 백엔드 개발을 해왔다. 최근에는 MSA 애플리케이션 개발 지원 업무를 수행하고 있다. 언제나 새로운 분야에 열린 마음을 가진 IT 엔지니어가 되고자 한다
지은이 : 이주영
현재 SK(주) C&C에 개발자로 입사하여 MSA 시스템의 개발 지원 업무를 수행하고 있다. 프런트엔드와 백엔드 개발을 넘나드는 풀스택 개발자가 되기 위해 자바, Vue.js, 타입스크립트 등 다양한 언어와 프레임워크를 공부하고 실제 프로젝트에 적용해서 개발하고 있다. 언제나 초심을 잃지 않고 어제보다 나은 오늘이 되기 위해 열심히 살아가는 것이 목표다.
▣ 01장: 아마존 비즈니스 민첩성의 비밀
1.1 성공한 인터넷 기업들과 비즈니스 민첩성
___1.1.1 성공 사례: 아마존의 배포 속도
___1.1.2 클라우드 인프라의 등장
___1.1.3 클라우드 인프라에 어울리는 애플리케이션의 조건
______스케일 업과 스케일 아웃
______특정 서비스만 탄력성 있게 확장(스케일 아웃)
______클라우드 프렌들리와 클라우드 네이티브
1.2 마이크로서비스란 무엇인가?
___1.2.1 모노리스와 마이크로서비스 비교
___1.2.2 SOA와 마이크로서비스
1.3 마이크로서비스를 위한 조건은 무엇인가?
___1.3.1 조직의 변화: 업무 기능 중심 팀
___1.3.2 관리체계의 변화: 자율적인 분권 거버넌스, 폴리글랏
___1.3.3 개발 생명주기의 변화: 프로젝트가 아니라 제품 중심으로
___1.3.4 개발 환경의 변화: 인프라 자동화
___1.3.5 저장소의 변화: 통합 저장소가 아닌 분권 데이터 관리
___1.3.6 위기 대응 방식의 변화: 실패를 고려한 설계
1.4 정리
▣ 02장: MSA의 이해
2.1 리액티브 선언: 현대 애플리케이션이 갖춰야 할 바람직한 속성들
2.2 강 결합에서 느슨한 결합의 아키텍처로의 변화
2.3 마이크로서비스의 외부 아키텍처와 내부 아키텍처
2.4 MSA 구성요소 및 MSA 패턴
___2.4.1 인프라 구성요소
______퍼블릭 클라우드와 베어 메탈, 프라이빗 클라우드 환경
______VM과 컨테이너
______컨테이너 오케스트레이션
______그 밖의 다양한 클라우드 인프라 서비스
___2.4.2 마이크로서비스 운영과 관리를 위한 플랫폼 패턴
______개발 지원 환경: 데브옵스 인프라 구성
______빌드/배포 파이프라인 설계
______마이크로서비스 생태계와 운영 관리 요소의 탄생
______경험으로 획득한 지혜: 마이크로서비스 관리/운영 패턴
______스프링 클라우드: 스프링 부트 + 넷플릭스 OSS
______다양한 서비스의 등록 및 탐색을 위한 서비스 레지스트리, 서비스 디스커버리 패턴
______서비스 단일 진입을 위한 API 게이트웨이 패턴
______BFF 패턴
______외부 구성 저장소 패턴
______인증/인가 패턴
______장애 및 실패 처리를 위한 서킷 브레이커 패턴
______모니터링과 추적 패턴
______중앙화된 로그 집계 패턴
______MSA 기술 변화 흐름
______서비스 메시 패턴
___2.4.3 애플리케이션 패턴
______UI 컴포지트 패턴 또는 마이크로 프런트엔드
______마이크로서비스 통신 패턴
______저장소 분리 패턴
______분산 트랜잭션 처리 패턴
______읽기와 쓰기 분리: CQRS 패턴
______API 조합과 CQRS
______쓰기 최적화: 이벤트 소싱 패턴
2.5 정리
▣ 03장: 마이크로서비스 애플리케이션 아키텍처
3.1 비즈니스 로직은 어디에? - 관심사의 분리
___3.1.1 데이터베이스 중심 아키텍처의 문제점
3.2 헥사고날 아키텍처와 클린 아키텍처
___3.2.1 레이어드 아키텍처
___3.2.2 헥사고날 아키텍처
___3.2.3 클린 아키텍처
3.3 마이크로서비스의 내부 구조 정의
___3.3.1 바람직한 마이크로서비스의 내부 아키텍처: 클린 마이크로서비스
___3.3.2 내부 영역 - 업무 규칙
______트랜잭션 스크립트 패턴
______도메인 모델 패턴
______도메인 주도 설계의 애그리거트 패턴
___3.3.3 외부 영역 - 세부사항
______API 퍼블리싱 어댑터
______API 프락시 어댑터
______저장소 처리 어댑터
______도메인 이벤트 발행 어댑터
______도메인 이벤트 핸들러
3.4 정리
▣ 04장: 마이크로서비스와 애자일 개발 프로세스
4.1 도메인 주도 설계와 마이크로서비스
4.2 기민한 설계/개발 프로세스
___4.2.1 점진/반복적인 스크럼 생명주기
___4.2.2 아키텍처 정의와 마이크로서비스 도출
___4.2.3 스프린트 내 개발 공정
4.3 정리
▣ 05장: 마이크로서비스 설계
5.1 마이크로서비스를 도출하는 방법
___5.1.1 비즈니스 능력에 근거한 도출
___5.1.2 DDD의 바운디드 컨텍스트 기반 도출
5.2 DDD에서의 설계
5.3 DDD의 전략적 설계
___5.3.1 도메인과 서브도메인
___5.3.2 유비쿼터스 언어와 도메인 모델, 바운디드 컨텍스트
___5.3.3 컨텍스트 매핑
______주요 컨텍스트 매핑 관계
______컨텍스트 맵
5.4 이벤트 스토밍을 통한 마이크로서비스 도출
___5.4.1 이벤트 스토밍 워크숍 준비
___5.4.2 이벤트 스토밍 워크숍 진행
5.5 마이크로서비스 상세설계
___5.5.1 프런트엔드 모델링
___5.5.2 백엔드 모델링
______API 설계
5.6 도메인 모델링
___5.6.1 DDD의 전술적 설계(도메인 모델링 구성요소)
______엔티티
______값 객체
______표준 타입
______애그리거트
______도메인 서비스
______도메인 이벤트
5.7 정리
▣ 06장: 사례 연구 - 마이크로서비스 도출과 아키텍처 구성
6.1 요구사항 정의
6.2 이벤트 스토밍을 통한 마이크로서비스 도출
___6.2.1 이벤트 스트밍 워크숍
___6.2.2 바운디드 컨텍스트 식별
___6.2.3 컨텍스트 다이어그램
___6.2.4 이벤트 스토밍 결과를 헥사고날 아키텍처로 표현하기
6.3 외부 아키텍처 정의
6.4 내부 아키텍처 정의
___6.4.1 패키지 구조 및 명명 규칙
6.5 JHipster를 활용한 아키텍처 구성
___6.5.1 MSA 외부 아키텍처 구성(게이트웨이, 레지스트리 서비스)
___6.5.2 마이크로서비스 빠르게 만들어 보기
___6.5.3 백엔드 서비스의 프로젝트 구조 리팩터링
6.6 정리
▣ 07장: 사례연구- 백엔드 마이크로서비스 구현
7.1 도서 대출 마이크로서비스 개발
___7.1.1 구현 기능 소개
___7.1.2 내부 아키텍처 결정
___7.1.3 API 설계
___7.1.4 도메인 모델링
___7.1.5 유스케이스 흐름
___7.1.6 내부 영역 - 도메인 모델 개발(도서 대출, 반납)
___7.1.7 내부 영역 - 서비스 개발
___7.1.8 내부 영역 - 리포지토리 개발
___7.1.9 외부 영역 - REST 컨트롤러 개발
___7.1.10 외부 영역 - 아웃바운드 어댑터 개발(동기 호출)
______타 서비스에 대한 동기 호출: 페인 클라이언트 연결
______EnableFeignClients 처리
___7.1.11 외부 영역 - 아웃바운드 어댑터 개발(비동기 호출 EDA 구현)
______타 서비스에 대한 비동기 호출 처리: 카프카를 이용한 EDA 구현
______대출 서비스에 카프카 Producer 만들기
______도메인 이벤트 객체 - StockChanged.java
______도서 마이크로서비스에 컨슈머(Consumer) 어댑터 구현하기
___7.1.12 내부 영역 - 도메인 모델 개발: 도서 연체 및 연체된 도서 반납
______서비스 흐름 처리
___7.1.13 내부 영역 - 도메인 모델 개발: 대출 불가 해제 처리 기능 구현
___7.1.14 외부 영역 - REST 컨트롤러 개발
7.2 사용자 마이크로서비스 개발
___ 7.2.1 사용자 마이크로서비스의 기능 소개
___ 7.2.2 API 설계
___ 7.2.3 도메인 모델링
___ 7.2.4 유스케이스 흐름
___ 7.2.5 내부 영역 - 도메인 모델 개발
___ 7.2.6 내부 영역 - 서비스 개발
___ 7.2.7 내부 영역 - 리포지토리 개발
___ 7.2.8 외부 영역 - REST 컨트롤러 개발
___ 7.2.9 외부 영역 - 아웃바운드 어댑터 개발
7.3 사용자 마이크로서비스 - 포인트 관리 기능 구현
___ 7.3.1 기본 포인트 부여 기능 구현
___ 7.3.2 포인트 적립/결제 기능 구현
______User 엔티티의 포인트 적립 메서드 - User.java
______User 엔티티의 포인트 결제 메서드 - User.java
7.3.3 포인트 적립, 결제 기능에 대한 호출 구현
7.4 정리
▣ 08장: CQRS 패턴을 활용한 백엔드 마이크로서비스 개발
8.1 도서 마이크로서비스 개발
___ 8.1.1 구현 기능 소개
___ 8.1.2 내부 아키텍처 결정
___ 8.1.3 API 설계
___ 8.1.4 도메인 모델링
___ 8.1.5 입고 도서 등록과 재고 도서 등록에 대한 유스케이스 흐름
___ 8.1.6 내부 영역 - 도메인 모델 개발
___ 8.1.7 내부 영역 - 서비스 개발
___ 8.1.8 내부 영역 - 리포지토리 개발
___ 8.1.9 외부 영역 - REST 컨트롤러 개발
___ 8.1.10 외부 영역 - 아웃바운드 어댑터 개발
___ 8.1.11 외부 영역 - 인바운드 어댑터 개발
8.2 도서 카탈로그 마이크로서비스
___ 8.2.1 기능 소개
___ 8.2.2 내부 아키텍처 결정
___ 8.2.3 API 설계
___ 8.2.4 도메인 모델링
___ 8.2.5 내부 영역 - 도메인 모델 개발
___ 8.2.6 내부 영역 - 서비스 개발
___ 8.2.7 내부 영역 - 리포지토리 개발
___ 8.2.8 외부 영역 - REST 컨트롤러 개발
___ 8.2.9 외부 영역 - 인바운드 어댑터 개발
8.3 정리
▣ 09장: 사례 연구 - 시연 수행
9.1 서비스 동작 환경 실행
9.2 게이트웨이와 마이크로서비스 동작시키기
9.3 웹 화면에서 시나리오 테스트하기
9.4 정리
▣ 10장: 애플리케이션 통합과 배포
10.1 통합 및 배포 파이프라인 정의
___ 10.1.1 지속적 통합
___ 10.1.2 지속적 배포
10.2 GCP 배포 환경 구성
___ 10.2.1 GCP 환경설정
___ 10.2.2 GKE 생성
10.3 JHipster를 이용한 애플리케이션 배포
___ 10.3.1 지속적 통합
___ 10.3.2 지속적 배포
10.4 정리
도서 DB 제공 - 알라딘 인터넷서점 (www.aladin.co.kr)