Eventarc 개요

Eventarc를 사용하면 기본 인프라를 구현, 맞춤설정 또는 유지관리할 필요 없이 이벤트 기반 아키텍처를 빌드할 수 있습니다. Eventarc는 분리된 마이크로서비스 간에 상태 변경 흐름(이벤트라고 함)을 관리하는 표준화된 솔루션을 제공합니다. 트리거된 Eventarc는 전송, 보안, 승인, 관측 가능성, 오류 처리를 관리하면서 이러한 이벤트를 다양한 대상(이 문서의 이벤트 대상 참조)으로 라우팅합니다.

Google Cloud 콘솔, gcloud CLI를 사용하는 명령줄 또는 Eventarc API를 통해 Eventarc를 관리할 수 있습니다.

Eventarc는 이러한 인증 및 표준을 준수합니다.

Eventarc는 이벤트 제공자에서 이벤트 대상으로 이벤트를 라우팅합니다.
그림 1. Eventarc는 이벤트 제공자에서 이벤트 대상으로 이벤트를 라우팅합니다(확대하려면 다이어그램 클릭).

1 Google 제공자의 이벤트는 소스(예: Cloud Storage)에서 직접 또는 Cloud 감사 로그 항목을 통해 전송되며 Pub/Sub를 전송 계층으로 사용합니다. Pub/Sub 소스의 이벤트는 기존 Pub/Sub 주제를 사용하거나 Eventarc에서 자동으로 주제를 생성하고 관리합니다.

2 GKE 클러스터에서 실행되는 Knative serving 서비스를 포함한 Google Kubernetes Engine(GKE) 대상의 이벤트는 Eventarc의 이벤트 전달자를 사용해 Pub/Sub에서 새 이벤트를 가져와 대상으로 전달합니다. 이 구성요소는 Pub/Sub 전송 계층과 대상 서비스 사이에서 중재자 역할을 합니다. 기존 서비스에서 작동하고 신호 서비스(완전 관리형 클러스터의 외부에 노출되지 않은 서비스 포함)를 지원하면서 설치 및 유지보수를 간소화합니다. 이벤트 전달자 수명 주기는 Eventarc에서 관리되며 이벤트 전달자를 실수로 삭제하면 Eventarc에서 이 구성요소를 복원합니다.

3 워크플로 실행 이벤트는 전송되어 런타임 인수로 워크플로에 전달됩니다. Workflows는 정의한 순서대로 Google Cloud 및 HTTP 기반 API 서비스를 결합하고 조정할 수 있습니다.

4 Cloud Functions(2세대)의 모든 이벤트 기반 함수는 Eventarc 트리거를 사용하여 이벤트를 전달합니다. Cloud Functions 인터페이스를 사용하여 Cloud 함수를 배포할 때 Eventarc 트리거를 구성할 수 있습니다.

주요 사용 사례

Eventarc는 대상 애플리케이션의 여러 사용 사례를 지원합니다. 다음은 몇 가지 예시입니다.

구성 및 모니터링
  • 시스템 구성: 시작될 때 새 VM에 구성 관리 도구를 설치합니다.
  • 자동화된 구제 조치: 서비스가 올바르게 응답하지 않는지 감지하고 자동으로 다시 시작합니다.
  • 경고 및 알림: 암호화폐 지갑 주소의 균형을 모니터링하고 알림을 트리거합니다.
조정
  • 디렉터리 등록: 신규 직원이 입사할 때 직원 배지를 활성화합니다.
  • 데이터 동기화: 잠재고객이 CRM 시스템에서 변환될 때 회계 워크플로를 트리거합니다.
  • 리소스 라벨 지정: VM이 만들어질 때 VM 생성자에 라벨을 지정하고 식별합니다.
분석
  • 감정 분석: Cloud Natural Language API를 사용하여 고객 서비스 티켓이 완료되면 해당 고객 만족도 점수에 연결하는 ML 모델을 학습시키고 배포합니다.
  • 이미지 수정 및 분석: 소매업체가 객체 저장소에 이미지를 추가할 때 배경을 삭제하고 이미지를 자동으로 분류합니다.

이벤트

이벤트는 일치하는 항목과 해당 컨텍스트를 나타내는 데이터 레코드입니다. 이벤트는 다른 이벤트와 별개로 커뮤니케이션의 개별 단위입니다. 예를 들어 이벤트는 데이터베이스의 데이터 변경, 스토리지 시스템에 추가된 파일, 예약된 작업일 수 있습니다.

Eventarc에서 지원되는 이벤트 유형을 참조하세요.

이벤트 제공업체

이벤트는 이벤트 제공업체(소스)에서 관심 있는 이벤트 소비자로 라우팅됩니다. 라우팅은 이벤트에 포함된 정보를 기반으로 수행되지만 이벤트는 특정 라우팅 대상을 식별하지 않습니다. Eventarc에서는 다음 제공자의 이벤트를 지원합니다.

  • 130개가 넘는 Google Cloud 제공자. 이 제공자는 소스에서 직접 또는 Cloud 감사 로그 항목을 통해 이벤트(예: Cloud Storage 버킷의 객체 또는 Pub/Sub 주제에 게시된 메시지 업데이트)를 전송합니다.
  • 서드 파티 제공자. 이 제공자는 소스(예: Datadog 또는 Check Point CloudGuard 플랫폼과 같은 서드 파티 SaaS 제공업체)에서 직접 이벤트를 전송합니다.

이벤트 대상

이벤트는 Pub/Sub 푸시 구독을 통해 이벤트 수신자(또는 소비자)라고 하는 특정 대상으로 라우팅됩니다.

Cloud Functions(2세대)

Cloud Functions(2세대)의 모든 이벤트 기반 함수는 Eventarc 트리거를 사용하여 이벤트를 전달합니다. Eventarc 트리거를 통해 Eventarc에서 지원되는 이벤트 유형으로 함수를 트리거할 수 있습니다. Cloud Functions 인터페이스를 사용하여 Cloud 함수를 배포할 때 Eventarc 트리거를 구성할 수 있습니다.

Cloud Run

Cloud Run에 배포할 수 있는 이벤트 수신자 서비스를 빌드하는 방법에 대해 알아보세요.

이벤트를 Cloud Run 서비스로 라우팅하는 최선의 방법을 결정하려면 이벤트 라우팅 옵션을 참조하세요.

GKE

Eventarc에서는 Google Kubernetes Engine(GKE) 서비스를 대상으로 하는 트리거 생성을 지원합니다. 여기에는 GKE 클러스터에서 실행되는 비공개 및 공개 서비스의 공개 엔드포인트가 포함됩니다.

  • Eventarc가 특정 클러스터에서 서비스를 대상으로 지정하고 관리하려면 Eventarc 서비스 계정에 필요한 권한을 부여해야 합니다.

  • 대상 서비스가 실행 중인 GKE 클러스터에서 워크로드 아이덴티티를 사용 설정해야 합니다. 워크로드 아이덴티티는 이벤트 전달자를 올바르게 설정하는 데 필요하며 향상된 보안 속성과 관리 편의성으로 인해 GKE 내에서 실행되는 애플리케이션에서 Google Cloud 서비스에 액세스하는 데 권장되는 방식입니다. 자세한 내용은 워크로드 아이덴티티 사용 설정을 참조하세요.

VPC 네트워크의 내부 HTTP 엔드포인트

가상 프라이빗 클라우드(VPC) 네트워크의 내부 HTTP 엔드포인트에 대한 이벤트 라우팅을 구성할 수 있습니다. 트리거를 구성하려면 네트워크 연결 ID도 제공해야 합니다. 자세한 내용은 이벤트를 VPC 네트워크의 내부 HTTP 엔드포인트로 라우팅을 참조하세요.

Workflows

워크플로 실행은 다음에 의해 트리거됩니다.

  • 메시지가 Pub/Sub 주제에 게시되는 경우
  • 트리거의 필터 기준과 일치하는 감사 로그가 생성되는 경우
  • Cloud Storage 버킷의 객체 업데이트와 같은 미디에이션되지 않은 이벤트에 대한 응답

Workflows를 사용하려면 Eventarc 트리거에서 워크플로 실행을 호출하는 데 사용할 IAM 서비스 계정 이메일이 필요합니다. 필요한 리소스에 액세스하는 데 필요한 최소 권한이 포함된 서비스 계정을 사용하는 것이 좋습니다. 자세한 내용은 서비스 계정 만들기 및 관리를 참조하세요.

이벤트 형식 및 라이브러리

Eventarc는 제공자에 관계없이 바이너리 콘텐츠 모드에서 HTTP 요청을 사용하여 이벤트를 CloudEvents 형식으로 타겟 대상에 전달합니다. CloudEvents는 이벤트 메타데이터를 일반적인 방식으로 설명하기 위한 사양으로 Cloud Native Computing Foundation에 속하며 재단의 서버리스 작업 그룹별로 구성됩니다.

이벤트 제공자에 따라 이벤트 페이로드 데이터의 인코딩을 application/json 또는 application/protobuf로 지정할 수 있습니다. 프로토콜 버퍼(또는 Protobuf)는 구조화된 데이터를 직렬화하는 데 사용되는 언어 및 플랫폼 중립적인 확장 가능한 메커니즘입니다. 다음에 유의하세요.

  • 커스텀 소스 또는 서드 파티 제공자 또는 Pub/Sub의 직접 이벤트에서는 이 형식 지정 옵션이 지원되지 않습니다.
  • JSON으로 형식이 지정된 이벤트 페이로드는 Protobuf로 형식이 지정된 이벤트 페이로드보다 큽니다. 그로 인해 이벤트 대상 및 이벤트 크기 한도에 따라 안정성에 영향을 미칠 수 있습니다. 자세한 내용은 알려진 문제를 참조하세요.

Cloud Functions, Cloud Run, GKE와 같은 타겟 대상은 HTTP 형식의 이벤트를 소비합니다. Workflows 대상의 경우, Workflows 서비스는 이벤트를 JSON 객체로 변환하고 이벤트를 런타임 인수로 워크플로 실행으로 전달합니다.

이벤트 메타데이터를 설명하는 표준적인 방법을 사용하여 일관성, 접근성, 이동성을 보장합니다. 이벤트 소비자는 이러한 이벤트를 직접 읽을 수 있으며 여러분은 C#, Go, 자바, Node.js, Python 등 다양한 언어로 Google CloudEvents SDK 및 라이브러리를 사용하여 이벤트를 읽고 파싱할 수 있습니다.

Eventarc는 CloudEvents 형식으로 이벤트를 전달합니다. 이벤트를 직접 읽거나 Google CloudEvents SDK 또는 라이브러리를 사용하여 이벤트를 파싱할 수 있습니다.
그림 2. Eventarc는 CloudEvents 형식의 이벤트를 이벤트 대상에 전달합니다. 이벤트를 직접 읽거나 Google CloudEvents SDK 또는 라이브러리를 사용하여 이벤트를 읽고 파싱할 수 있습니다.

모든 이벤트의 HTTP 본문 구조는 Google CloudEvents GitHub 저장소에서 제공합니다.

하위 호환성

Eventarc에서는 다음과 같은 속성 및 필드를 추가하면 하위 호환이 된다고 간주됩니다.

  • 선택적 필터링 속성 또는 출력 전용 속성
  • 이벤트 페이로드에 대한 선택적 필드

Eventarc 트리거

이벤트는 타겟 대상이 이벤트에 반응하는지 여부에 관계없이 발생합니다. 사용자는 트리거를 사용하여 이벤트에 대한 응답을 만들 수 있습니다. 트리거란 특정 이벤트 또는 이벤트 모음에 관심이 있음을 나타내는 선언입니다. 트리거를 만들 때 이벤트 소스에서 타겟 대상으로의 이벤트 라우팅을 포함하여 특정 이벤트를 캡처하고 조치를 취할 수 있는 트리거의 필터를 지정합니다. 자세한 내용은 트리거 리소스의 REST 표현이벤트 제공자 및 대상을 참조하세요.

Eventarc용으로 생성된 Pub/Sub 구독은 활동과 관계없이 유지되며 만료되지 않습니다. 구독 속성을 변경하려면 구독 속성을 참조하세요.

Eventarc에서는 다음 이벤트 유형의 트리거를 지원합니다.

Cloud 감사 로그(CAL) 이벤트
설명Cloud 감사 로그는 클라우드 프로젝트, 폴더, 조직별로 관리자 활동 및 데이터 액세스 감사 로그를 제공합니다. Google Cloud 서비스는 이러한 로그에 항목을 작성합니다. 이 지원되는 이벤트 목록에는 serviceNamemethodName 값의 디렉터리가 포함됩니다.
이벤트 필터 유형type=google.cloud.audit.log.v1.written이 포함된 Eventarc 트리거는 트리거 필터 기준과 일치하는 감사 로그가 생성되면 서비스나 워크플로로 요청을 보냅니다.
직접 이벤트
설명Cloud Storage 버킷 업데이트, Firebase 원격 구성 템플릿 업데이트, Google Cloud 서비스의 리소스 변경과 같은 다양한 직접 이벤트에 의해 Eventarc가 트리거될 수 있습니다.

Pub/Sub 주제에 게시된 메시지로 Eventarc가 트리거될 수도 있습니다. Pub/Sub는 필요에 따라 자동으로 확장되는 전역 분산형 메시지 버스입니다. Pub/Sub 주제의 메시지로 Eventarc를 호출할 수 있으므로 Pub/Sub를 대상으로 지원하는 다른 서비스와 Eventarc를 통합할 수 있습니다.

이벤트 필터 유형특정 이벤트 필터 유형이 포함된 Eventarc 트리거는 type=google.cloud.storage.object.v1.finalized(Cloud Storage 버킷에서 객체가 생성되는 경우) 또는 type=google.cloud.pubsub.topic.v1.messagePublished(지정된 Pub/Sub 주제에 메시지가 게시되는 경우)와 같이 트리거 필터 기준과 일치하는 이벤트가 발생하면 서비스나 워크플로로 요청을 전송합니다.

트리거 위치

Cloud Storage와 같은 Google Cloud 서비스는 리전 또는 멀티 리전으로 설정할 수 있습니다. Cloud Build와 같은 일부 서비스는 전역으로 설정할 수 있습니다.

Eventarc를 사용하면 리전 트리거를 만들거나 일부 이벤트에서는 전역 트리거를 만들고 모든 리전의 이벤트를 수신할 수 있습니다. 자세한 내용은 Eventarc 위치 이해를 참조하세요.

이벤트를 생성하는 Google Cloud 서비스의 위치와 일치하도록 Eventarc 트리거의 위치를 지정하고 전역 트리거로 인한 성능 및 데이터 상주 문제를 방지해야 합니다.

각 명령어에 --location 플래그를 사용하여 트리거 위치를 지정할 수 있습니다. Cloud Run 대상의 경우 --destination-run-region 플래그를 지정하지 않으면 서비스가 트리거와 동일한 리전에 있다고 가정합니다. 자세한 내용은 Google Cloud CLI 참조를 확인하세요.

신뢰성 및 전송

예상되는 전송 시간은 다음과 같습니다.

  • Cloud 감사 로그를 사용하는 이벤트는 1분 이내에 전송됩니다. (참고로 Cloud 감사 로그 트리거는 즉시 생성되지만 트리거가 이벤트를 전파하고 필터링하는 데 최대 2분이 걸릴 수 있습니다.)
  • Pub/Sub를 사용하는 이벤트는 몇 초 이내에 전송됩니다.

순차 전달, 선입 선출 전송을 보장하지 않습니다. 엄격한 순서를 지정하면 전송 계층, Cloud Pub/Sub와 일치하는 Eventarc의 가용성 및 확장성 기능이 약화될 수 있습니다. 자세한 내용은 메시지 순서 지정을 참조하세요.

지연 시간과 처리량이 최선의 방법이며, Eventarc 트리거가 리전별, 멀티 리전별 또는 전역인지를 비롯해, 특정 서비스의 구성, Google Cloud 리전의 리소스에 대한 네트워크 로드 등 여러 가지 요소에 따라 달라집니다.

Eventarc에 일반적으로 적용되는 사용 할당량 및 한도가 있습니다. Workflows와 관련된 사용 할당량 및 한도도 있습니다.

이벤트 재시도 정책

Eventarc의 재시도 특성은 전송 계층인 Cloud Pub/Sub의 재시도 특성과 일치합니다. 자세한 내용은 재시도 요청Push 백오프를 참조하세요.

Eventarc에서 설정한 기본 메시지 보관 기간은 지수 백오프 지연이 있는 24시간입니다.

Eventarc 트리거와 연결된 Pub/Sub 구독을 통해 재시도 정책을 업데이트할 수 있습니다.

  1. 트리거 세부정보 페이지를 엽니다.
  2. 주제를 클릭합니다.
  3. 구독 탭을 클릭합니다.

Eventarc에서 자동으로 생성된 모든 구독은 projects/PROJECT_ID/subscriptions/eventarc-REGION-TRIGGER_ID-sub-SUBSCRIPTION_ID 형식을 취합니다. 구독 한도에 대한 자세한 내용은 Pub/Sub 리소스 한도를 참조하세요.

Pub/Sub에서 메시지를 전달하려고 하지만 대상에서 이를 확인하지 못하는 경우 Pub/Sub는 최소 지수 백오프 10초를 사용하여 메시지를 다시 전송합니다. 대상이 계속 메시지를 확인하지 않으면 각 재시도의 지연에 더 많은 시간(최대 600초)이 추가되고 메시지가 대상으로 다시 전송됩니다.

참고로 Workflows는 워크플로 실행이 시작되는 즉시 이벤트를 확인합니다.

데드 레터 주제

대상이 메시지를 수신하지 않으면 전달되지 않은 메시지를 데드 레터 주제(데드 레터 큐라고도 함)로 전달할 수 있습니다. 데드 레터 주제는 대상이 확인하지 못한 메시지를 저장할 수 있습니다. Pub/Sub 주제를 만들거나 Eventarc에서 Pub/Sub 주제를 만드는 경우가 아니라 Pub/Sub 구독을 만들거나 업데이트할 때 데드 레터 주제를 설정해야 합니다. 자세한 내용은 메시지 오류 처리를 참조하세요.

재시도를 보증할 수 없는 오류

애플리케이션에서 Pub/Sub를 이벤트 소스로 사용하고 이벤트가 전달되지 않으면 재시도를 보증할 수 없는 오류를 제외하고 이벤트가 자동으로 재시도됩니다. 모든 소스에서 워크플로 대상에 대한 이벤트는 워크플로가 실행되지 않으면 재시도되지 않습니다. 워크플로 실행이 시작되었지만 나중에 실패하면 실행은 재시도되지 않습니다. 이러한 서비스 문제를 해결하려면 워크플로 내에서 오류재시도를 처리해야 합니다.

중복 이벤트

중복 이벤트가 이벤트 핸들러에 전달될 수 있습니다. CloudEvents 사양에 따라 source 속성과 id 속성의 조합은 고유한 것으로 간주되므로 동일한 조합을 갖는 모든 이벤트는 중복으로 간주됩니다. 일반적인 권장사항에 따라 멱등성 이벤트 핸들러를 구현해야 합니다.

관측 가능성

Eventarc, Cloud Run, GKE, Pub/Sub, Workflows의 상세 로그는 Cloud 감사 로그에서 제공됩니다.

재해 복구

영역 및 리전을 활용하여 서비스 중단 발생 시 안정성을 확보할 수 있습니다. Eventarc를 사용할 때 백업 및 복구 시간이 RTO(복구 시간 목표) 및 RPO(목표 복구 시간) 목표를 충족하는지 확인하는 방법에 대한 자세한 내용은 클라우드 인프라 서비스 중단의 재해 복구 설계를 참조하세요.

다음 단계