Pub/Sub와 스트림 공유

Analytics Hub를 통해 Pub/Sub 주제를 공유하여 여러 내부 및 외부 조직 경계에 스트리밍 데이터 라이브러리를 선별하고 배포할 수 있습니다. Analytics Hub 교환 및 목록을 사용하여 실시간 스트리밍 데이터가 공유되므로 대규모 Pub/Sub 주제 집합을 논리적으로 분류 및 그룹화하고 규모에 맞게 액세스를 프로비저닝할 수 있습니다.

스트리밍 데이터를 공유하여 다음을 수행할 수 있습니다.

  • 금융 서비스:
    • 빠르게 변화하는 계측 가격, 견적, 주문을 실시간으로 공유
    • 자금세탁 및 결제 사기 감지
    • 거래 위험 계산 지원
  • 소매 및 소비재(CPG).
    • 매장에서 실시간으로 인벤토리를 관리하도록 지원
    • 마케팅 및 고객 지원 맞춤설정
    • 동적으로 가격 조정
    • 소셜 미디어 채널 모니터링
    • 오프라인 상점 레이아웃 최적화하기
  • 의료:
    • 예측 알고리즘을 강화하여 실시간으로 환자 모니터링 및 위험 분석
    • 웨어러블 의료 기기로 바이탈 모니터링
    • 환자, 의료 전문가, 시설 관리로부터의 데이터 자동 수집, 구조화, 저장, 처리
  • 전자통신:
    • 네트워크 상태 검토 및 장애 예측
    • 사용자 행동 패턴을 발견하여 기기와 안테나를 더 잘 찾기

역할

Pub/Sub 주제를 공유하는 역할은 BigQuery 데이터 세트 공유와 유사합니다.

아키텍처

다음 다이어그램은 Pub/Sub 리소스의 게시자 및 구독자가 Analytics Hub와 상호작용하는 방식을 설명합니다.

Analytics Hub 게시자와 Analytics Hub 간의 상호작용
그림 1. Pub/Sub 주제를 사용하는 Analytics Hub 게시자 및 구독자 워크플로

공유 주제

공유 주제는 Analytics Hub에서 Pub/Sub 주제를 공유하는 단위입니다. 게시자는 기존 Pub/Sub 주제를 만들거나 사용하여 메시지 데이터를 구독자에게 배포합니다. Analytics Hub는 소스 Pub/Sub 주제를 복제하지 않습니다.

목록

게시자가 공유 주제를 거래소에 추가하면 목록이 생성됩니다. 공유 주제에 대한 참조가 포함됩니다.

교환

교환은 공유 주제를 참조하는 목록을 논리적으로 묶은 그룹입니다.

연결된 Pub/Sub 구독

공유 주제가 있는 목록을 구독하면 연결된 Pub/Sub 구독이 구독자 프로젝트에 생성됩니다. Pub/Sub 구독은 게시자 프로젝트에서도 Pub/Sub 구독 및 Analytics Hub 목록 구독으로 표시됩니다.

제한사항

Pub/Sub와 스트림 공유에는 다음과 같은 제한사항이 있습니다.

  • 공유 주제는 최대 10,000개의 Pub/Sub 구독을 포함할 수 있습니다. 이 한도에는 연결된 Pub/Sub 구독과 Analytics Hub 외부에서 생성된 Pub/Sub 구독(예: Pub/Sub에서 직접 생성된 구독)이 포함됩니다.
  • 공유 주제는 Data Catalog에서 색인이 생성되지만 해당 리소스 유형을 특별히 필터링할 수는 없습니다.
  • Analytics Hub에 연결된 Pub/Sub 구독에 대한 사용량 측정항목이 캡처되지 않습니다. Pub/Sub에서 사용량 측정항목을 볼 수 있습니다.

Analytics Hub API 사용 설정

Analytics Hub API를 사용 설정하려면 다음 단계를 따르세요.

콘솔

API 라이브러리로 이동하여 Google Cloud 프로젝트에 Analytics Hub API를 사용 설정합니다.

Analytics Hub API 사용 설정

gcloud

gcloud services enable 명령어를 실행합니다.

gcloud services enable analyticshub.googleapis.com

Pub/Sub API 사용 설정

API 라이브러리로 이동하여 Google Cloud 프로젝트에 대해 Pub/Sub API를 사용 설정합니다.

Pub/Sub API 사용 설정

게시자 워크플로

Analytics Hub 게시자는 다음을 수행할 수 있습니다.

  • 목록을 만들어 공유 주제를 교환에 추가하기
  • 목록 업데이트
  • 목록 삭제
  • 목록 공유
  • 목록 구독 관리
  • 목록에서 구독자 삭제

추가 게시자 권한

게시자 작업을 수행하려면 교환 또는 목록에 대한 Analytics Hub 게시자 역할(roles/analyticshub.publisher)이 있어야 합니다. 액세스 권한이 있는 조직의 모든 프로젝트에서 모든 데이터 교환을 보려면 resourcemanager.organizations.get 권한이 있어야 합니다.

또한 나열하려는 Pub/Sub 주제에 대한 pubsub.topics.setIamPolicy 권한이 필요합니다. 연결된 스키마가 있는 주제를 공유하려면 Analytics Hub 구독자에게 주제에 연결된 스키마에 대한 pubsub.schemas.get 권한을 부여해야 합니다. 이렇게 하면 Analytics Hub 구독자가 Pub/Sub 구독에서 메시지를 올바르게 파싱할 수 있습니다.

목록 만들기(공유 주제 추가)

목록에 공유 주제를 추가하려면 다음 옵션 중 하나를 선택합니다.

콘솔

  1. Analytics Hub 페이지로 이동합니다.

    Analytics Hub로 이동

    액세스할 수 있는 모든 데이터 교환이 나열된 페이지가 표시됩니다.

  2. 목록을 만들려는 데이터 교환 이름을 클릭합니다.

  3. 목록 만들기를 클릭합니다.

  4. 목록 만들기 페이지의 리소스 유형 드롭다운에서 'Pub/Sub 주제'를 선택합니다.

  5. 공유 주제 드롭다운에서 기존 Pub/Sub 주제를 선택하거나 주제 만들기를 클릭합니다.

  6. 등록정보 세부정보 페이지의 표시 이름에 목록 이름을 입력합니다.

  7. 다음 선택적 세부정보를 입력합니다.

    • 카테고리: 목록을 가장 잘 나타내는 최대 2개의 카테고리를 선택하세요. 구독자는 이러한 카테고리를 기준으로 목록을 필터링할 수 있습니다.

    • 데이터 어피니티: 게시자가 데이터를 게시하는 데 사용하는 리전입니다. 이 정보는 구독자가 동일한 리전에서 데이터를 읽어 Pub/Sub 네트워크 이그레스 비용을 최소화하거나 방지하는 데 유용합니다. 이그레스 비용에 대한 자세한 내용은 데이터 전송 비용을 참조하세요.

    • 아이콘: 목록의 아이콘입니다. PNG 및 JPEG 파일 형식이 지원됩니다. 아이콘의 파일 크기는 512KiB 미만이고 크기는 512 x 512픽셀 이하여야 합니다.

    • 설명: 목록에 대한 간단한 설명입니다. 구독자는 설명을 기반으로 목록을 검색할 수 있습니다.

    • 공개 검색 가능 여부: Analytics Hub 카탈로그에서 목록의 공개 검색 가능성을 사용 설정합니다. 목록에 대한 권한도 설정해야 합니다. 교환의 작업을 클릭하고 권한 설정을 클릭합니다. allUsers 또는 allAuthenticatedusersAnalytics Hub 뷰어 역할을 부여합니다. 공개 액세스 허용을 클릭합니다.

    • 문서 > 마크다운: 관련 문서 링크 및 구독자가 주제를 사용하는 데 도움이 되는 추가 정보와 같은 추가 정보입니다.

  8. 등록정보 연락처 정보 페이지에서 다음 선택적인 세부정보를 입력합니다.

    • 기본 연락처: 목록에 대한 기본 연락처의 이메일 또는 URL을 입력합니다.

    • 액세스 연락처 요청: 구독자가 연락하려면 접수 양식의 이메일 또는 URL을 입력해야 합니다.

    • 제공업체: 제공업체 섹션을 펼치고 다음 필드에 세부정보를 지정합니다.

      • 제공업체 이름: 주제 제공업체의 이름입니다.
      • 제공업체 기본 연락처: 이메일 또는 주제 제공업체의 기본 연락처 URL입니다.

      구독자는 데이터 제공업체를 기준으로 목록을 필터링할 수 있습니다.

    • 게시자: 게시자 섹션을 펼치고 다음 필드에 세부정보를 지정합니다.

      • 게시자 이름: 목록을 만들려는 게시자의 이름입니다.
      • 게시자 기본 연락처: 주제 게시자 기본 연락처의 이메일 또는 URL입니다.
  9. 등록정보 미리보기 페이지를 검토합니다.

  10. 게시를 클릭합니다.

API

projects.locations.dataExchanges.listings.create 메서드를 사용합니다.

POST https://analyticshub.googleapis.com/v1/projects/PROJECT_ID/location/LOCATION/dataExchanges/DATAEXCHANGE_ID/listings?listingId=LISTING_ID

다음을 바꿉니다.

  • PROJECT_ID: 목록을 만들려는 데이터 교환이 포함된 프로젝트 ID
  • LOCATION: 데이터 교환 위치. Analytics Hub를 지원하는 위치에 대한 자세한 내용은 지원되는 리전을 참조하세요.
  • DATAEXCHANGE_ID: 데이터 교환 ID
  • LISTING_ID: 목록 ID

요청 본문에 목록 세부정보를 제공합니다. 요청이 성공하면 응답 본문에 목록 세부정보가 포함됩니다.

API를 사용하여 목록에 수행할 수 있는 작업에 대한 상세 설명은 projects.locations.dataExchanges.listings 메서드를 참조하세요.

목록 업데이트

목록을 업데이트하려면 다음 옵션 중 하나를 선택합니다.

콘솔

  1. Analytics Hub 페이지로 이동합니다.

    Analytics Hub로 이동

  2. 목록이 포함된 데이터 교환 이름을 클릭합니다.

  3. 업데이트할 목록을 클릭합니다.

  4. 목록 수정을 클릭합니다.

  5. 필드의 값을 수정합니다. 목록의 공유 주제를 제외한 모든 값을 수정할 수 있습니다.

  6. 변경사항을 저장하려면 게시를 클릭합니다.

API

projects.locations.dataExchanges.listings.patch 메서드를 사용합니다.

PATCH https://analyticshub.googleapis.com/v1/projects/PROJECT_ID/location/LOCATION/dataExchanges/DATAEXCHANGE_ID/listings/LISTING_ID?updateMask=UPDATEMASK

다음을 바꿉니다.

  • PROJECT_ID: 목록을 만들려는 데이터 교환이 포함된 프로젝트 ID
  • LOCATION: 데이터 교환 위치. Analytics Hub를 지원하는 위치에 대한 자세한 내용은 지원되는 리전을 참조하세요.
  • DATAEXCHANGE_ID: 데이터 교환 ID
  • LISTING_ID: 목록 ID
  • UPDATEMASK: 업데이트할 필드의 목록입니다. 여러 값을 업데이트하려면 쉼표로 구분된 목록을 사용합니다.

요청 본문에서 업데이트된 값을 지정합니다.

API를 사용하여 목록에 수행할 수 있는 작업에 대한 상세 설명은 projects.locations.dataExchanges.listings 메서드를 참조하세요.

목록 삭제

공유 Pub/Sub 주제가 있는 목록은 활성 구독이 있는 목록을 삭제할 수 없습니다. 공유 주제 목록을 삭제하기 전에 모든 활성 구독을 취소하세요. 목록을 삭제한 후에는 실행취소할 수 없습니다. 목록을 삭제하려면 다음 옵션 중 하나를 선택합니다.

콘솔

  1. Analytics Hub 페이지로 이동합니다.

    Analytics Hub로 이동

  2. 목록이 포함된 데이터 교환 이름을 클릭합니다.

  3. 삭제할 목록을 클릭합니다.

  4. 삭제를 클릭합니다.

  5. 목록을 삭제하시겠습니까? 대화상자에서 delete를 입력하여 삭제를 확인합니다.

  6. 삭제를 클릭합니다.

API

projects.locations.dataExchanges.listings.delete 메서드를 사용합니다.

DELETE https://analyticshub.googleapis.com/v1/projects/PROJECT_ID/location/LOCATION/dataExchanges/DATAEXCHANGE_ID/listings/LISTING_ID

다음을 바꿉니다.

  • PROJECT_ID: 목록을 만들려는 데이터 교환이 포함된 프로젝트 ID
  • LOCATION: 데이터 교환 위치. Analytics Hub를 지원하는 위치에 대한 자세한 내용은 지원되는 리전을 참조하세요.
  • DATAEXCHANGE_ID: 데이터 교환 ID
  • LISTING_ID: 목록 ID

API를 사용하여 목록에 수행할 수 있는 작업에 대한 상세 설명은 projects.locations.dataExchanges.listings 메서드를 참조하세요.

목록 공유

사용자에게 비공개 목록에 대한 액세스 권한을 부여하려면 해당 목록의 개인 또는 그룹에 IAM 정책을 설정해야 합니다. 상업용 목록의 경우 데이터 교환이 공개 상태여야 합니다. 공개 데이터 교환의 목록은 Analytics Hub에 모든 Google Cloud 사용자(allAuthenticatedUsers)에게 표시됩니다. 사용자가 상용 목록에 대한 액세스를 요청할 수 있도록 하려면 Analytics Hub 뷰어 역할을 사용자에게 부여해야 합니다.

사용자에게 목록을 보거나 구독할 수 있는 액세스 권한을 부여하려면 다음 단계를 따르세요.

  1. Analytics Hub 페이지로 이동합니다.

    Analytics Hub로 이동

  2. 목록이 포함된 데이터 교환 이름을 클릭합니다.

  3. 구독자를 추가할 목록을 클릭합니다.

  4. 권한 설정을 클릭합니다.

  5. 주 구성원을 추가하려면 주 구성원 추가를 클릭합니다.

  6. 새 주 구성원 필드에 목록 유형에 따라 다음 세부정보를 추가합니다.

    • 비공개 목록의 경우 액세스 권한을 부여할 ID의 이메일을 입력합니다.
    • 공개 목록의 경우 allAuthenticatedUsers를 추가합니다.
  7. 역할 선택에서 Analytics Hub 위에 마우스 포인터를 올려놓고 목록 유형에 따라 다음 역할 중 하나를 선택합니다.

    • 상업용 목록의 경우 Analytics Hub 뷰어 역할을 선택합니다. 이 역할을 통해 사용자는 목록을 보고 액세스를 요청할 수 있습니다.
    • 비공개 또는 비상업적 공개 목록의 경우 Analytics Hub 구독자 역할을 선택합니다. 이 역할을 통해 사용자는 목록을 구독할 수 있습니다.
  8. 저장을 클릭합니다.

자세한 내용은 Analytics Hub 구독자 및 뷰어 역할을 참조하세요.

구독 관리

사용자가 공유 주제가 있는 목록을 구독할 수 있도록 하려면 특정 목록에 대한 Analytics Hub 구독자(roles/analyticshub.subscriber) 및 Analytics Hub 구독 소유자(roles/analyticshub.subscriptionOwner) 역할을 부여합니다.

  1. Analytics Hub 페이지로 이동합니다.

    Analytics Hub로 이동

  2. 구독을 관리하려는 목록이 포함된 데이터 교환 이름을 클릭합니다.

  3. 모든 구독자를 나열할 목록을 클릭합니다.

  4. 권한 설정을 클릭합니다.

  5. 주 구성원을 추가하려면 주 구성원 추가를 클릭합니다.

  6. 새 주 구성원 필드에 추가할 구독자의 사용자 이름 또는 이메일을 입력합니다.

  7. 역할 선택에서 Analytics Hub > Analytics Hub 구독자를 선택합니다.

  8. 다른 역할 추가를 클릭합니다.

  9. 역할 선택Analytics Hub > Analytics Hub 구독 소유자를 선택합니다.

  10. 저장을 클릭합니다.

권한 설정을 클릭하면 언제든지 구독자를 삭제하고 업데이트할 수 있습니다.

정기 결제 취소

Analytics Hub에서 공유 주제 목록 구독을 삭제하려면 다음 옵션 중 하나를 선택합니다.

콘솔

  1. 목록의 모든 구독자를 나열하려면 모든 구독 보기의 Google Cloud 콘솔 안내를 따르세요.

  2. 데이터 교환에 대한 모든 구독을 보려면 구독 탭을 클릭합니다.

  3. 삭제하려는 구독 옆의 체크박스를 선택하거나 모든 구독을 선택합니다.

  4. 구독을 취소하시겠어요? 대화상자에서 취소를 입력하여 확인합니다.

  5. 취소를 클릭합니다.

API

구독을 삭제하려면 projects.locations.subscriptions.revoke 메서드를 사용합니다.

POST https://analyticshub.googleapis.com/v1/projects/PROJECT_ID/location/LOCATION/subscriptions/SUBSCRIPTION_ID:revoke

다음을 바꿉니다.

  • PROJECT_ID: 삭제하려는 구독의 프로젝트 ID
  • LOCATION: 구독의 위치
  • SUBSCRIPTION_ID: 삭제하려는 구독의 ID

Analytics Hub에서 구독을 취소하면 구독자가 더 이상 공유 주제에서 메시지 데이터를 수신하지 않습니다. Pub/Sub 구독이 공유 주제에서 분리됩니다. Pub/Sub에서 직접 구독을 삭제하면 Analytics Hub 구독이 유지되므로 삭제해야 합니다.

구독자 워크플로

Analytics Hub 구독자는 목록을 보고 구독할 수 있습니다. 공유 주제 목록을 구독하면 구독자 프로젝트에 연결된 Pub/Sub 구독이 하나 생성됩니다. Pub/Sub 구독이 게시자의 프로젝트에 표시됩니다.

추가 구독자 권한

구독자 작업을 수행하려면 프로젝트, 교환 또는 목록 수준에 Analytics Hub 구독자(roles/analyticshub.subscriber) 역할이 있어야 합니다.

공유 주제 목록 구독

공유 주제가 포함된 목록을 구독하려면 다음 옵션 중 하나를 선택합니다.

콘솔

  1. 액세스 권한이 있는 목록을 보려면 목록 보기 단계를 따르세요.

  2. 목록을 찾아보고 구독하려는 목록을 클릭합니다. 목록의 세부정보가 포함된 대화상자가 나타납니다.

  3. 구독을 클릭하여 구독 만들기 대화상자를 엽니다.

  4. 프로젝트에서 Analytics Hub API를 사용 설정하지 않은 경우 API를 사용 설정할 수 있는 링크와 함께 오류 메시지가 표시됩니다. Analytics Hub API 사용 설정을 클릭합니다.

  5. 구독 만들기 대화상자에서 다음 세부정보를 지정합니다.

    • 구독 ID: 만들려는 구독의 이름을 지정합니다.
    • 전송 유형: 메시지 데이터 전송 방법에 대한 메커니즘을 선택합니다.
    • 메시지 보관 기간: 메시지 보관 기간을 설정합니다.
    • 만료 기간: 활동이 없으면 구독이 만료되는 시간으로 설정합니다.
    • 확인 기한: 확인 기한을 설정합니다.
    • 구독 필터: 메시지의 필터 문법을 설정합니다.
    • 1회만 전송: 1회만 전송을 사용 설정합니다.
    • 메시지 순서: 순서 키로 메시지의 순서를 지정합니다.
    • 데드 레터 처리: 데드 레터 처리를 사용 설정합니다.
    • 재시도 정책: 재시도 정책을 설정합니다.

    Pub/Sub 구독 속성에 대한 자세한 내용은 구독 속성을 참조하세요.

  6. 변경사항을 저장하려면 만들기를 클릭합니다. 연결된 Pub/Sub 구독이 프로젝트에 생성됩니다.

API

projects.locations.dataExchanges.listings.subscribe 메서드를 사용합니다.

POST https://analyticshub.googleapis.com/v1/projects/PROJECT_ID/location/LOCATION/dataExchanges/DATAEXCHANGE_ID/listings/LISTING_ID:subscribe

다음을 바꿉니다.

  • PROJECT_ID: 구독하려는 목록의 프로젝트 ID입니다.
  • LOCATION: 구독하려는 목록의 위치입니다.
  • DATAEXCHANGE_ID: 구독하려는 목록의 데이터 교환 ID입니다.
  • LISTING_ID: 구독하려는 목록 ID입니다.

요청 본문에서 연결된 Pub/Sub 구독을 만들려는 Pub/Sub 구독을 지정합니다. 성공한 경우 응답 본문은 비어 있습니다.

Pub/Sub 구독에 대한 자세한 내용은 구독 개요를 참조하세요.

가격 책정

Pub/Sub 주제 게시자가 Analytics Hub를 통해 주제를 나열하고 공유하는 데 추가 비용이 부과되지 않습니다. 게시자에게는 공유 주제 및 네트워크 이그레스에 기록된 총 바이트 수(게시 처리량)에 대한 요금이 청구됩니다(해당하는 경우). 구독자에게는 연결된 구독에서 읽은 총 바이트 수(구독 처리량)와 네트워크 이그레스에 대한 요금이 청구됩니다(해당하는 경우). 자세한 내용은 Pub/Sub 가격 책정을 참조하세요.

VPC 서비스 제어

VPC 서비스 제어 경계가 있는 프로젝트의 공유 주제의 경우 게시자와 구독자에게 액세스 권한을 부여하는 데 필요한 적절한 인그레스 및 이그레스 규칙을 설정할 수 있습니다.