두가지 패턴의 프로세스 간 통신 (IPC)
두가지 패턴의 프로세스 간 통신 (IPC)
일반적인 모놀리식에서 같은 앱 내에서 함수를 호출함으로써 다른 서비스를 호출할 수 있었다면 msa로 바뀌면서 함수를 호출하는 방식이 api 통신으로 바뀌고 하나의 서비스들을 하나의 서버에서 돌아가는 프로세스라고 부른다면 이통신을 IPC 통신이라고함
동기 커뮤니케이션
애플리케이션 -> 애플리케이션
주문 서비스 -> 배송 서비스
비동기 커뮤니케이션(이벤트 기반)
애플리케이션 -> 큐 -> 애플리케이션
주문 서비스 -> 큐 -> 배송 서비스
msa에 유리한 비동기적 방식을 구현할때 큐를 사용하게됨
큐(Queue)의 개념
-
컴퓨터의 기본적인 자료 구조의 한가지로, 먼저 집어 넣은 데이터가 먼저 나오는 FIFO(First In First Out)구조로 저장하는 형식
-
queue라는 영단어 자체가 티켓 등의 표따위를 구매하기 위해 줄을 서는 것을 의미합니다.
-
데이터가 들어오는 위치는 대기열의 가장 뒤에서 들어오고 그것을 Rear 혹은 back 이라고 합니다.
- 데이터가 나가는 위치는 대기열의 가장 앞이고 이를 Front라고 하고, 때문에 가장 먼저 들어노는 데이터가 먼저 나가게 됩니다.
- 우선순위 큐, 원형 큐 등의 큐의 변화적인 형태들이 존재합니다.
- 입력은 Enqueue 라고 하며 출력은 Dequeue 라고 표현, fornt에 위치한 데이터 조회는 Peek로 읽습니다. https://gmlwjd9405.github.io/2018/08/02/data-structure-queue.html
느슨한 결합(loose coupling)이 주는 장점
- 프로세스간의 의존성을 줄일 수 있음
- 시스템을 유지보수하기 쉽게 만듦
- 시스템의 유연성이 증가됨
- 보다 쉽게 서비스를 테스트할 수 있음
- 일부 시스템의 실패가 전체 시스템의 실패로 이어지지 않음
- 프로그래밍 세계에서는 항상 느슨한 결합이 주된 관심사
- UI: 컴포넌트화(frontend에서 각각의 ui가 연관성 없이 따로 동작한다.)
- 객체 지향 프로그래밍: 의존성 주입(DEpendency Ingection)
- 마이크로서비스: 메세징 시스템을 이용한 비동기 커뮤니케이션