ETC
MSA(MicroService Architecture) 의 통신 방법
D_Helloper
2023. 6. 7. 21:35
일대일(One-to-One) : 하나의 요청이 하나의 서비스를 실행할 경우
일대다(One-to-Many) : 하나의 요청이 여러 서비스를 실행할 경우
위와 같이 호출 하는 쪽과 호출을 받는 쪽으로 구분을 하거나
동기(Synchronous) : 요청을 보내고 응답이 올 때 까지 기다리는 방식
비동기(Asynchronous) : 요청을 보내고 응답을 기다리지 않고 다음을 실행
로 구분
일대다
일대일 | 일대다 | |
동기 | 1) 요청/응답(Request/response) | - |
비동기 | 2) 알림(Notification) | 4) 퍼블리시/구독(Publish/subscribe) |
3) 요청/비동기 응답(Request/async response) | 5) 퍼블리시/비동기 구독(Publish/async responses) |
- 요청/응답 : 요청을 보내고 응답이 올 때까지 대기
- 알림 : 요청을 전송만 함
- 요청/비동기 응답 : 요청을 보내면 비동기로 응답이 돌아옴
- 퍼블리시/구독
- 등록된 서비스들에 요청을 보냄
- 요청을 받은 서비스들은 각자 로직을 처리
- 잡지를 구독하는 것과 비슷해서 퍼블리시/구독 방식이라고 함
- 퍼블리시/비동기 응답 : 위와 같지만 비동기 형태로 응답을 보냄
IPC
- 동기 요청/응답 기반 : REST, Apache Thrift
- 비동기 메시지 기반 : AMQP, STOMP
메시지 포맷
- 텍스트 기반(사람이 쉽게 읽을 수 있음): JSON, XML
- 바이너리 포맷(성능 상 좋음): Apache Avro, Protocol Buffers
비동기 메시지 기반 통신
- 헤더와 바디로 구성되어 있으며, 채널을 통해 전송
- 한 곳에만 보낼 수도 있음(One-to-One)
- 퍼블리시/구독 모델을 따라 여러 곳에 메시지를 전송할 수도 있음(One-to-Many)
- 메시징 방식은 클라이언트와 서비스 사이의 의존도를 줄여줌
- 동기 방식은 클라이언트와 서비스가 서로를 알아야 하고 직접 통신하지만, 메시징 방식은 메시징 시스템을 통해 간접적으로 통신하기 때문
- 전송되는 메시지가 많을 때 버퍼를 활용하여 속도 조절 가능
메시징 표준 프로토콜
- AMPQ, STOMP
오픈소스 메시징 시스템
- RabbitMQ, Apache Kafka, Apache ActiveMQ, NSQ 등
자료 출처 : https://futurecreator.github.io/2018/10/04/inter-process-communication-in-microservices/