클라우드 네이티브 : 클라우드 환경에 친화적인 애플리케이션, 아키텍처, 인프라 등의 환경을 의미
소스코드 다운로드 :
- https://github.com/architectstory/msa-book.git
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장 마이크로서비스 빌드 배포
'독서 > IT기술분야' 카테고리의 다른 글
쿠버네티스로 만나는 손안의 마이크로서비스 (0) | 2021.09.08 |
---|---|
[책] 마이크로서비스 패턴 (0) | 2021.09.08 |
[책] 클리우드 x 보안 실무가이드 (0) | 2021.09.02 |
도메인 주도 설계 : 소프트웨어의 복잡성을 다루는 지혜 (0) | 2021.08.23 |
마이크로서비스 도입 이렇게 한다 (0) | 2021.08.23 |