Obsah

CloudEvents

CloudEvents je otevřená specifikace pro popis dat událostí (events) v běžných formátech. Cílem je poskytnout konzistentní způsob, jakým různé systémy (cloudoví poskytovatelé, SaaS platformy, lokální aplikace) definují metadata událostí, čímž se zjednodušuje deklarace a doručování událostí napříč platformami.

Projekt spadá pod organizaci Cloud Native Computing Foundation (CNCF).

Problém, který CloudEvents řeší

V architektuře řízené událostmi (EDA) generuje každý systém události v jiném formátu. Například:

To nutí vývojáře psát specifický kód pro parsování každého typu zdroje. CloudEvents tento chaos sjednocuje definováním standardní „obálky“ (envelope) kolem dat události.

Struktura CloudEvents

Specifikace definuje sadu povinných a volitelných polí, která musí každá událost obsahovat, bez ohledu na to, co je jejím obsahem (payload).

Povinné atributy (Required)

Volitelné atributy (Optional)

Příklady serializace

CloudEvents podporují různé formáty zápisu, nejčastěji JSON.

Příklad v JSON:

{
    "specversion" : "1.0",
    "type" : "com.priklad.vytvoreni_objednavky",
    "source" : "/eshop/objednavky",
    "id" : "A234-1234-1234",
    "time" : "2026-01-03T15:00:00Z",
    "datacontenttype" : "application/json",
    "data" : {
        "zakaznik_id" : "8899",
        "castka" : 1250.50
    }
}

Protokoly a přenos

CloudEvents nejsou vázány na jeden přenosový protokol. Specifikace definuje, jak se události mapují na různé protokoly (Protocol Bindings):

Význam pro Serverless a PaaS

V prostředí Serverless hrají CloudEvents klíčovou roli:

1. **Nezávislost na cloudu (Cloud Agnostic):** Umožňují snadnější migraci funkcí mezi AWS Lambda, Google Cloud Functions a Azure Functions.
2. **Ekosystém nástrojů:** Existují knihovny pro většinu jazyků (Java, Go, Python, JavaScript), které automaticky validují a parsují standardizované události.
3. **Event Mesh:** Umožňuje vytvářet komplexní sítě, kde událost z jednoho cloudu vyvolá akci v cloudu jiném.

Související termíny: Serverless, FaaS, JSON, Middleware, Webhook.