CloudEventsの紹介、そしてServerlessな世界はこれからどこへ向かうのか

CloudEvents v0.1の公開

Takahiro Horike
6 min readMay 15, 2018

5月の頭に開催されたCloudNativeCon & KubeConにてCloudEventsが発表されました。これはこれからのイベントドリブンなアプリケーション開発を助けるための重要な仕様であり、’サーバーレス’な世界はこれから次のフェーズに突入したといえるでしょう。

CloudEventsのスコープ自体はシンプルです。サーバーレスアプリケーションを開発する上で、イベントをより簡単に処理できるようにするためのメタデータのセットが含まれています。

例えば、AWSのS3にオブジェクトが作成された時のCloudEventは以下のようなJSONで表現されます。

そしてCFCN内で議論が進められており、Google, Microsoft, IBM, VMware, SAP, Oracle, Huawei, Alibaba, Red Hat, Iguazioといった様々なベンダーが参加しています。CloudEvents0.1の直後にAzureのAzure Event Gridを通してCloudEventsをサポートすると発表しました。これから様々なベンダーがこれに対応しだすことでしょう。

CloudEventsが解決する問題とは何か

LambdaがAWSからリリースされて、サーバーレスアーキテクチャというムーブメントが盛り上がり、多くのデベロッパーがそこに注力するようになりました。

しかし、まだまだ開発者はサーバーレスアーキテクチャに内在するイベント駆動型の設計には多くの苦労をしています。例えば、イベント自体がどこ存在するかの調査、イベントスキーマへの理解、イベントのモックの作成やテストにワークフローの確立、イベントドリブンワークフローの可観測性(いわゆるオブザーバビリティ) や環境を越えたイベントのトレーサビリティの担保、イベントを伝達する際の保証など。イベントに対して、共通のプロトコルがなく、それらを簡単に扱えるようにするためには、まずベンダー固有の用語とセマンティクスを学ばなければなりません。開発者はこれらに多くの時間を費やします。

これを解決するのがCloudEventsです。ベンダーをまたいだ一貫性のあるイベントメタデータの提供は、サーバーレス&イベントドリブンアーキテクチャーの開発、実行、および運用に対して安定した共通のプラットフォームを提供します。

サーバレスのポータビリティ

ベンダーロックイン、つまりサーバーレスなロジックのポータビリティをどう実現するかは、サーバーレスコミュニティにとっての大きな問題のひとつです。

本来であれば、サーバーレスなロジックはコストやオーバーヘッドをかけること無く、リージョンやプロバイダーを越えて自由にプロビジョニング出来るべきです。開発者対して、サーバーレスなロジックのライフサイクルやプロビジョニングと管理のための一貫した経験を提供し、ポータブルにすることは非常に重要です。

ベンダーロックインの文脈の中で一番の問題となるのは、データがどこか一箇所のベンダーのストレージに中央集権的に存在してしまうことで、アプリケーションからそのデータを利用する際に、その独自仕様による制限が出来てしまうということです。反面、データがイベントにラップされて、環境を越えて自由に行き交うことが出来るようになることで、アプリケーションからは簡単に参照して使用することができます。これは開発者にとって簡単さと大きな利便性を提供します。

CloudEventsのメタデータは、イベントのルーティング、ファンアウト、トレーサビリティ、再現性を提供することでデータアクセスのためのポータビリティを提供します。さらにCloudEventsはメタデータを既存のプロトコル(HTTP、AMQP、MQTT等)にマッピングするための仕様もあります。CloudEventsのメタデータは、今日の多くのユースケースでデータに自由さをもたらす可能性があります。

CloudNativeConでServerless.incの社長であるAustenのやったでもがおもしろいです。11個の異なる サーバーレスコンピューティングプロバイダを統合してデモンストレーションを行いそれらが実装として可能なことを示しました。このアーキテクチャでは、CloudEventはAWS S3とAzure Blob Storageから配信され、イベントルーターを介して、11の異なるベンダーの11のFunctionに配信されます。 各Functionは、それぞれのプラットフォームが提供する独自のサービスを使用してTwitterフィードに記録されました。

CloudEventsが実装されたプロダクト

すでにCloudEventsはMicrosoft’s Event GridEvent Gatewayにて試すことが出来ます。特にEvent Gatewayは Hosted Event Gateway Betaがリリースされていて簡単に試すことができます。いわゆるSaaSバージョンですね。

これらはいわゆる”ミドルウェア”と呼ばれます。サーバーレスアーキテクチャのイベントルータとしてのミドルウェアという意味です。これらは、次世代のサーバーレスアプリケーションを構築するのに重要な位置づけとなるでしょう。そして、CloudEventsの仕様が進歩しそれに合わせて、その周辺のツールとエコシステムもどんどんと進歩することでしょう。

CloudEventsとサーバーレス&イベントドリブンコミュニティ

CloudEventsの仕様策定はまだまだ始まったばかりです。そしてもっとも重要なのはCloudEventsの所有者がコミュニティであるということです。つまりCFCNがそれを所有しているということです。CNCFは、サーバレス界隈のコミュニティや企業が同様に大きな利益を得るために協力しあえる中立的な組織です。

そして最終的にはCFCNではなく、場所、性別、人種、年齢、背景、リソースなどにかかわらず、ソフトウェアを作成するために、物事をシンプルで使いやすくし、民主化することです。これはコミュニティにより実現できます。

CloudEventsはGitHub上で議論が行われて策定されています。是非、みなさんもここに参加してみてはどうでしょう。次の世代を牽引するかもしれない仕様の策定に自由に関われてるというのは大きなチャンスではないかとおもいます。

--

--

Takahiro Horike

JavaScript and PHP programmer in Japan. I love Serverless and AWS. ⚡️Serverless Framework Core Contributor and plugin developer. https://github.com/horike37