리액티브 시스템
1. 응답성, 탄력성, 유연성, 메시지 기반 이라는 4가지 특성을 강조하며 이러한 요건을 만족하는 시스템
메시지 기반: 비동기 메세지 전달을 통해 위치 투명성, 느슨한 결합, 논블로킹 통신을 지향하는 것을 의미
MSA 외부 아키텍처
인프라영역과 플랫폼영역 그리고 애플리케이션 영역
마이크로서비스가 운영되는 환경을 정의.
이러한 환경을 클라우드 아키텍처가 요구하는 유연성과 확장성을 고려해서 정의해야함.
내부 아키텍처
비지니스 애플리케이션
마이크로서비스가 제공하는 API, 비지니스 로직, 이벤트 발생, 데이터 저장 등을 어떻게 구조화해햐 하는가.
개발자 입장에서 마이크로서비스 시스템을 구현하기 위해 밟아야할 단계
1. 인프라가 구축돼야하며 그 위 미들웨어(플랫폼) 그 위에서 애플리케이션이 동작해야함.
인프라 의 의미란 엔터프라이즈 환경을 운영하고 관리하는데 필요한 근간이 되는 하드웨어, 소프트웨어, 네트워킹 구성요소, 운영체제, 데이터 스토리지 등을 모두 포괄함.
클라우드 환경에서는 이러한 인프라 구성요소가 가상화되어 제공함.
베어메탈: 어떤 소프트웨어도 담지 않은 하드웨어 서버 제품군 자체를 의미.
가상화 환경을 선택했다면
가상머신과 컨테이너 기반 제품중 하나 선택
차이점은 게스트 OS 유무, 게스트 OS를 사용하는 가상머신에서는 운영체제 패킷 설치나 관련 라이브러리를 설치해야함.
따라서 마이크로서비스 같은 작은 서비스를 패키지하고 배포하기에는 컨테이너 환경이 적합하다.
도커가 이 컨테이너다.
도커의 이점.
1. 이식성
어떠한 호스트 커널이나 플랫폼 버전 상관없이 사용가능하고 동작함.
2. 신속성
크기 작고 빨라 빠르게 배포 가능.
3. 재사용성
동일한 환경을 재사용해 쉽게 설정 가능하기에 개발 테스트 스테이징 프로덕트 환경을 동일한 확경으로 구축 할 수 있음.
컨테이너의 자동배치 및 복제, 장애복구, 확장 및 축소 , 컨테이너간 통신, 로드 밸런싱등의 컨테이너 관리하기 위한 기술 또한 필요한데. 이러한 기술을 오케스트레이션이라고 한다.
오케스트레이션 도구
1. 도커스윔
2. 아파치 메서드
3. 쿠버네티스
가상머신, 스토리지, 네트워크 같은 인프라를 필요한 만큼 적시에 제공하는 서비스로서 , 사용자는 이러한 인프라를 이용해 개발 환경을 구축 한 후 애플리케이션 배포한다.
종류
AWS EC2(Elastic Compute Cloud)
GCP ompute Engine
Azure VM
컨테이너 기반 가상화를 사용해 컨테이너를 업로드 구성 실행 확장 중지 할 수 있는 서비스