”마이크로서비스 간의 통신”이라고 이름 붙이지 않고, “프로세스 간 통신(Inter-process communication, IPC)”이라고 이름 붙인 것은, 결국 마이크로서비스는 하나의 프로세스 단위로 실행되기 때문
프로세스 간의 통신
> 서비스와 서비스가 서로 통신하기 위해서는 인터페이스(interface)가 존재해야 하고, 인터페이스가 요구하는 방식대로 커뮤니케이션해야 함
동기/비동기
> HTTP 프로토콜은 기본적으로 TCP(또는 UDP) 연결을 만들고, 이 위에서 요청에 따라 즉시 응답이 오는 형태로 구현, 즉 동기적인 응답을 제공
여기서 잠깐! HTTP는 비동기 아닌가요?
어쨌든 HTTP는 컴퓨터와 컴퓨터 사이의 네트워크 통신이고, 이는 네트워크 지연에 따라 즉시 응답이 오지 않을 수도 있기 때문에 이를 비동기로 인식할 수 있음
이는 프로그래밍 언어의 관점에서 틀린 말은 아님
but! 프로세스 간 통신의 관점에서 HTTP는 동기적인 메커니즘으로 분류
어쨌든 서로 통신하는 두 컴퓨터는 모두 켜져 있어야 하며, 클라이언트는 서버가 제 때 응답을 줄 것이라고 기대하기 때문
서비스작업
동기 | 요청/응답 |
비동기 | 비동기 요청/응답 단방향 알림 (예를 들어, 푸시 알림) |
일대일 및 일대다 통신
> 뉴스레터 구독 서비스는 1:1로 커뮤니케이션하지 않고 구독자 모두에게 동일한 메시지를 제공하는 형태, 즉 일대다 커뮤니케이션 방식
HTTP는 일대일? 아니면, 일대다?
> 요청/응답으로 이뤄진 한 번의 트랜잭션(transaction)에서 서버는 여러 클라이언트에게 동시에 응답을 전달하지 않음
> 서버가 여러 클라이언트를 상대할 수는 있지만, 그것은 여러 번의 1:1 커뮤니케이션이지, 동시에 여러 클라이언트를 상대하는 1대다 커뮤니케이션이 아닙니다. 따라서 일대일 통신이라고 볼 수 있음
프로세스 간의 직접/간접 연결
> 메시지 브로커가 두 프로세스 사이에 위치해서 오고 가는 메시지 자체를 관리하는 형태의 연결 방식도 있음
> 비동기적인 처리는 물론이고, 설사 둘 중 하나의 프로세스가 실행 중이 아니더라도 서로 메시지를 주고받을 수도 있음
'DevOps BootCamp > 마이크로서비스' 카테고리의 다른 글
동기식 요청/응답 통신 REST (0) | 2023.05.08 |
---|---|
대표적인 데이터 교환 포맷 JSON (1) | 2023.05.08 |
도메인 주도 설계 예시 (0) | 2023.05.04 |
서버리스 (0) | 2023.05.03 |
마이크로서비스 아키텍처의 정의 (0) | 2023.05.03 |