스프링 마이크로서비스

1 개요[ | ]

Spring Microservices
스프링 마이크로서비스

   

2 책소개 (알라딘)[ | ]

acorn+PACKT 시리즈. 국내 많은 곳에서 마이크로서비스를 도입하거나 도입하려는 움직임을 볼 수 있다. 기존의 일체형 시스템 개발과 비교해보면 마이크로서비스의 장점을 개념적으로는 쉽게 이해할 수 있지만, 이를 실제로 구현해내려면 여러 가지 기술과 도구의 도움이 필요하다. 이 책은 스프링 부트와 스프링 클라우드 기술을 바탕으로 항공 운항 시스템을 마이크로서비스로 구현하는 과정을 다루고 있다.

일반적인 스프링 부트 웹 애플리케이션에서 시작하며, 스프링 클라우드 기술을 적용해 처음부터 끝까지 하나의 마이크로서비스를 구축해가는 전체 과정을 보여준다. 새로운 서비스의 구현뿐만 아니라, 이미 일체형 아키텍처로 구현된 프로젝트를 마이크로서비스로 전환하는 과정도 포함돼 실무에 직접적인 도움을 줄 수 있다.

3 목차[ | ]

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의 새로운 만트라: 데브옵스
    • 낭비 줄이기
    • 가능한 모든 과정을 자동화
    • 가치 주도 전달
    • 개발과 운영의 연결
  • 삼총사의 만남: 마이크로서비스, 데브옵스, 클라우드
    • 마이크로서비스를 위한 셀프 서비스 인프라스트럭처로서의 클라우드
    • 마이크로서비스를 위한 관습과 프로세스로서의 데브옵스
  • 마이크로서비스 개발을 위한 관습
    • 비즈니스 동기 및 가치에 대한 이해
    • 프로젝트에서 제품 개발로의 사고방식 전환
    • 개발 철학의 선택
      • 디자인 사고
      • 스타트업 모델
      • 애자일 관습
    • 실행 가능한 최소한의 프로젝트 개념 활용
    • 레거시 난관 극복
    • 데이터베이스를 둘러싼 문제 해결
    • 자기 조직화 팀의 구성
    • 자체 클라우드 구축
    • 마이크로서비스 생태계 구축
    • 데브옵스 스타일의 마이크로서비스 라이프 사이클 프로세스 정의
      • 가치 주도 계획
      • 애자일 개발
      • 지속적 통합
      • 지속적 테스팅
      • 지속적 출시
      • 지속적 모니터링 및 피드백
    • 지속적 전달 파이프라인 자동화
      • 개발
      • 지속적 통합
      • 테스트 자동화
      • 지속적 배포
      • 모니터링과 피드백
    • 자동화된 설정 관리
  • 마이크로서비스 배포 통제 , 참조 아키텍처, 라이브러리
  • 정리

4 같이 보기[ | ]

5 참고[ | ]

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}