세션/MSA

4. Backing Service

feel2 2024. 4. 2. 18:29
반응형

Backing Service란?

backing services는 앱이 실행중에 네트워크를 통해 사용하는 모든 서비스를 말합니다. 예로는 데이터 저장소(예: MySQL 또는 CouchDB), 메시징/대기열 시스템(예: RabbitMQ 또는 Beanstalkd), 아웃바운드 이메일용 SMTP 서비스(예: Postfix) 및 캐싱 시스템(예: Memcached, Redis)이 있습니다.

여기서 key point 는

  • 앱이 실행중에 네트워크를 통해 사용하는 모든 서비스

로 볼 수 있다.

 

출처:  12factor , 다양한 backing service들이 존재한다.

 

쉽게 backup(지원요청)을 위한 컴퍼넌트라고 생각하면 된다.

 

Microservices for Backing Service

 

이벤트드리븐 기반의 마이크로서비스(Event-Driven Microservices)에서 Backing Service 는 메세지의 송신자와 수신자가 직접 통신하지 않고 메시지큐를 활용한 비동기 통신 프로토콜을 사용합니다.

마이크로서비스간의 통신이 필요한 비즈니스의 경우, 실시간으로 진행되도록 구성한 마이크로서비스들은 장애 발생, 트래픽 증가 또는 소스 반영 등의 이벤트가 발생할 수 있습니다.

이런 경우, 마이크로서비스는 오케스트레이션을 진행하며 또다른 마이크로서비스를 신규 생성, 재생성 등의 작업을 수행하게 됩니다.

기존의 강결합 구조의 서비스는 실시간 트랜잭션 기반의 서비스를 제공하면 트랜잭션이 끊어지기 때문에, 서비스 요청을 보존할 수 없고 에러가 발생하게 됩니다.

그래서 서비스 영속성을 지속하기 위하여 메시지 큐를 활용하고 리소스와의 결합을 느슨하게 하여 언제든지 붙이거나 떼어 낼 수 있도록 Backing Service를 구성하여야 합니다.

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

 

Apache Kafka?

 

출처:  https://velog.io/@jwpark06/Kafka-시스템-구조-알아보기

 

LinkedIn에서 개발된 pub-sub 모델의 메시지큐 방식 기반, 분산 메시징 시스템이다.

 

  • 대규모 트래픽 처리 및 분산 처리에 효과적
  • 클러스터 구성, Fail-over, Replication 같은 기능이 있음
  • 100Kb/sec 정도의 속도 (다른 메세지 큐 보다 빠름)
  • 디스크에 메세지를 특정 보관 주기동안 저장하여 데이터의 영속성이 보장되고 유실 위험이 적다. 또한 Consumer 장애 시 재처리가 가능하다.

 

Pub/ Sub 아키텍처 패턴

 

출처:  msaschool , 토픽 아키텍처

 

토픽 아키텍처의 경우 Pub/sub 구조에 교환기에서 direct로 메시지를 송신하지 않고 토픽을 게시하는 방식이다.

  • 토픽의 경우는 메시지를 게시하면 관심 있는 모든 구독자가 메시지 사본을 받게 됩니다.
  • Point-to-point 방식의 Message queue와 비교하여 가용성과 확장성이 좋으며, point-to-multipoint 방식으로 구성됩니다.
  • 게시자와 수신자의 정보를 서로 알고 있을 필요가 없으며, 메시지가 수신자에게 도착하면 게시자에게 알림이 전송됩니다.
  • 메시지는 토픽에서 직접 수신되지 않으며 구독에서 수신합니다.
  • 구독은 필터를 통하여 전달받는 메시지를 제한할 수 있습니다.

 

How it Works

출처: oreilly

 

모든 backing service는 URL을 통해 액세스할 수 있어야 합니다.

마이크로 서비스는 실행되는 동안 지속적으로 backing service와 통신을 해야합니다. 예를 들어 메시징 시스템에서 메시지를 듣거나 보내거나, 이메일을 보내거나, 데이터베이스에 데이터를 유지할 수 있습니다. 복잡한 통신 요구 사항 없이 URL을 통해 이러한 모든 서비스에 접근할 수 있어야 합니다.

 

참조

 

반응형

'세션 > MSA' 카테고리의 다른 글

5. Telemetry  (0) 2024.04.16
2. Service Mesh  (0) 2024.03.29
1. API Gateway  (0) 2024.03.29