Pub/Sub란 무엇인가요?

컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.

Pub/Sub를 통해 서비스는 비동기적으로 100밀리초의 지연 시간으로 통신할 수 있습니다.

Pub/Sub는 데이터를 수집하고 배포하는 스트리밍 분석 및 데이터 통합 파이프라인에 사용됩니다. 이는 서비스 통합을 위한 메시징 중심 미들웨어 또는 태스크 병렬화를 위한 큐로도 효과적입니다.

Pub/Sub를 사용하면 게시자구독자라는 이벤트 제작자 및 소비자 시스템을 만들 수 있습니다. 게시자는 동기식 리모트 프로시져 콜(RPC)이 아니라 이벤트를 브로드캐스트하여 구독자와 비동기적으로 통신합니다.

게시자는 이러한 이벤트가 처리되는 방식이나 시기에 관계없이 Pub/Sub 서비스에 이벤트를 보냅니다. 그런 다음 Pub/Sub는 이벤트에 응답하는 모든 서비스에 이벤트를 전송합니다. RPC를 통해 통신하는 시스템에서 게시자는 구독자가 데이터를 수신할 때까지 기다려야 합니다. 그러나 Pub/Sub에서 비동기 통합은 전반적인 시스템의 유연성과 견고성을 높여줍니다.

Pub/Sub를 시작하려면 빠른 시작: Google Cloud Console 사용을 확인하세요. 보다 포괄적인 소개는 Pub/Sub 메시징 시스템 빌드를 참조하세요.

일반 사용 사례

  • 사용자 상호작용 및 서버 이벤트 수집. 최종 사용자 앱의 사용자 상호작용 이벤트 또는 시스템의 서버 이벤트를 사용하려면 이를 Pub/Sub로 전달해야 할 수 있습니다. 그런 후 이벤트를 데이터베이스로 전송하는 Dataflow와 같은 스트림 처리 도구를 사용할 수 있습니다. 이러한 데이터베이스 예시에는 BigQuery, Cloud Bigtable, Cloud Storage가 있습니다. Pub/Sub를 사용하면 여러 클라이언트의 이벤트를 동시에 수집할 수 있습니다.

  • 실시간 이벤트 배포. 원시 또는 처리된 이벤트를 팀과 조직 전체의 여러 애플리케이션에서 실시간으로 처리할 수 있습니다. Pub/Sub는 '엔터프라이즈 이벤트 버스' 및 이벤트 기반 애플리케이션 설계 패턴을 지원합니다. Pub/Sub를 사용하면 이벤트를 Pub/Sub로 내보내는 여러 Google 시스템과 통합할 수 있습니다.

  • 데이터베이스 간 데이터 복제. Pub/Sub는 일반적으로 데이터베이스의 변경 이벤트를 배포하는 데 사용됩니다. 이러한 이벤트는 BigQuery 및 다른 데이터 스토리지 시스템에서 데이터베이스 상태 및 상태 기록의 뷰를 구성하는 데 사용될 수 있습니다.

  • 병렬 처리 및 워크플로. Pub/Sub 메시지를 사용하여 Cloud Functions에 연결하면 여러 작업자 간에 많은 태스크를 효율적으로 배포할 수 있습니다. 이러한 태스크의 예시에는 텍스트 파일 압축, 이메일 알림 전송, AI 모델 평가, 이미지 형식 재지정이 있습니다.

  • 엔터프라이즈 이벤트 버스. 전사적 실시간 데이터 공유 버스를 만들어 비즈니스 이벤트, 데이터베이스 업데이트, 분석 이벤트를 조직 전체에 배포할 수 있습니다.

  • 애플리케이션, 서비스, IoT 기기에서 데이터 스트리밍. 예를 들어 SaaS 애플리케이션은 이벤트의 실시간 피드를 게시할 수 있습니다. 또는 가정용 센서가 Dataflow 파이프라인을 통해 다른 Google Cloud 제품에서 사용할 수 있도록 Pub/Sub로 데이터를 스트리밍할 수 있습니다.

  • 분산 캐시 갱신. 예를 들어 애플리케이션이 무효화 이벤트를 게시하여, 변경된 객체의 ID를 업데이트합니다.

  • 안정성을 위한 부하 분산. 예: 서비스 인스턴스가 여러 영역에 있는 Compute Engine에 배포되어도 공통 주제를 구독할 수 있습니다. 영역에 장애가 발생하면 나머지가 자동으로 부하를 선택합니다.

Pub/Sub 서비스 유형

Pub/Sub는 두 가지 서비스로 구성됩니다.

  • Pub/Sub 서비스. 이 메시지 서비스는 대부분의 사용자와 애플리케이션에서 기본적으로 사용되는 옵션입니다. 자동 용량 관리와 함께 가장 높은 안정성과 가장 큰 통합 기능을 제공합니다. Pub/Sub는 최소한 두 개 이상의 영역에 모든 데이터의 동기식 복제를 보장하고 세 번째 추가 영역에 최선의 복제를 보장합니다.

  • Pub/Sub 라이트 서비스. 저비용을 목적으로 하는 유사한 별개의 메시지 서비스입니다. Pub/Sub에 비해 안정성이 낮습니다. 영역별 또는 리전별 주제 스토리지를 제공합니다. 영역 라이트 주제는 하나의 영역에만 저장됩니다. 리전 라이트 주제는 데이터를 두 번째 영역에 비동기식으로 복제합니다. 또한 Pub/Sub 라이트를 사용하려면 스토리지 및 처리량 용량을 사전 프로비저닝하고 관리해야 합니다. Pub/Sub 라이트는 매우 저렴한 비용을 달성하는 것이 추가 운영 작업과 낮은 안정성을 상쇄하는 애플리케이션에만 적용됩니다.

Pub/Sub와 Pub/Sub 라이트 간 차이점에 대한 자세한 내용은 Pub/Sub 또는 Pub/Sub 라이트 선택을 참조하세요.

Pub/Sub와 다른 메시징 기술 비교

Pub/Sub는 Apache KafkaPulsar의 수평적 확장성을 Apache ActiveMQ 및 RabbitMQ와 같은 기존 메시징 미들웨어의 기능과 결합합니다. 이러한 기능의 예시에는 데드 레터 큐와 필터링이 있습니다.

Pub/Sub가 메시징 미들웨어에서 사용하는 또 다른 기능은 파티션 기반 메시징이 아닌 메시지당 동시 로드입니다. Pub/Sub는 개별 메시지를 구독자 클라이언트에 '임대'한 다음 지정된 메시지가 성공적으로 처리되었는지 주기적으로 확인합니다.

반대로 다른 수평 확장형 메시지 시스템은 수평 확장에 파티션을 사용합니다. 이렇게 하면 구독자가 각 파티션에서 메시지를 순서대로 처리해야 하며 동시 클라이언트 수가 파티션 수로 제한됩니다. 메시지당 처리는 구독자 애플리케이션의 동시 로드를 극대화하고 게시자/구독자의 독립성을 보장하는 데 도움이 됩니다.

서비스 간 통신 및 서비스-클라이언트 간 통신 비교

Pub/Sub의 용도는 최종 사용자 또는 IoT 클라이언트와의 통신이 아닌 서비스 간 통신입니다. 다른 제품에서는 다른 패턴이 더 잘 지원됩니다.

이러한 서비스의 조합을 사용하여 클라이언트 -> 서비스 -> 데이터베이스 패턴을 빌드할 수 있습니다. 예는 WebSocket을 통한 Pub/Sub 메시지 스트리밍 가이드를 참조하세요.

통합

Pub/Sub는 다른 Google Cloud 제품과 많이 통합되어 모든 기능을 갖춘 메시징 시스템을 만듭니다.

  • 스트림 처리 및 데이터 통합. Dataflow 템플릿SQL을 포함한 Dataflow에서 지원되며 이를 통해 데이터를 처리하고 Cloud Storage에서 BigQuery 및 데이터 레이크에 데이터를 통합할 수 있습니다. Pub/Sub에서 Cloud Storage, BigQuery, 기타 제품으로 데이터를 이동하는 Dataflow 템플릿은 Google Cloud console의 Pub/Sub 및 Dataflow UI에서 사용할 수 있습니다. 특히 Dataproc으로 관리되는 경우 Apache Spark와의 통합도 사용할 수 있습니다. Spark + Dataproc에서 실행되는 통합 및 처리 파이프라인의 시각적 구성은 Data Fusion을 사용하여 수행할 수 있습니다.
  • 모니터링, 알림, 로깅. Monitoring 및 Logging 제품에서 지원됩니다.
  • 인증 및 IAM. Pub/Sub는 다른 Google Cloud 제품에서 사용하는 표준 OAuth 인증을 사용하며 세분화된 IAM을 지원하여 개별 리소스에 대한 액세스 제어를 지원합니다.
  • API. Pub/Sub는 여러 언어의 클라이언트 라이브러리와 함께 표준 gRPC 및 REST 서비스 API 기술을 사용합니다.
  • 트리거, 알림, 웹훅. Pub/Sub는 웹훅에 대한 HTTP POST 요청으로 푸시 기반의 메시지 전송을 제공합니다. Cloud Functions 또는 기타 서버리스 제품을 사용하여 워크플로 자동화를 쉽게 구현할 수 있습니다.
  • 조정. Pub/Sub는 여러 단계의 서버리스 워크플로에 선언적으로 통합할 수 있습니다. 빅데이터 및 분석 조정은 종종 Pub/Sub 트리거를 지원하는 Cloud Composer로 이루어집니다.

핵심 개념

  • 주제. 게시자가 메시지를 전송하는, 이름이 지정된 리소스입니다.
  • 구독. 특정 단일 주제의 메시지 스트림이 구독 애플리케이션으로 전달되는 과정을 나타내는, 이름이 지정된 리소스입니다. 구독과 메시지 전송 시맨틱스에 대한 자세한 내용은 구독자 가이드를 참조하세요.
  • 메시지. 게시자가 주제에 전달해 결과적으로 구독자에게 전달되는 데이터와 (선택사항) 속성의 조합입니다.
  • 메시지 속성. 게시자가 메시지에 대해 정의할 수 있는 키-값 쌍입니다. 예를 들어 키 iana.org/language_tag와 값 en을 메시지에 추가하여 영어를 사용하는 구독자가 읽을 수 있다고 표시하는 식입니다.
  • 게시자. 메시지를 만들고 단일 또는 다중 주제로 전송하는 애플리케이션입니다.
  • 구독자. 단일 또는 다중 주제에 대한 구독을 사용하여 메시지를 수신하는 애플리케이션입니다.
  • 확인(또는 'ack') 구독자가 메시지를 정상적으로 수신한 후 구독자가 Pub/Sub에 보내는 신호입니다. 확인된 메시지는 구독 메시지 큐에서 삭제됩니다.
  • 푸시와 풀. 두 가지 메시지 전송 방법입니다. 구독자가 메시지를 수신하기 위해서는 구독자가 선택한 엔드포인트로 Pub/Sub가 메시지를 푸시하거나 서비스에서 구독자가 메시지를 하는 방식이 사용됩니다.

게시자-구독자 관계는 다음 다이어그램과 같이 일대다(팬아웃), 다대일(팬인), 다대다 형태를 취합니다.

게시자-구독자 관계

다음 다이어그램은 메시지가 게시자에서 구독자로 전달되는 방법을 보여줍니다. 푸시 전송의 경우 푸시 요청에 대한 응답에서 확인이 암시적으로 수행되지만 풀 전송의 경우 별도의 RPC가 필요합니다.

메시지 수명 주기

다음 단계