본문 바로가기
독서와 스크랩/IT기술분야

[책] 자바 기반의 마이크로서비스 이해와 아키텍처 구축하기

by 웃는 얼굴, 친절한 말, 따뜻한 마음 2021. 9. 1.
728x90

http://kyobo.link/F1MU

 

자바 기반의 마이크로서비스 이해와 아키텍처 구축하기 - 교보문고

스프링부트, 줄, 유레카, 터빈, 히스트릭스 대시보드, 서킷 브레이커 | 마이크로서비스 아키텍처의 개념 이해와 구현을 위한 핵심 가이드!마이크로서비스, 도메인 주도 설계, 데브옵스, 자바, 스

www.kyobobook.co.kr



클라우드 네이티브 : 클라우드  환경에 친화적인 애플리케이션, 아키텍처, 인프라 등의 환경을 의미

소스코드 다운로드 :

- https://github.com/architectstory/msa-book.git 

 

GitHub - architectstory/msa-book

Contribute to architectstory/msa-book development by creating an account on GitHub.

github.com

 

1장 MSA 이해

구분 MSA SOA
사상 서비스 지향 서비스 지향
서비스 오너십 조직(팀)단위 자율성 부여 조직(팀) 간 협업
서비스 크기 SOA 대비 작음 MSA 대비 큼
서비스 공유 정보 서비스 간 독립 서비스 공유
서비스 공유 방식 API 서비스 공유를 위한 미들웨어
서비스 통신 방식 Restful API 등 SOAP : 통신 프로토콜
WSDL : 서비스 명세서
UDDI : 서비스 저장소
ESB : 서비스 통합

 

 

2장 클라우드 네이티브 이해

- 12팩터 : 클라우드 애플리케이션 플랫폼인 헤로쿠(Heroku)에 등록하여 사용한 애플리케이션의 활용과 과련해서 많은 사람들의 고민과 경험을 12개의 항목으로 잘 정리하여 작성한 문서

 

- FaaS : 서비스의 수준을 기능 단위까지 세분하여 제공하는 기능 서비스

기능들의 조합을 통해 새로운 서비스를 만들 수 있는 서비스

 

- 클라우드 네이티브 아키텍처 :

 . 확장가능한 아키텍처

 . 탄력적 아키텍처

 . 장애격리

- 클라우드 네이티브 인프라 :

 . 컨테이너 기반 패키지 : 패키지는 시스템 단위 또는 서비스 애플리케이션 단위일 수 있음

  컨테이너 단위 패키지가 실제적인 실행단위임

 . 동적관리

 

- 컨테이너의 개념 : 실제 항만에서 사용되는 컨테이너는 철제 상자로 격리된 공간으로 잘 봉인되어 물건들을 외부의 충격이나 환경에 영향을 받지 않고, 개별 컨테이너 단위로 라벨이 붙어 용도와 목적에 맞게 구성할 수 있는 것이 가증 큰 특징

 => 이러한 개념을 이용하여 리눅스 운영체제에도 격리 개념이 있으며 OS상에서 독립된 공간을 할당하고 독립된 공간끼리 서로 격리되어 독립된 자원을 할당받고 프로세스 간 간섭이 없도록 관리

 . 2000년 'FreeBSD Jail', 'Unix FreeBSD'의 하위 시스템 분할의 아이디어로 시작해서 리눅스 컨테이너, 2008년에는 이를 이용한 도커 오픈소스 발표 후 지금까지 이어지고 있음

 . MSA.입장에서 컨테이너 단위의 독립된 공간 단위로 서비스를 패키지할 수 있으므로 격리된 만큼 필요한 자원을 할당하여 경량화된 서비스 구성이 가능

 . 컨테이너는 VM과 달리 하이퍼바이저라는 소프트웨어 없이 컨테이너 엔진을 통해 가상의 격리된 공간을 생성하는 기술

 . 네이스페이스 : 컨테이너 별로 격리된 공간을 가질 수 있도록 지원하는 기술

네임스페이스 구분 설명
PID 프로세스별 고유한 ID
NET(Network) 네트워크 디바이스, IP, Port, IP Table
MNT(Mount, File System) 디바이스 정보 인식
UID User ID, Group ID
UTS(호스트명, 도메인명) 네임스페이스별로 호스트명과 도메인명을 독자적으로 가짐
IPC 프로세스 간 통신 객체를 네임스페이스별로 할당

 

- 도커 이미지 : 하나 혹은 여러개의 이미지 레이어로 구성되어 도커엔진에서 사용하는 기본 단위

- 도커 컨테이너 : 도커 이미지를 독립된 공간을 할당하여 실행한 런타임 객체

 도커 엔진위에서 기동되며 가상의 IP와 Port, 이름을 가질 수 있음

-  도커와 MSA : 마이크로서비스는 독립된 서비스이고, 이를 실행하기 위한 환경 측면에서 도커 컨테이너는 잘 어울리는 기술 조합

 독립된 서비스의 생명주기를 격리된 도커 컨테이너로 생성, 배포, 실행, 중지, 삭제 등이 쉬운 형태로 잘 지원할 수 있고, 서비스 등록, 발견,  모니터링 등의 에코 시스템과 결합하면 마이크로 서비스가 잘 실행될 수 있는 최적의 환경을 갖추게 됨

 

3장 마이크로서비스 이해와 기획

- 작은 서비스 식별을 위한 이론으로 에릭 에반스가 지은 ≪도메인 주도 설계, Domain Driven Design≫ 활용

 . 바운디드 콘텍스트(Bounded context)와 보편적인 언어(Ubiquitous language)라는 용어를 정의하여 서비스의 경계를 나누고 서비스를 식별하는 기준으로 사용

- 독립된 서비스 : 독립적으로 실행할 수 있고 다른 서비스들과 결합이 없는 서비스

- 응집된 서비스 : 하나의 서비스는 기능적으로 응집되어 서비스의 혁할이 한 가지 일을 하기 위해 뭉쳐있어야 함

 

4장 MSA 설계

- 화면설계, 서비스 설계, 데이터 설계, 메시지 전송방식 설계, 프로젝트 구조 설계(Git), 패키지 구조 설계

 

5장 마이크로서비스 구현

- 스프링클라우드 아키텍처 구성요소

구분 구성요소
소스 저장소 Git Repository : 소스관리 및 프로파일 관리
서비스 관리 Config Server : Git저장소에 등록된 프로파일 연계
Eureka server : 서비스 등록 및 발견
서비스 게이트웨이 Zuul server : 부하분산 및 서비스 라우팅
스트림 처리 Turbine server : 스트림 데이터 수집
Hystrix Dashboard : 스트림 데이터 모니터링 및 시각화

 

6장 MSA 구축

 

7장 마이크로서비스 빌드 배포

 

 

 

 

반응형