MSA 의 단점을 최소화하고 장점을 부각시키기위해, MSA 에 관련한 여러 기술이 탄생하거나 기존에 있던 기술들이 재발굴 되었다. 과연 어떠한 기술들이 존재할까??
어플리케이션간 데이터 공유 방식을 제어하는 방법
MSA 로 서비스가 많아지자, 서비스간의 통신경로 또한 배가 되었다. 이러한 상황에서, 각 서비스간의 통신의 부하를 적절히 분배하고 (load-balancing) 작동방식을 최적화하기위해 기안되었다.
Service Mesh 의 구성요소
client side discovery
라고 하며,server side discovery
라고 한다.이러한 Server Mesh 는 보통 서비스 앞단에 경량화를 위한 프록시를 사이드카 패턴으로 배치하여, 서비스간 통신을 제어하도록 구현한다.
📌 사이드카 패턴이란 **클라우드 디자인 패턴**의 일종으로, 기존 어플리케이션 이외의 필요한 **추가기능**을 별도의 어플리케이션으로 구현하여, 이를 **동일한 프로세서/컨테이너 내부**에 배치하는 것 이다. 이를 통해 동일한 프로세스/컨테이너에 배치된 사이트카 어플리케이션이 메모리, 네트워크 같은 자원을 공유하며 모니터링, 프록시 등의 동작을 담당한다.RESTful API 를 대체할 HTTP2.0 기반의 RPC
MSA 특성상 통신종류가 많아지고, 트래픽 또한 증가하자, 기존 REST API 의 여러 한계가 MSA 의 도입을 방해하였고, 이를 해결하기위해 명확한 규약과 높은 성능을 지닌 HTTP 2.0 기반의 gRPC 가 탄생하였다.
자세한 내용은 gRPC 참조
개발자가 손쉽게 운영/접근 할 수 있는 인프라 관리 기술
소프트웨어를 라이브러리, 프레임워크, 기타 종속성 같은 필수 요소와 함께 패키지에 포함하여 각각의 “컨테이너”로 분리하는것을 뜻한다. 이렇게 containerized 된 소프트웨어나 어플리케이션은 어떤 환경과 인프라에서든 일관성있게 실행된다.
즉, 어플리케이션을 둘러싼 일종의 컴퓨팅공간이다.
MSA 의 각 서비스를 이러한 컨테이너로 배포할 경우, 각 서비스의 관리가 쉬우며, 환경에 따른 제약을 받지 않는다는 장정이 있다.
이러한 컨테이너를 관리하는 기술로는 Docker 가 있다.