MSA 위와 같은 구성요소로 구성되어 있다. 즉 Inner Architecture 와 Outer Architecture의 영역으로 구성된다.
Inner Architecture는 개별 마이크로 서비스 구축을 위한 아키텍처로 내부 서비스를 어떻게 잘 나누는가에 대한 아키텍처
Outer Architecture는 개별 마이크로 서비스가 개발,배포,실행되는 운영환경과 분산된 마이크로서비스 관리기능을 제공하는 아키텍처
- 서비스를 어떻게 정의할 것인가?
- DB Access 구조를 어떻게 설계할 것인가?
- 서비스 내 API를 어떻게 설계할 것인가?
위의 MSA 구성도를 봤을 때 Outer Architecture는 총 6개의 요소로 나누어져 있다.
- External Gateway
- Service Mesh
- Container Management
- Backing Services
- CI/CD Automation
- Telemetry
External Gateway는 API 서버 앞단에서 모든 API 서버들의 엔드포인트를 단일화하여 묶어주고 API에 대한 인증과 인가 기능에서부터 메세지에 따라 여러 서버로 라우팅하는 고급기능까지 담당한다.
또한 내부 구조를 외부에 드러내지 않게 하는 역할을 수행하며 다양한 인증 서버와 연계를 구성한다.
Service Mesh는 서비스 간 통신을 추상화하여 안전하고 빠르고 신뢰할 수 있게 만드는 전용 InfraStructure Layer이다.
추상화를 통해 복잡한 내부 네트워크를 제어하고,추적하여 안정성,신뢰성,탄력성,표준화,가시성,보안성 확보한다.
Container Management(컨테이너 기반 어플리케이션 운영)은 유연성과 자율성을 가지며, 개발자가 손쉽게 접근 및 운영할 수 있는 인프라 관리 기술이기 때문에 MSA에 적합하다.
대표적인 컨테이너 관리 환경인 k8s가 Container Management에 많이 사용되고 있다.
Backing Service는 데이터의 지속성과 일관성 있는 처리를 위해 동작한다.
또한 마이크로 서비스의 복잡한 흐름에서 상호간 비동기로 처리되어야 하는 서비스 간에 Backing Service를 구현하여 서비스 결합도를 낮추고 성능을 확보한다.
이로 인해 MSA에서 데이터 변경이나, 보상 트랜잭션과 관련된 처리는 Message Queue를 활용한 비동기 처리가 효율적이다.
CI/CD Automation은 애플리케이션의 통합 및 테스트 단계에서부터 제공 및 배포에 이르는 애플리케이션의 라이프사이클 전체에 걸쳐 지속적인 자동화와 지속적인 모니터링을 제공한다.
이러한 구축 사례는 "CI/CD 파이프라인"이라 부르며 개발 및 운영팀의 애자일 방식 협력을 통해 지원된다.
Telemetry는 MSA에서 발생가능한 이슈를 대비하기 위해 반드시 필요한 요소이다.
Monitoring, Logging, Tracing을 통해 MSA 구조에서 대상의 성능이나 효율성을 확인하는 서비스, MSA 구조에서 대상의 log들을 수집해서 보여주는 서비스, MSA 구조에서 Event를 일어난 순서대로 나열해서 보여주는 서비스의 역할을 한다.