MSA 정리 - (7) Backing Service

alexhwang_·2022년 1월 27일
0

MSA 정리

목록 보기
7/9

Backing Service

1. Backing Service의 역할

  • 마이크로 서비스에서 Backing Service는 메세지의 송신자와 수신자가 직접 통신하지 않고 메시지큐를 활용한 비동기 통신 프로토콜을 사용한다.

  • 마이크로 서비스 간 통신이 필요한 비즈니스의 경우 실시간으로 진행되도록 구성한 마이크로서비스들은 장애 발생, 트래픽 증가 또는 소스 반영 등의 이벤트가 발생할 경우 마이크로서비스 오케스트레이션을 진행하며 또 다른 마이크로 서비스를 신규 생성, 재생성 등의 작업을 수행

  • 강결합 구조의 실시간 트랜잭션 기반의 서비스를 제공 시 트랜잭션이 끊어지기 때문에 서비스 요청을 보존할 수 없고 에러 발생
    -> 서비스 영속성 지속을 위해 메시지 큐를 활용, 리소스와의 결합을 느슨하게 하여 구성

  • 마이크로 서비스들 간의 비동기 처리가 필요하거나 타 마이크로서비스의 데이터 접근이 빈번하여 API 호출 과다 발생 시에도 데이터 공유 혹은 데이터 대상 리포팅을 실시간 동기화를 수행

2. Backing Service 패턴

(1) point-to-point 아키택처 패턴

  • point-to-point 패턴에서는 하나의 마이크로서비스가 다른 마이크로서비스의 호출이 필요한 경우 동기식 방식으로 직접 호출하지 않고 메시지큐로 메시지를 보내는 방식으로 통신
  • 메시지 큐로 보내진 메시지는 대기열에 배치되고 메시지큐에서 마이크로서비스로 직접 메시지를 보내거나 수신하는 마이크로서비스가 polling하는 패턴
  • 간단한 비동기성 메시지 처리에 적합하며 송신 마이크로서비스와 수신 마이크로서비스가 분리되어 서로에게 영향을 끼치지 않는 장점이 있음. 그러나 메시지 큐의 작업이 많아 부하가 걸릴 경우 장애를 일으키는 단점도 존재함.

(2) Pub/Sub 아키텍처 패턴

  • Pub/Sub ( publish/ subscription) 패턴에서는 하나의 마이크로서비스가 교환기를 통하여 다수의 마이크로 서비스에게 메시지를 전달하는 패턴으로 한꺼번에 많은 소비자에게 메시지를 전달하는 구조에 적합

  • Pub/Sub 패턴에서는 메시지를 전송하는 게시자(Publisher)와 해당 메시지를 수신하는 구독자(Subscription), 게시자로부터 메시지를 전달받아 메시지큐로 전송하는 교환기(Exchange)로 나뉘게 된다.

  • 게시자는 전달하고자 하는 메시지를 교환기로 보내고 교환기는 다시 메시지 큐로 보내어 게시를 하게 되고 수신자 중에서 구독을 신청한 하나의 수신자를 지정하여 메시지를 보내거나 polling을 통하여 마이크로서비스가 메시지 큐에 접근하여 메시지를 가져간다.

  • Pub/Sub 패턴에서는 메시지큐에서 소비자의 정보에 대해서 알고 있으므로, 소비자(구독자)로부터 공급자(게시자)를 분리할 수 있고 그래서 서로에 대한 정보를 알 필요 X.

  • 병렬 작업,메시지 캐싱,트리 기반 또는 네트워크 기반의 라우팅을 통하여 기존의 클라이언트-서버 환경보다 뛰어난 확장성을 제공함. 그러나 서비스의 호출이 많은 서비스의 경우 마찬가지로 높은 부하로 인하여 확장성은 감소.

3. Backing Service의 특징

  • 마이크로 서비스에서의 Backing Service는 메시지큐를 활용한 비동기 통신 패턴을 많이 활용.
  • 현대 MSA의 특징 중 마이크로 서비스에 이벤트(장애 발생,트래픽 증가,소스 반영 등)가 발생할 경우, 마이크로 서비스 오케스트레이션이 진행되며 마이크로서비스의 신규 생성, 재생성, 서비스 인스턴스의 삭제 등의 작업이 빈번하게 이루어짐.

EX) 하나의 트랜잭션에서 여러 마이크로 서비스들이 강하게 결합되어 처리되는 방식의 경우, 트랜잭션이 끊어져 서비스 요청을 보존 불가.

-> MSA에서는 MQ(Message queue)를 활용하여 트랜잭션을 분리하는 전략을 많이 취함. 특히 MQ를 사용할 경우 서비스의 영속성을 유지할 수 있다는 장점이 있다.

4. MQ(Message Queue)

  • 일반적인 웹서비스는 서버-클라이언트 사이의 통신은 결합도가 높은 구조로 동기방식으로 작동
    -> 시스템 내 요소들 간의 의존성이 높아 유연성이 낮음

  • 결합도가 낮아야하는 MSA에서 데이터의 송수신은 비동기방식으로 메시지를 사용하는 것이 효율적
    -> MQ는 메시지를 발행하는 생산자(Pub)와 메시지를 받는 소비자(Sub) 사이에 위치하는 매개체 역할을 수행하는 미들웨어



분산된 마이크로 서비스 간에 MQ를 이용하여 비동기 방식으토 통신하는 특징

  • 비동기/약결합
  • Redundancy : 서비스가 실패하더라도 재처리 가능
  • Resilence : 전체 시스템에 대한 영향이 적고, 회복 탄력성이 높음
  • 보장성 : MQ에 들어간 메시지는 최소 한번은 처리됨
  • 확장성 : 다수의 MQ를 두어 많은 요청에 대해 유연하게 확장 가능

0개의 댓글