마이크로서비스 엔드포인트 간의 통신
마이크로서비스의 통신방법
마이크로서비스 아키텍처를 기반으로 하는 시스템의 경우, 단일 마이크로서비스는 다른 카테고리에 존재하는 데이터를 생성할 수 없다.
서로 다른 마이크로서비스는 각각 자기 영역으로 분류된 데이터를 생성하면서, 서로 다른 마이크로서비스간의 커뮤니케이션을 수행한다.
마이크로서비스는 완전히 다른 컨텍스트에서 실행되는 다른 프로세스이거나 다른 하드웨어에 존재 할 수 있다. 따라서 다양한 형태의 마이크로서비스 통신이 나타날 수 있다.
마이크로서비스 간의 제어 및 통신 흐름을 다음과 같이 분류할 수 있다.
- 오케스트레이션
- 커리어그래픽
오케스트레이션
오케스트레이션은 중심점을 기반으로 의사소통이 진행된다. 중재자 서비스가 상황에 맞게 각 마이크로 서비스에 작업을 요청하고 모든 마이크로서비스는 단일 비즈니스를 목적으로만 작동한다.
커리어그래피
오케스트레이션과는 다르게 커리어그래피에서 각 구성 요소는 다른 구성요소와 함께 미리 정의된 작업을 수행하도록 조정된다. 오케스트레이션은 항상 한 관점에서 전체를 제어하기 때문에, 공동 작업을 통해 각 마이크로서비스끼리 서로 상호작용을 할 수 있게 하는 커리어그래피와 다르다. 커리어그래피에서 서비스는 작업을 마친 후 새로운 작업을 시작하기 위해서 다른 서비스와 통신을 하는데 1:1, 1:N, N:M 등의 다양한 형태로 발생할 수 있다.
동기식 통신과 비동기식 통신
오케스트레이션, 커리어그래피는 마이크로서비스 간의 통신을 트리거하는 방법이었다. 이 두가지 방법 모두 동기식, 비동기식 통신방법을 사용할 수 있다. 위의 이 두가지 통신방법에 대해 알아보겠다.
동기식 통신
동기식 통신은 두 서비스 간에 통신이 이루어 질때, 사용자측 서버는 리모트 서버의 응답이 수신될때까지 기다리거나, 기다리는것을 멈춘다. 동기식 통신에서 수신자는 통신이 성공했는지 실패했는지 즉시 알 수 있으며 결과를 바탕으로 필요한 결정을 내린다.
비동기식 통신
메세지 기반/ 이벤트 기반 비동기 통신
'아카이브' 카테고리의 다른 글
Django - 실습편 기본세팅 (1) (0) | 2021.06.08 |
---|---|
ruby on rails - 실습 세팅편(1) (0) | 2021.06.03 |
마이크로서비스 아키텍처 - 개념정리 (2) (0) | 2021.05.17 |
Django + jenkins + docker CI/CD 구축기 (1) (0) | 2021.05.16 |
마이크로서비스 아키텍처 - 개념정리 (1) (0) | 2021.05.16 |