雲の世界の共通語 CloudEvents って何? #cndjp / Cloud Native Developers JP 11th

332f89cc697355902a817506b6995f2b?s=47 y_taka_23
April 17, 2019

雲の世界の共通語 CloudEvents って何? #cndjp / Cloud Native Developers JP 11th

Cloud Native Developers JP #11 で使用したスライドです。

ここ数年でサーバレスはキャズムを越え、イベント駆動型アーキテクチャは充分に現実的な選択肢になりました。一方で、クラウドベンダ各社が提供している API はまちまちであり、マルチクラウド環境における相互運用可能性 (interoperability) の上で大きな課題が残っています。

この問題を解決するために、イベントを表現するデータの標準化を目指す CNCF プロジェクトが CloudEvents です。今回の発表では、この CloudEvents の概要および 2019 年 4 月時点の現状について解説しました。

イベント概要:https://cnd.connpass.com/event/125899/

332f89cc697355902a817506b6995f2b?s=128

y_taka_23

April 17, 2019
Tweet

Transcript

  1. 雲の世界の共通語 CloudEvents って何? チェシャ猫 (@y_taka_23) Cloud Native Developers JP #11

    (2019/04/17) #cndjp
  2. 普段、FaaS 使ってる人? #cndjp

  3. 普段、複数の FaaS 使ってる人? #cndjp

  4. 普段、複数の FaaS 繋げてる人? #cndjp

  5. サーバレス界隈の現状 • 完全にキャズムを超えたサーバレス ◦ イベント駆動アーキテクチャの普及 • 一方、各ベンダの仕様は独自路線 • マルチクラウド間の移行や接続は困難 ◦

    それぞれの機能差を吸収するコストは? ◦ テストやモック、運用フローはどうする? ◦ プラットフォームをまたいだ observability は? #cndjp
  6. #cndjp

  7. #cndjp

  8. CloudEvents のコア仕様 • あくまでも「発生した事実」を表現 ◦ 受け取り側の名前・処理方法を規定しない • データにメタデータを付加する ◦ どんなイベントが発生したのか?

    ◦ いつ・どこで発生したのか? ◦ イベントをどう特定するか? ◦ どのような形式で通信されるのか? #cndjp
  9. データ本体 #cndjp

  10. メタデータ #cndjp

  11. 実装に対応するための追加仕様 • Event の直列化フォーマット ◦ JSON(必須) ◦ AMQP • 通信プロトコルへのバインディング

    ◦ HTTP ◦ MQTT ◦ NATS #cndjp
  12. 一応 SDK とその仕様もある • 公式でサポートされている言語 ◦ Go (53 stars) ◦

    Java (32 stars) ◦ JavaScript (28 stars) ◦ Python (15 stars) ◦ C# (11 stars) • HTTP 以外の仕様はほとんど TBA 状態 #cndjp
  13. 仕様はわかった。実装は? #cndjp

  14. CloudEvents 対応プロダクト • Event Gateway ◦ CloudEvents 形式にネイティブ対応 ◦ OSS

    + Serverless Inc. によるマネージド版 ◦ V0.1 のみ対応 • Azure Event Grid ◦ 独自形式に加え CloudEvents 形式も対応 ◦ v0.1 のみ対応 #cndjp
  15. #cndjp https://medium.com/@austencollins/introducing-cloudevents-a758c62c76bf

  16. 2018.4.21:v0.1 リリース 2018.5.22:CNCF Sandbox 認定 2018.12.07:v0.2 リリース 2018.5.4:CloudNativeCon Europe #cndjp

  17. CloudEvents 対応プロダクト • Event Gateway ◦ CloudEvents 形式にネイティブ対応 ◦ OSS

    + Serverless 社による マネージド ◦ v0.1 のみ対応 • Azure Event Grid ◦ 独自形式に加え CloudEvents 形式も対応 ◦ v0.1 のみ対応 #cndjp
  18. CloudEvents 対応プロダクト • Event Gateway ◦ CloudEvents 形式にネイティブ対応 ◦ OSS

    + Serverless 社による マネージド ◦ v0.1 のみ対応、最終コミット 2018 年 8 月 • Azure Event Grid ◦ 独自形式に加え CloudEvents 形式も対応 ◦ v0.1 のみ対応 #cndjp
  19. (これ死に体では…?) #cndjp

  20. #cndjp

  21. Knative のコンポーネント • Build ◦ コードからコンテナへの変換を担当 • Serving ◦ ワークロードのデプロイとトラフィックを担当

    • Eventing ◦ ワークロード間のイベントドリブン処理を担当 ◦ データ形式として CloudEvents v0.2 を採用! #cndjp
  22. #cndjp https://knative.dev/docs/eventing/

  23. まとめ • 現状サーバレス界隈は互換性に難あり ◦ ベンダごとの独自仕様にロックイン状態 ◦ マルチクラウドを考えると途端につらい • CloudEvents はメタデータを定義

    ◦ イベント = データ + 処理に必要なコンテキスト • 現時点での具体的な用途は限定的 ◦ 事実上 Knative Eventing が唯一の実装 #cndjp
  24. Make Serverless Borderless! Presented by チェシャ猫 (@y_taka_23) #cndjp