Serverless-Plattformen erzeugten in verschiedenen Clouds dasselbe Problem: Jedes Event hatte seine eigene Form. Entwickler mussten neu lernen, wie sie Storage-, Queue-, Datenbank- oder SaaS-Events konsumieren, und Tooling konnte Events ohne maßgeschneiderte Adapter weder routen noch nachverfolgen.

CloudEvents vermied die unmögliche Aufgabe, jeden Event-Body zu standardisieren. Es definierte gemeinsame Kontextattribute und Transport-Bindings und beließ die Nutzlast domänenspezifisch. Der Kniff bestand darin, der Infrastruktur genügend Metadaten zu geben, damit sie arbeiten konnte, ohne Produzenten zu zwingen, ihre Geschäftsdaten umzuschreiben.

Bis Oktober 2019 erreichte CloudEvents Version 1.0 und wechselte von der CNCF-Sandbox in die Inkubation. Die CNCF nannte Unterstützung und Beiträge von AWS, Google, Microsoft, IBM, SAP, Red Hat und VMware und listete Implementierungen auf, darunter Knative Eventing, Debezium, Kyma und Azure Event Grid.

Den Umschlag standardisieren, nicht das Event

Die erforderlichen Kernattribute machten Routing und Deduplizierung herstellerübergreifend portabel.

Die Event-Daten unangetastet zu lassen, hielt die Einführung für bestehende Produzenten kostengünstig.

Protokoll-Bindings ließen dasselbe Event-Modell über HTTP, Kafka, MQTT und andere Transportwege reisen.

Ein neutrales Zuhause bei der CNCF verringerte die Sorge der Anbieter, eine Cloud könnte die Event-Grammatik besitzen.

Wenn Nutzlasten zu vielfältig sind, um sie zu standardisieren, sollte man den kleinsten Umschlag standardisieren, der es der Infrastruktur ermöglicht, sie zu routen und zu inspizieren.

CloudEvents wurde zur gemeinsamen Metadatenschicht für serverlose und ereignisgesteuerte Systeme und erreichte später die CNCF-Graduierung. Sein Design machte Adapter und SDKs plattformübergreifend nützlich, weil Tools den Umschlag inspizieren konnten, bevor sie die Nutzlast verstanden.

DEN BELEGEN FOLGEN

Die Quellen

  1. Serverless specification CloudEvents reaches Version 1.0 Cloud Native Computing Foundation · cncf.io ·
  2. CloudEvents Specification v1.0.2 CloudEvents · raw.githubusercontent.com