2장. 스프링 클라우드와 함께 마이크로서비스 세계 탐험
2.1 스프링 클라우드란?

2.1.1 스프링 클라우드 컨피그
- 스프링 클라우드 컨피그는 애플리케이션 구성 데이터를 관리한다.
2.1.2 스프링 클라우드 서비스 디스커버리
- 서비스를 소비하는 클라이언트에게 서버가 배포된 물리적 위치(IP 및 서버 이름)을 추상화할 수 있다.
- 콘술(Consul)
- 주키퍼(Zookeeper)
- 유레카(Eureka)
2.1.3 스프링 클라우드 로드밸런서와 Resilience4j
- Resilience4j
- 회로 차단기, 재시도, 벌크헤드 등 서비스 클라이언트 회복성 패턴을 빠르게 구현할 수 있다.
2.1.4 스프링 클라우드 API 게이트웨이
- 표준 서비스 정책을 시행할 수 있다.
- 서비스 호출의 중앙 집중화
2.1.5 스프링 클라우드 스트림
- 경량 메시지 처리 기능
- 메시지 브로커와 마이크로서비스를 빠르게 통합할 수 있다.
- 비동기 이벤트를 사용하는 마이크로서비스 구축
2.1.6 스프링 클라우드 슬루스
- 고유한 추적 식별자를 애플리케이션에서 사용되는 HTTP 호출 및 메시지 채널에 통합한다.
- 추적 번호를 사용하여, 애플리케이션 내 여러 서비스를 통과하는 트랜잭션을 추적할 수 있다.
2.1.7 스프링 클라우드 시큐리티
2.3 클라우드 네이티브 마이크로서비스 구축 방법


2.6 요약
- 스프링 클라우드는 넷플릭스와 하시코프와 같은 회사의 오픈 소스 기술 집합이다.
- 이 기술은 서비스의 설정과 구성을 단순화하기 위해 스프링 애너테이션으로 포장(wrap) 한다.
- 클라우드 네이티브 애플리케이션은 컨테이너 같은 확장 가능한 컴포넌트로 구축되어 마이크로서비스로 배포되고, 지속적 전달 워크플로로 된 데브옵스 프로세스를 통해 가상 인프라스트럭처에서 관리된다.
- 데브옵스는 개발(Dev)와 운영(Ops)의 약어다.
- 소프트웨어 개발자와 IT 운영자 간 의사소통, 협업, 통합에 중점을 둔 소프트웨어 개발 방법론을 의미한다.
- 주요 목표는 소프트웨어 전달 및 인프라스트럭처 변경 과정을 저비용으로 자동화하는 것이다.
- 헤로쿠(Heroku)에서 체계화된 12팩터 애플리케이션 선언문은 클라우드 네이티브 마이크로서비스를 구축할 대 구현해야 하는 모범 사례를 제공한다.
- 12 팩터 애플리케이션 선언문의 모범 사례에는 코드베이스, 의존성, 구성 정보, 백엔드 서비스, 빌드/릴리스 실행, 프로세스, 포트 바인딩, 동시성, 폐기 가능, 개발/운영 환경일치, 로그, 관리 프로세스 주제가 포함되어 있다.
- Spring Initializr를 사용하면 수많은 의존성 목록에서 원하는 의존성을 선택하면서 스프링 부트 프로젝트를 생성할 수 있다.
- 스프링 부트는 몇 가지 간단한 애너테이션만으로도 REST 기반 JSON 서비스를 구축할 수 있기 때문에, 마이크로서비스를 구축하는 이상적 프레임워크다.