해결책
서버리스 플랫폼들은 서로 다른 클라우드에서 같은 문제를 만들고 있었다. 모든 이벤트가 저마다 다른 형태를 띠고 있었던 것이다. 개발자들은 스토리지, 큐, 데이터베이스 또는 SaaS 이벤트를 소비하는 방법을 매번 다시 배워야 했고, 도구들은 맞춤형 어댑터 없이는 이벤트를 라우팅하거나 추적할 수 없었다.
CloudEvents는 모든 이벤트 본문을 표준화하는 불가능한 과제를 피했다. 대신 공통 컨텍스트 속성과 전송 바인딩을 정의하면서 페이로드는 도메인별로 유지했다. 핵심은 생산자가 비즈니스 데이터를 다시 작성하도록 강요하지 않으면서도 인프라가 작동하는 데 필요한 충분한 메타데이터를 제공하는 것이었다.
2019년 10월까지 CloudEvents는 버전 1.0에 도달했고 CNCF 샌드박스에서 인큐베이션으로 이동했다. CNCF는 AWS, Google, Microsoft, IBM, SAP, Red Hat, VMware의 지원과 기여를 언급했으며, Knative Eventing, Debezium, Kyma, Azure Event Grid를 포함한 구현체들을 나열했다.
이룬 것
이벤트가 아니라 봉투를 표준화하라
성공한 이유
필수 핵심 속성 덕분에 라우팅과 중복 제거가 벤더 간에 이식 가능해졌다.
이벤트 데이터를 그대로 둠으로써 기존 생산자의 도입 비용이 낮게 유지되었다.
프로토콜 바인딩을 통해 동일한 이벤트 모델이 HTTP, Kafka, MQTT 및 기타 전송 수단을 통해 이동할 수 있었다.
중립적인 CNCF 소속은 한 클라우드가 이벤트 문법을 소유할 것이라는 벤더의 우려를 줄였다.
페이로드가 너무 다양해 표준화할 수 없다면, 인프라가 이를 라우팅하고 검사할 수 있게 하는 가장 작은 봉투를 표준화하라.
그 후
CloudEvents는 서버리스 및 이벤트 기반 시스템을 위한 공통 메타데이터 계층이 되었고, 이후 CNCF 졸업에 도달했다. 그 설계 덕분에 도구들이 페이로드를 이해하기 전에 봉투를 검사할 수 있었기에 어댑터와 SDK가 플랫폼 전반에서 유용해졌다.
근거 확인하기
출처
- Serverless specification CloudEvents reaches Version 1.0 Cloud Native Computing Foundation · cncf.io ·
- CloudEvents Specification v1.0.2 CloudEvents · raw.githubusercontent.com