MSA 관련기술들

지인호·2022년 2월 11일
0

TIL

목록 보기
23/28
post-thumbnail

MSA 의 단점을 최소화하고 장점을 부각시키기위해, MSA 에 관련한 여러 기술이 탄생하거나 기존에 있던 기술들이 재발굴 되었다. 과연 어떠한 기술들이 존재할까??

Service Mesh

어플리케이션간 데이터 공유 방식을 제어하는 방법

MSA 로 서비스가 많아지자, 서비스간의 통신경로 또한 배가 되었다. 이러한 상황에서, 각 서비스간의 통신의 부하를 적절히 분배하고 (load-balancing) 작동방식을 최적화하기위해 기안되었다.

Service Mesh 의 구성요소

  • Service Discovery
    한 서비스에서 다른 서비스를 호출할때, 호출할 서비스의 위치(ip주소, port 등)를 알아낼 수 있는 기능이다. 클라우드 서비스를 통한 동적인 스케일링 같이, 런타입 환경에서 호출할 서비스의 위치가 바뀌는 경우가 많기에 도입되었다.
    • 호출한 서비스(client) 에서 서비스 registry 를 통해 서비스의 위치를 찾는것을 client side discovery 라고 하며,
    • 후술할 로드밸런서(proxy 서버) 에서 서비스 registry 를 통해 서비스의 위치를 찾는것을 server side discovery 라고 한다.
  • Load Balancer
    서비스간의 요청으로 인한 통신의 부하를 적절히 분배한다. 기존의 로드밸런서와 같은 의미이다.
  • Configuration Management
    서비스의 rebuild 또는 reboot 없이, 런타임 환경에서 configuration 을 수정 및 반영할 수 있게 하는 기술이다.

이러한 Server Mesh 는 보통 서비스 앞단에 경량화를 위한 프록시를 사이드카 패턴으로 배치하여, 서비스간 통신을 제어하도록 구현한다.

📌 사이드카 패턴이란 **클라우드 디자인 패턴**의 일종으로, 기존 어플리케이션 이외의 필요한 **추가기능**을 별도의 어플리케이션으로 구현하여, 이를 **동일한 프로세서/컨테이너 내부**에 배치하는 것 이다. 이를 통해 동일한 프로세스/컨테이너에 배치된 사이트카 어플리케이션이 메모리, 네트워크 같은 자원을 공유하며 모니터링, 프록시 등의 동작을 담당한다.

gRPC

RESTful API 를 대체할 HTTP2.0 기반의 RPC

MSA 특성상 통신종류가 많아지고, 트래픽 또한 증가하자, 기존 REST API 의 여러 한계가 MSA 의 도입을 방해하였고, 이를 해결하기위해 명확한 규약과 높은 성능을 지닌 HTTP 2.0 기반의 gRPC 가 탄생하였다.

자세한 내용은 gRPC 참조

Container

개발자가 손쉽게 운영/접근 할 수 있는 인프라 관리 기술

소프트웨어를 라이브러리, 프레임워크, 기타 종속성 같은 필수 요소와 함께 패키지에 포함하여 각각의 “컨테이너”로 분리하는것을 뜻한다. 이렇게 containerized 된 소프트웨어나 어플리케이션은 어떤 환경과 인프라에서든 일관성있게 실행된다.

즉, 어플리케이션을 둘러싼 일종의 컴퓨팅공간이다.

MSA 의 각 서비스를 이러한 컨테이너로 배포할 경우, 각 서비스의 관리가 쉬우며, 환경에 따른 제약을 받지 않는다는 장정이 있다.

이러한 컨테이너를 관리하는 기술로는 Docker 가 있다.

profile
테오의 스프린트 17기 퍼실리테이터

0개의 댓글