2022講演より」を転載したものです。オリジナルはTechFeedをご覧ください。本日は「eBPFとWASMに思いを馳せる2022」というテーマで、CyberAgentの青山が発表させていただきます。ふだんはKubernetes基盤のプロダクトオーナーとして勤めるほか、いくつかの会社で技術顧問やカンファレンスのCo-chairなどを務めています。完全ガイド』(⁠インプレス)があります。本日は、WASMとeBPF関連のプロダクトの紹介を行っていきたいと思います。WASMのおさらいWASMのおさらいですが、WASMではさまざまな言語で関数を実装して、WASMバイナリとしてビルドして、たとえばブラウザに組み込まれたWASMランタイム上で動作させることができます。Proxy-WASMといったインターフェースが整備され、ある程度制約はあるのですが、一般的なサーバサイドアプリケーションやProxyに対する拡張モジュールとして、WASMモジュールを動作させられるようになりました。WASMたとえばProxyに対する拡張モジュールを実装しようとした場合ですが、Proxyの処理の特定のタイミングでWASMモジュールが呼び出され、任意の処理を行わせることができます。このときProxy側の機能を呼び出すHost関数を利用することもできます。Proxy側から呼び出される方向と、Proxy側を呼び出す側の2種類の方向が定義されています。Proxy側からWASMモジュールを呼び出すフックポイントもさまざまありますし、WASMモジュールから使えるProxy側の機能もインターフェースとして多岐に渡って定義されて用意されています。Clarityも、このProxy-WASMを用いて実装されたプロダクトです。specを再構成したりする機能を持っているプロダクトです。ProxyにWASMモジュールをロードして、これから紹介する処理を行っています。WASMどんな処理かというと、HTTPリクエストを受けたときから内部でcontextを取り回しながら情報を収集します。WASMモジュールをロードして、内部でcontextを取り回しながら情報を収集する終了時に再びWASMモジュールの関数が呼び出されるので、データを成形して、先ほどのHost関数を使ってHTTPリクエストを送っていくような形になります。先ほどのHost関数を使って任意のクラスタにHTTPリクエストを送信ちなみにWASMモジュールをEnvoyに組み込む場合は、フィルタに設定を行うことでロードできるようになっています。将来的にはOCIイメージ化されたWASMモジュールをロードするような仕組みも整備されていきそうです。Clarity自体は斬新なプロダクトというわけではないのですが、「⁠Proxy-WASMを利用して拡張する例」は頭に置いておくと、実現方法のひとつにはなっていきそうです。WASMモジュールで拡張できるようになっていたりします。wasmcloudもうひとつWASMネタとしては、本日は解説をスキップするんですが、wasmcloudにも興味を持っています。日が浅いプロダクトですが、挑戦的に新たなコンピューティングの可能性を模索しているため、興味を持っています。Supercluster)を使って、広域に展開したりといったこともスコープに入っています。最後にeBPF周りのお話をしたいと思います。eBPFはカーネルのソースコード変更やカーネルモジュールの組み込みをせずに、任意のプログラムをカーネルに組み込む機能になっています。カーネルモジュールとは異なって、カーネルをクラッシュさせないように検証する機能などもあるんですけど、それによって使える機能の制限とか文法上の制約というのがあります。eBPFプログラムはイベント駆動で動作して、システムコール・カーネルのトレースポイント・ネットワークイベントなどのフックポイントで呼び出されて実行されるような形になっています。eBPFとはeBPFを活用している領域としては、たとえばNetworkingのCalicoやCilliumだと、KubernetesのKube-Proxyがやっていたサービスのバランシングの部分をeBPFを使っていたり、あとはサービスメッシュを構成する際にSidecarとしてデプロイされていたEnvoyを削除して、その部分の処理をeBPFが処理していたりします。オブザーバビリティの文脈ではPixieなどがeBPFを用いてカーネル空間を含めて多岐に渡るデータを取得していたり、セキュリティの文脈のFalcoだと、カーネル空間のイベントをフックすることでアラート発報していたりします。modeになりました。eBPFの活用プロダクトこのようにeBPFの恩恵で低レイヤのプログラマビリティが向上したことによって、ノードのカーネルレベルでの機能拡張や高性能化が可能になってきています。まとめということで、2022年はもっとeBPFやWASMが推進されていくと思うので、楽しみにしていきましょう。これからも進化するeBPF/WASMエコシステムに期待!ご視聴ありがとうございました。Ltd.ページ内容の全部あるいは一部を無断で利用することを禁止します⁠。個別にライセンスが設定されている記事等はそのライセンスに従います。