Pub/Sub란 무엇인가요?

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

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

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

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

핵심 개념

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

게시자-구독자 관계

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

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이나 다른 타사 네트워크에서 호스팅되는 웹 서비스, 데스크톱이나 휴대기기에 설치된 앱, 심지어 브라우저도 게시자가 될 수 있습니다.

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

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

일반적인 사용 사례

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

Pub/Sub 통합