Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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

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/

y_taka_23

April 17, 2019
Tweet

More Decks by y_taka_23

Other Decks in Technology

Transcript

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

    View Slide

  2. 普段、FaaS 使ってる人?
    #cndjp

    View Slide

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

    View Slide

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

    View Slide

  5. サーバレス界隈の現状
    ● 完全にキャズムを超えたサーバレス
    ○ イベント駆動アーキテクチャの普及
    ● 一方、各ベンダの仕様は独自路線
    ● マルチクラウド間の移行や接続は困難
    ○ それぞれの機能差を吸収するコストは?
    ○ テストやモック、運用フローはどうする?
    ○ プラットフォームをまたいだ observability は?
    #cndjp

    View Slide

  6. #cndjp

    View Slide

  7. #cndjp

    View Slide

  8. CloudEvents のコア仕様
    ● あくまでも「発生した事実」を表現
    ○ 受け取り側の名前・処理方法を規定しない
    ● データにメタデータを付加する
    ○ どんなイベントが発生したのか?
    ○ いつ・どこで発生したのか?
    ○ イベントをどう特定するか?
    ○ どのような形式で通信されるのか?
    #cndjp

    View Slide

  9. データ本体
    #cndjp

    View Slide

  10. メタデータ
    #cndjp

    View Slide

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

    View Slide

  12. 一応 SDK とその仕様もある
    ● 公式でサポートされている言語
    ○ Go (53 stars)
    ○ Java (32 stars)
    ○ JavaScript (28 stars)
    ○ Python (15 stars)
    ○ C# (11 stars)
    ● HTTP 以外の仕様はほとんど TBA 状態
    #cndjp

    View Slide

  13. 仕様はわかった。実装は?
    #cndjp

    View Slide

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

    View Slide

  15. #cndjp
    https://medium.com/@austencollins/introducing-cloudevents-a758c62c76bf

    View Slide

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

    View Slide

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

    View Slide

  18. CloudEvents 対応プロダクト
    ● Event Gateway
    ○ CloudEvents 形式にネイティブ対応
    ○ OSS + Serverless 社による マネージド
    ○ v0.1 のみ対応、最終コミット 2018 年 8 月
    ● Azure Event Grid
    ○ 独自形式に加え CloudEvents 形式も対応
    ○ v0.1 のみ対応
    #cndjp

    View Slide

  19. (これ死に体では…?)
    #cndjp

    View Slide

  20. #cndjp

    View Slide

  21. Knative のコンポーネント
    ● Build
    ○ コードからコンテナへの変換を担当
    ● Serving
    ○ ワークロードのデプロイとトラフィックを担当
    ● Eventing
    ○ ワークロード間のイベントドリブン処理を担当
    ○ データ形式として CloudEvents v0.2 を採用!
    #cndjp

    View Slide

  22. #cndjp
    https://knative.dev/docs/eventing/

    View Slide

  23. まとめ
    ● 現状サーバレス界隈は互換性に難あり
    ○ ベンダごとの独自仕様にロックイン状態
    ○ マルチクラウドを考えると途端につらい
    ● CloudEvents はメタデータを定義
    ○ イベント = データ + 処理に必要なコンテキスト
    ● 現時点での具体的な用途は限定的
    ○ 事実上 Knative Eventing が唯一の実装
    #cndjp

    View Slide

  24. Make Serverless Borderless!
    Presented by チェシャ猫 (@y_taka_23)
    #cndjp

    View Slide