60개가 넘는 Google Cloud 소스에서 발생하는 이벤트로 Cloud Run 트리거하기
Mete Atamel
Cloud Developer Advocate
Prashant Gulati
Product Manager
* 본 아티클의 원문은 2020년 10월 30일 Google Cloud 블로그(영문)에 게재되었습니다.
완전 관리형 Cloud Run을 사용하면 확장 및 확대 가능한 마이크로서비스 기반 애플리케이션을 만들 수 있습니다. 하지만 분리된 마이크로서비스 간에 이벤트 기반의 커뮤니케이션을 설정하려면 까다로운 구현, 맞춤설정, 유지관리 작업이 수반될 수 있습니다.
오늘 Google은 60개가 넘는 Google Cloud 소스로 Cloud Run을 트리거할 수 있는 새로운 이벤트 기능인 Eventarc를 발표합니다. 현재 미리보기 버전으로 제공되는 Eventarc는 이벤트 기반 애플리케이션을 보다 간편하게 빌드하는 데 도움이 되는 것은 물론 이벤트 수집, 전송, 보안, 승인, 관측 가능성, 오류 처리까지 도맡아 처리합니다.
Eventarc를 사용하면 Cloud Storage, BigQuery, Firestore를 비롯해 60개가 넘는 기타 Google Cloud 소스에서 발생하는 이벤트에 대한 조치로 동영상 분석, 파일 변환, 신규 사용자 가입, 애플리케이션 모니터링, 기타 수백 개의 중요한 사용 사례를 처리할 수 있습니다.
Eventarc의 기능:
Cloud 감사 로그를 통해 60개가 넘는 Google Cloud 소스에서 이벤트를 수신할 수 있습니다.
Pub/Sub 게시를 통해 커스텀 소스에서 이벤트를 수신할 수 있습니다. 코드로 이벤트를 보내 마이크로서비스 간에 신호를 전송할 수 있습니다.
소스에 상관없이 모든 이벤트에 대해 CloudEvents 표준을 준수하여 일관된 개발자 환경을 보장할 수 있습니다.
요청 시 확장이 가능하며 최소 수수료가 없습니다.
이 서비스는 5곳의 Google Cloud 위치에서 사용할 수 있으며 향후 서비스 제공 지역이 추가될 예정입니다. 자체 API 및 CLI는 물론 Cloud Run의 UI로도 액세스할 수 있습니다.
주요 사용 사례
Eventarc는 Cloud Run에서 실행되는 애플리케이션을 모두 지원하므로 사용 사례가 수없이 많지만 그중 몇 가지를 소개하면 다음과 같습니다.
Cloud 감사 로그를 통해 Cloud Storage 이벤트를 사용하여 데이터 처리 파이프라인을 트리거합니다.
Cloud 감사 로그를 통해 BigQuery 이벤트를 사용하여 작업이 완료될 때마다 Cloud Run에서 다운스트림 처리를 시작합니다.
커스텀 소스의 이벤트를 사용(Cloud Pub/Sub 게시 방식)하여 마이크로서비스 간에 신호를 보내고 모든 비동기 서비스 조정에 동일한 표준 인프라를 활용합니다.
Eventarc의 실제 작동 방식
Cloud Run은 서버리스 플랫폼에서 워크로드를 실행할 수 있도록 지원합니다. Eventarc를 Cloud Run과 함께 사용하면 이벤트 흐름을 관리하는 표준화된 인프라가 마련되므로 본연의 임무인 훌륭한 애플리케이션 빌드에 매진할 수 있습니다.
Eventarc의 실제 작동 방식을 살펴보겠습니다. Google의 데모 앱(github의 세부정보 참조)은 Cloud 감사 로그를 통해 Cloud Storage 이벤트를 다양한 서비스에 연결하는 이미지 처리 파이프라인을 빌드합니다. 입력 버킷에 이미지를 저장하면 파이프라인이 안전하지 않은 이미지를 필터링하고, 이미지에서 라벨을 추출하며, 크기를 조정한 후, 마지막으로 워터마크를 추가합니다. 최종적으로 출력 버킷에는 크기가 조정되고 워터마크와 라벨이 추가된 이미지가 저장됩니다.


하지만 파이프라인의 서비스 간에 직접적인 커뮤니케이션이 이루어지지 않기 때문에 이벤트로 서비스를 '연결'하여 조율합니다.


전체 작업 목록과 처리 순서는 github에서 확인하세요. 여기에는 이벤트와 관련된 몇 가지 주요 단계만 추려 소개합니다.
주요 단계 1: Cloud 감사 로그를 통해 Cloud Storage의 이벤트를 수신하도록 필터링 서비스에 대한 트리거 만들기


주요 단계 2: 필터링 서비스의 코드로 이벤트 처리하기
이 예시에서는 이벤트에 제공되는 세부정보가 필요합니다. 이러한 정보는 요청의 HTTP 헤더와 본문을 통해 제공되며 Google 이벤트 라이브러리와 함께 CloudEvents SDK를 사용하면 간편한 '언마셜링(즉, 압축해제)'이 가능합니다. 이 예시에서는 C# 언어를 사용합니다.
CloudEvents SDK를 사용하여 이벤트를 읽습니다.
주요 단계 3: Cloud Pub/Sub 쓰기를 통해 크기 조절 서비스에 신호 보내기
필터링 서비스는 크기 조절 서비스의 트리거에서 관리하는 Pub/Sub 주제에 쓰기를 수행하여 크기 조절 서비스에 신호를 보냅니다.
이제 이미지 처리 파이프라인이 완성되었습니다. 이 파이프라인은 표준 Google Cloud 도구를 통해 연결된 이벤트를 사용하여 Cloud Storage 버킷을 여러 서비스에 연결합니다.
다음 단계
Eventarc와 Cloud Run을 함께 사용하면 기본 인프라를 관리하지 않고도 표준화된 이벤트 기반 아키텍처를 손쉽게 빌드할 수 있습니다. 하지만 이것은 시작에 불과합니다. 앞으로도 Google에서 Eventarc를 Google Cloud를 위한 모든 기능을 갖춘 이벤트 제품군으로 발전시키는 과정을 지켜봐 주시기 바랍니다. Cloud Run과 이벤트를 함께 사용하는 방법을 자세히 알아보려면 이 Next 2020 강연을 들어보세요. 시작하려면 빠른 시작 가이드를 따르세요.



