Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

#cndjp

Slide 7

Slide 7 text

#cndjp

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

データ本体 #cndjp

Slide 10

Slide 10 text

メタデータ #cndjp

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

#cndjp

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

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