Pub/Sub란 무엇인가요?

Pub/Sub는 이벤트를 처리하는 서비스에서 이벤트를 생성하는 서비스를 분리하는 비동기 메시징 서비스입니다.

Pub/Sub를 메시징 기준 미들웨어 또는 스트리밍 분석 파이프 라인의 이벤트 수집 및 전송으로 사용할 수 있습니다.

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

빠른 시작: Cloud Console 사용을 참조해 바로 시작해보세요. 보다 포괄적인 소개는 유효한 Pub/Sub 시스템 빌드를 참조하세요.

핵심 개념

  • 주제: 게시자가 메시지를 전송하는, 이름이 지정된 리소스입니다.
  • 구독: 특정 단일 주제의 메시지 스트림이 구독 애플리케이션으로 전달되는 과정을 나타내는, 이름이 지정된 리소스입니다. 구독과 메시지 전송 시맨틱스에 대한 자세한 내용은 구독자 가이드를 참조하세요.
  • 메시지: 게시자가 주제에 전달하여 결과적으로 구독자에게 전달되는 데이터와 속성(선택사항)의 조합입니다.
  • 메시지 속성: 게시자가 메시지에 대해 정의할 수 있는 키-값 쌍입니다. 예를 들어 키 iana.org/language_tag와 값 en을 메시지에 추가하여 영어를 사용하는 구독자가 읽을 수 있다고 표시하는 식입니다.

게시자-구독자 관계

게시자 애플리케이션이 메시지를 만들어 주제로 전송합니다. 구독자 애플리케이션은 주제에 대한 구독을 만들어 해당 주제로부터 메시지를 수신합니다. 다음 다이어그램과 같이 통신은 일대다(팬아웃), 다대일(팬인), 다대다 형태를 취합니다.

게시자 A와 B는 같은 구독자에게 메시지를 전송하고 게시자 C는 여러 구독자에게 메시지를 전달합니다.

Pub/Sub 메시지 흐름

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

Pub/Sub 시스템의 기본 구성요소에는 메시지, 주제, 구독이 포함됩니다.
  1. 게시자 애플리케이션이 Pub/Sub 서비스에서 주제를 생성하고 메시지를 주제로 전송합니다. 메시지에는 페이로드와 페이로드 콘텐츠를 설명하는 추가 속성이 포함됩니다.
  2. 이 서비스는 게시된 메시지가 구독을 대신하여 보관되도록 합니다. 게시된 메시지는 구독자가 해당 구독에서 보낸 메시지를 소비할 때까지 구독에 보관됩니다.
  3. Pub/Sub가 메시지를 주제에서 개별 구독으로 전달합니다.
  4. 구독자는 구독자의 선택된 엔드포인트로 Pub/Sub가 내보내거나 구독자가 서비스에서 가져온 메시지를 수신합니다.
  5. 구독자는 수신된 각 메시지에 대해 Pub/Sub 서비스로 승인을 보냅니다.
  6. 이 서비스는 구독의 메시지 큐에서 확인된 메시지를 삭제합니다.

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

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

HTTP 요청은 서비스, 앱, IoT 기기와 같은 게시자 및 마이크로서비스 또는 데이터 앱 등의 구독자를 통해 이루어집니다.

또한 pubsub.googleapis.com에 HTTPS를 요청할 수 있는 모든 애플리케이션은 가져오기 구독자가 될 수 있습니다.

내보내기 구독자는 HTTPS를 통해 POST 요청을 수락할 수 있는 웹훅 엔드포인트여야 합니다.

일반적인 사용 사례

  • 네트워크 클러스터 간의 워크로드 균형 조정. 예: Google Compute Engine 인스턴스 같은 대규모 작업 큐를 여러 작업자 간에 효율적으로 분배합니다.
  • 비동기 워크플로 구현. 예: 주문 처리 애플리케이션이 주제를 주문하고 한 명 이상의 작업자가 주문을 처리합니다.
  • 이벤트 알림 배포. 예: 사용자 가입을 수신한 서비스가 새 사용자가 등록할 때마다 알림을 전송하고, 다운스트림 서비스는 이벤트 알림 수신을 구독합니다.
  • 분산 캐시 갱신. 예: 애플리케이션이 무효화 이벤트를 게시해, 변경된 객체의 ID를 업데이트합니다.
  • 여러 시스템에 로깅. 예: Google Compute Engine 인스턴스가 시스템 모니터링, 향후 쿼리용 데이터베이스 등에 대한 로그를 기록합니다.
  • 다양한 프로세스 또는 기기에서 데이터 스트리밍. 예: 가정용 센서가 클라우드에서 호스팅되는 백엔드 서버로 데이터를 스트리밍합니다.
  • 안정성 개선. 예: 단일 영역 Compute Engine 서비스가 공통 주제를 구독하여 추가 영역에서 작동함으로써 특정 영역이나 리전에서 발생하는 오류를 복구합니다.

Pub/Sub 통합

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

Pub/Sub는 Cloud Logging 및 Compute Engine의 입력을 Dataflow 및 App Engine과 같은 엔드포인트와 통합할 수 있습니다.