1 개요[ | ]
- Spring Microservices
- 스프링 마이크로서비스
- 저자: 라제시 RV(Rajesh RV)
- 역자: 오명운, 박소은, 허서윤
- (2016년, 영어판) ISBN 9781786466686
- (2017년, 한국어판) ISBN 9791161750286
2 책소개 (알라딘)[ | ]
acorn+PACKT 시리즈. 국내 많은 곳에서 마이크로서비스를 도입하거나 도입하려는 움직임을 볼 수 있다. 기존의 일체형 시스템 개발과 비교해보면 마이크로서비스의 장점을 개념적으로는 쉽게 이해할 수 있지만, 이를 실제로 구현해내려면 여러 가지 기술과 도구의 도움이 필요하다. 이 책은 스프링 부트와 스프링 클라우드 기술을 바탕으로 항공 운항 시스템을 마이크로서비스로 구현하는 과정을 다루고 있다.
일반적인 스프링 부트 웹 애플리케이션에서 시작하며, 스프링 클라우드 기술을 적용해 처음부터 끝까지 하나의 마이크로서비스를 구축해가는 전체 과정을 보여준다. 새로운 서비스의 구현뿐만 아니라, 이미 일체형 아키텍처로 구현된 프로젝트를 마이크로서비스로 전환하는 과정도 포함돼 실무에 직접적인 도움을 줄 수 있다.
3 목차[ | ]
- 1장. 쉽게 알아보는 마이크로서비스
- 마이크로서비스로의 진화
- 마이크로서비스로 진화의 촉매: 비즈니스적 요구
- 마이크로서비스로 진화의 촉매: 기술
- 명령형 아키텍처의 진화
- 마이크로서비스란 무엇인가?
- 마이크로서비스와 벌집
- 마이크로서비스의 원칙
- 서비스 하나에 책임도 하나
- 마이크로서비스는 자율적
- 마이크로서비스의 특징
- 서비스는 일급 시민
- 마이크로서비스 안에 있는 서비스들의 특징
- 마이크로서비스는 경량
- 다양한 언어로 구성할 수 있는 마이크로서비스
- 마이크로서비스 환경에서의 자동화
- 마이크로서비스를 지원하는 생태계
- 동적이고 분산돼 있는 마이크로서비스
- 붕괴 저항성, 빨리 실패하기, 자체 치유
- 마이크로서비스 예제
- 휴일 정보 포털의 예
- 마이크로서비스 기반의 주문 관리 시스템
- 여행사 포털 사례
- 마이크로서비스의 장점
- 폴리글랏 아키텍처 지원
- 실험과 혁신 유도
- 탄력적이고 선택적인 확장
- 대체 가능성
- 유기적 시스템 구축 유도
- 기술적 부채 경감
- 다양한 버전의 공존
- 자기 조직 시스템 구축 지원
- 이벤트 주도 아키텍처 지원
- 데브옵스 지원
- 다른 아키텍처 스타일과의 관계
- SOA와의 관계
- 서비스 지향 통합
- 기존 시스템의 현행화
- 서비스 지향 애플리케이션
- SOA를 사용한 일체형의 전환
- 12 요소 애플리케이션과의 관계
- 단일 코드 베이스
- 의존성 꾸러미
- 환경설정 외부화
- 후방 지원 서비스 접근성
- 빌드, 출시, 운영 사이의 고립성
- 무상태,비공유 프로세스
- 서비스를 포트에 바인딩해서 노출
- 확장을 위한 동시성
- 폐기 영향 최소화
- 개발과 운영의 짝 맞춤
- 로그 외부화
- 패키지 매니저 프로세스
- SOA와의 관계
- 마이크로서비스 사용 사례
- 마이크로서비스를 일찍 도입한 조직
- 공통적인 주제는 일체형의 전환
- 정리
- 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의 새로운 만트라: 데브옵스
- 낭비 줄이기
- 가능한 모든 과정을 자동화
- 가치 주도 전달
- 개발과 운영의 연결
- 삼총사의 만남: 마이크로서비스, 데브옵스, 클라우드
- 마이크로서비스를 위한 셀프 서비스 인프라스트럭처로서의 클라우드
- 마이크로서비스를 위한 관습과 프로세스로서의 데브옵스
- 마이크로서비스 개발을 위한 관습
- 비즈니스 동기 및 가치에 대한 이해
- 프로젝트에서 제품 개발로의 사고방식 전환
- 개발 철학의 선택
- 디자인 사고
- 스타트업 모델
- 애자일 관습
- 실행 가능한 최소한의 프로젝트 개념 활용
- 레거시 난관 극복
- 데이터베이스를 둘러싼 문제 해결
- 자기 조직화 팀의 구성
- 자체 클라우드 구축
- 마이크로서비스 생태계 구축
- 데브옵스 스타일의 마이크로서비스 라이프 사이클 프로세스 정의
- 가치 주도 계획
- 애자일 개발
- 지속적 통합
- 지속적 테스팅
- 지속적 출시
- 지속적 모니터링 및 피드백
- 지속적 전달 파이프라인 자동화
- 개발
- 지속적 통합
- 테스트 자동화
- 지속적 배포
- 모니터링과 피드백
- 자동화된 설정 관리
- 마이크로서비스 배포 통제 , 참조 아키텍처, 라이브러리
- 정리
4 같이 보기[ | ]
5 참고[ | ]
편집자 Jmnote
로그인하시면 댓글을 쓸 수 있습니다.