Skip to main content

[Tech 036] Eventarc로 구성하는 이벤트 기반 아키텍처

안녕하세요, 클루커스 구글 클라우드 컨설턴트 오지수, 박보련입니다.

이벤트 기반 아키텍처(Event-Driven Architecture)는 분리된 여러 서비스들 간의 독립적인 관계를 형성하고, 그 안에서 발생하는 이벤트를 비동기적으로 처리하기 위해 설계되었습니다. 이런 구조는 각 서비스의 재사용성을 보장하고 필요에 따라 더 손쉬운 어플리케이션 변경 및 확장이 가능합니다. Eventarc 는 이런 이벤트 중심 서비스 구성을 돕는 Google Cloud 의 서비스입니다.

[이벤트 기반 아키텍처 활용 예시]

  • 애플리케이션의 비정상적인 동작이나 리소스 변경 사항을 이벤트를 사용하여 경고할 수 있습니다.
  • 단일 이벤트를 여러 소비자에게 병렬로 보내는 데에도 효과적입니다.
  • 독립성을 유지하면서 다양한 기술 스택 간의 상호 운용성을 제공할 수 있습니다.
  • 개발팀의 시스템 관리 부담을 줄일 수 있습니다

이번 포스팅에서는 Google Cloud 의 Eventarc 를 소개하고 어떻게 활용하면 좋을지 살펴보겠습니다

Eventarc 는 이벤트가 발생했을 시, 이벤트에 대한 작업을 수행할 수 있는 서비스를 호출할 수 있게 해주는 Google Cloud 내의 통합 이벤트 시스템입니다. 이때, Eventarc 는 CloudEvents 형식으로 타겟 서비스에 이벤트 메세지를 전달하게 되는데요. 표준화 된 형태로 이벤트가 전달되기 때문에, 개발자가 이벤트를 처리할 때 들이는 노력을 줄일 수 있는 것도 장점입니다

  • Cloud Functions, Cloud Run, GKE 와 같은 타겟 대상은 HTTP 형식의 이벤트를 사용
  • Workflows 서비스는 이벤트를 JSON 개체 로 변환 하고 해당 이벤트를 런타임 인수로 Workflow execution 에 전달

Google Cloud 환경에서는 Cloud Run 과 함께 Pub/Sub 사용 튜토리얼 에서 언급된것처럼, Eventarc 를 사용하지 않고도 Pub/Sub 주제에 메세지를 푸시하고, 이벤트를 대상 서비스로 보낼 수 있었을 텐데요. 그렇다면, Eventarc 를 사용하면 가장 편리한 점이 무일까요?

Eventarc 는 감사로그와 lPub/Sub 통합을 기반으로 하는 서비스이므로 Pub/Sub 주제에 메시지를 보낼 수 있는 모든 애플리케이션을 포함하여 감사 로그가 통합된 모든 서비스는 Eventarc 의 이벤트 소스가 될 수 있습니다. 또한, Eventarc 는 트리거를 통해서 라우팅 규칙을 지정하는데요. 간단한 지정만으로도 이벤트를 대상지로 전달 할 수 있을 뿐만 아니라, 중앙 위치에서 모든 트리거를 나열하고 관리할 수 있습니다. 즉, 이벤트 허브로써 기능할 수 있는것이죠. 마지막으로 Eventarc 의 실제 구조를 살펴보면, Pub/Sub 전송[1]을 기반으로 하고 있음을 알 수 있는데요. 주목 할 점은 게시되는 메세지[2]의 컨텐츠는 발생한 이벤트의 세부사항에 중점을 두고있기 때문에, 메세지의 구독자가 수행해야 할 작업을 명시하지 않습니다. 그렇기 때문에, Pub/Sub 모델에서는 생산자가 수행되는 작업만 이해하면 되고 다운스트림 프로세스는 이해할 필요가 없도록 비즈니스 로직을 분리할 수 있습니다.

이 외에도, Eventarc 는 Pub/Sub 과 달리 주제와 구독을 자동으로 생성하고 관리할 수 있고, 사용자는 설정하거나 유지 관리할 클러스터가 없는 관리형 서비스로써 Eventarc 를 사용할 수 있습니다.
(*기존 Pub/Sub 주제도 사용할 수 있습니다.)

Google Cloud 서비스는 중요한 이벤트를 추적하기 위해 감사 로그를 기록하고 있는데요. 이 이벤트 들을 개발자가 모두 처리하기엔 상당한 노력이 필요합니다. 이때, Eventarc 를 활용해보시기를 바랍니다. Eventarc 를 도입하면 트리거를 사용하여 간단하게 라우팅 규칙을 정의하고, 표준화된 형태로 이벤트를 전송 가능하며, 애플리케이션은 이러한 이벤트를 쉽게 선택하고 수집 및 처리할 수 있습니다

Reference

이벤트 기반 아키텍처를 설계에 대한 도움이 필요하시다면 클루커스와 함께 시작해보세요 😊

Secured By miniOrange