티스토리 뷰

Cloud pub/sub

Cloud Pub/Sub(Cloud PubSub)

Cloud Pub/Sub(Cloud PubSub)는 이벤트를 처리하는 서비스에서 이벤트를 생성하는 서비스를 분리하는 비동기 메시징 서비스입니다. 또한 메시징 기준 미들웨어 또는 스트리밍 분석 파이프 라인의 이벤트 수집 및 전송으로 사용할 수 있습니다.

Pub/Sub(Cloud PubSub)는 규모에 맞는 고가용성 및 일관된 성능으로 내구성 있는 메시지 스토리지 및 실시간 메시지 전송을 제공합니다. Pub/Sub(Cloud PubSub) 서버는 전 세계 모든 Google Cloud region에서 실행됩니다.

 

또한 Google Cloud Pub/Sub는 애플리케이션 및 서비스 간에 이벤트 데이터를 교환하는 데 사용되는 메시징 서비스입니다. 데이터 제작자는 Cloud Pub/Sub 주제에 메시지를 게시하고 소비자는 해당 주제에 관한 구독을 만듭니다. 구독자는 구독에서 메시지를 가져오거나 푸시 구독을 위한 webhook을 구성합니다. 구성에서 설정 가능한 기간 안에 모든 구독자가 각 메시지를 확인해야 합니다.

 

 

 

개념

기본 Pub/Sub 흐름도

  • 주제(Topic): 게시자(publisher)가 메시지를 전송하는, 이름이 지정된 리소스입니다.

  • 구독(Subscription): 특정 단일 주제(Topic)의 메시지 스트림이 구독 애플리케이션으로 전달되는 과정을 나타내는, 이름이 지정된 리소스입니다.

  • 메시지(message): 게시자가 주제에 전달하여 결과적으로 구독자에게 전달되는 데이터와 속성(선택사항)의 조합입니다.

  • 메시지 속성: 게시자가 메시지에 대해 정의할 수 있는 키-값 쌍입니다. 예를 들어 키 iana.org/language_tag와 값 en을 메시지에 추가하여 영어를 사용하는 구독자가 읽을 수 있다고 표시하는 식입니다.

 

 

 

게시자(Publisher)와 구독(Subscription) 사이의 관계

게시자와 구독자 사이의 관계

게시자(Publisher) 애플리케이션이 메시지를 만들어 주제(Topic)로 전송합니다. 그리고 구독자 애플리케이션은 주제에 대한 구독을 만들어 해당 주제로부터 메시지를 수신합니다.

 

위의 다이어그램과 같이 통신은 일대다(팬아웃), 다대일(팬인), 다대다 형태를 취합니다.

 

 

 

Pub/Sub 메시지 흐름

다음 다이어그램은 Pub/Sub 시스템의 구성요소 및 구성요소 간의 메시지 흐름 방식에 대한 개요입니다.

Pub/Sub 메세지 흐름

  1. 게시자 애플리케이션은 Cloud Pub/Sub 서비스에 주제(Topic)를 만들고 주제(Topic)에 메시지(Message)를 보냅니다. 메시지에는 페이로드 내용을 설명하는 페이로드 및 선택적 속성이 포함됩니다.

  2. 이 서비스(구독? 더 알아볼 것)는 개시된 메시지가 구독을 대신하여 유지되도록 합니다. 게시된 메시지는 구독에서 메시지를 사용하는 구독자가 확인할 때까지 유지됩니다.

  3. Pub/Sub는 주제에서 모든 구독으로 메시지를 개별적으로 전달합니다.

  4. 구독자는 다음으로부터 메시지를 받을 수 있습니다. Pub/Sub가 메시지를 구독자가 선택한 엔드 포인트로 푸시하거나 구독자가 서비스에서 메시지를 가져옵니다.

  5. 구독자는 수신된 각 메시지에 대해 Pub/Sub 서비스에 승인(Ack)을 보냅니다.

  6. 서비스는 구독의 메시지 대기열에서 확인된 메시지를 제거합니다.

 

 

 

게시자와 구독자 엔드포인트

게시자는 모든 애플리케이션이 될 수 있습니다. 예를 들어 pubsub.googleapis.com에 HTTPS 요청을 할 수 있는 애플리케이션, App Engine 앱, Google Compute Engine 또는 기타 타사 네트워크에서 호스팅 되는 웹 서비스, 데스크톱 또는 휴대 기기에 설치된 앱, 브라우저 등이 될 수 있습니다.

 

Pull 구독자는 pubsub.googleapis.com에 HTTPS 요청을 할 수 있는 모든 애플리케이션이 될 수도 있습니다.

 

Push 구독자는 HTTPS를 통해 POST 요청을 수락할 수 있는 Webhook 엔드 포인트여야 합니다.

게시자와 구독자 엔드포인트

 

 

Pub/Sub integrations

다음 다이어그램은 Pub/Sub가 GCP의 여러 구성 요소를 통합하는 방법을 보여줍니다.

pub/sub 통합

 

 

사용 예시

 

  • 네트워크 클러스터에서 워크로드 균형 조정 : 대규모 작업 대기열을 여러 작업자 간에 효율적으로 분산할 수 있습니다.

  • 비동기 워크플로 구현 : 주문 처리 애플리케이션이 주제를 주문하고 한 명 이상의 작업자가 주문을 처리합니다.

  • 이벤트 알림 배포 : 사용자 등록을 수락하는 서비스는 새 사용자가 등록할 때마다 알림을 보낼 수 있고 다운 스트림 서비스는 이벤트 알림을 수신하도록 구독할 수 있습니다.

  • 분산 캐시 갱신 : 애플리케이션은 변경된 개체의 ID를 업데이트하기 위해 무효화 이벤트를 게시할 수 있습니다.

  • 여러 시스템에 Logging : Google Compute Engine 인스턴스가 시스템 모니터링, 향후 쿼리용 데이터베이스 등에 대한 로그를 기록합니다.

  • 다양한 프로세스 또는 기기에서 데이터 스트리밍 : residential 센서가 클라우드에서 호스팅 되는 백엔드 서버로 데이터를 스트리밍 합니다.

  • 안정성 개선 : single-zone Compute Engine 서비스가 공통 주제를 구독하여 추가 영역에서 작동함으로써 특정 영역이나 리전에서 발생하는 오류를 복구합니다.

 

 

 

 

 

 

반응형