두가지 패턴의 프로세스 간 통신 (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)
    • 마이크로서비스: 메세징 시스템을 이용한 비동기 커뮤니케이션