CNDT2021、CNCFの元TOCメンバーがOSSにおける標準の重要性を解説
CloudNative Days Tokyo 2021から、Katie Gamanji氏によるセッションを紹介する。
Katie Gamanji氏はConde Nast、American Express、CNCFのTechnical Oversight Committee(ToC)メンバー、エコシステムアドボケイトなどの職歴を経て、現在はAppleのSenior Kubernetes Field Engineerというポジションに就いているエンジニアだ。同時にUdacityにおいてクラウドネイティブなシステムにおける教材などの開発にも従事しており、クラウドネイティブなシステムにおいて広範囲な視野を持つ人材と言えるだろう。
このセッションでは、Kubernetesの拡大において標準仕様がどのようにエコシステムの拡大に役に立ったのか、またエンドユーザーとベンダーの立場の違いなどについて技術的な解説を踏まえて語りかける内容となっている。
ちなみに2020年に開催されたKubeCon+CloudNativeCon NA 2020では、Gamanji氏はクラスターAPIに関するセッションを行っているので参考にして欲しい。
KubeCon NA 2020のセッション:KubeCon+CloudNativeCon NA開催 Kubernetesのクラスター管理を進化させる方法論をKatie Gamanji氏が解説
Gamanji氏はオープンソースソフトウェアにおいてエンドユーザーが大きな役割を果たしているとして、トヨタやApple、ヤフージャパンなどのロゴが記載されたスライドを使って紹介した。
その中でオープンな標準仕様がエコシステムの拡大にどのように寄与しているのかを解説するのが、このセッションの目的だ。
そのために3つの視点を通じて解説を行っている。ここではコンテナの世界的な拡大、インターフェースの標準化、そしてクラウドネイティブなエコシステムの拡大の3点だ。
コンテナの拡大についてはKubernetesを例に解説。コンテナのオーケストレーションツールについてはDockerが開発したSwarmやApache MESOSなども併せて紹介しているが、その中でもKubernetesが抜きん出た理由は、GoogleがIBMやRed HatなどとともにCNCFというニュートラルな組織を作って、その中で開発を続けることを決定したことだろう。
KubernetesについてはCNCFに参加している企業の83%が本番環境で利用していることや、2500人以上のデベロッパーが存在することなどを挙げている。これはGamanji氏が2020年のKubeCon NAで行ったセッションのスライドでは「58%の企業、2000人のデベロッパー」と紹介されていることから、継続的に増加していることがわかる。
ここでコンテナの特徴であるcgroupとnamespaceについて取り上げ、cgroupはCPUとメモリーを制限するための仕組みとして、namespaceは他のシステムやプロセスへのアクセスを制限する仕組みとして解説した。ポイントはcgroupもnamespaceもLinuxカーネルの機能としては2008年から実装されていたのに、どうして近年急にそれが持て囃されるようになったのか? という点だ。これは次のスライドへの前置きとなっている。
つまりコンテナが必要となってきたのは、ソフトウェアテクノロジー自体がビジネスの競争力の大きな要因になってきているからだと解説。ビジネスがソフトウェアによって実装される時代には、いかに素早くアプリケーションを開発してユーザーに使ってもらうかが勝負となる。この要請によって、マクロサービス化されたアプリケーション自体が複雑になってきたこと、開発したアプリケーションを素早く本番環境に実装する必要があること、そして開発から本番までの環境を統一したいという3つの要因が顕著になってきたことが背景として説明された。
Dockerは、コンテナツールとしてアプリケーションの依存関係を記述できること、テストがシンプルになること、実装が容易になることなどが特徴として挙げられているが、実際に利用が進んでいくにつれ、コンテナのフォーマットとランタイムそしてレジストリが乱立することが予想されていた。そこで互換性を保つためにDockerを中心にOpen Container Initiative(OCI)が2015年6月に設立されたことを説明。
OCIの仕様としてはイメージとランタイムの仕様、配布とコンテナを保存するアーティファクトリーに関する仕様が主なものとして知られていると説明し、ビジネスの中で使われるに従って標準化が進んでいったという。同様にKubernetesにおいてはコンテナランタイムとしてDockerと新たにCoreOSによって開発されたrktが登場したことで、ランタイムレベルの標準化が求められる状況になってきた。そこでOCIに倣って標準化のためにContainer Runtime Interface(CRI)が定められた。これによってランタイムの抽象化がなされ、さまざまなランタイムがニーズに従って開発されることによってエコシステムが拡大したと言えるだろう。
このオープンな仕様によってエコシステムが拡大するという作用は、他のソフトウェアでも起きているという。このスライドではCRIの他にCNI(Container Network Interface)、CSI(Container Storage Interface(CSI)、SMI(Service Mesh Interface)、CPI(Cloud Provider Interface)などが制定されていることを解説。
この中でも特にCPIについてはGamanji氏が過去からこだわってきたクラスターAPIの領域であり、ひとつのクラスター内で収まる技術仕様ではないことからも注目すべきだろう。CPIはクラスターの外に存在するパブリッククラウドベンダーのインスタンスとのインターフェースを制定するもので、AWSやAzureなどのベンダーからの協力がなければ実現しなかったものだ。
またオブザーバービリティについても標準化が進行しているとして、OpenMetricsによるメトリクス、OpenTracingとOpenCensusが統合されたOpenTelemetryなどを紹介。
アプリケーションの実装についてはKubeVelaとCrossplaneを例に紹介。ここでもインフラストラクチャーに依存せずに、アプリケーション実装を抽象化する試みが行われていると解説した。
Crossplaneについては以下の紹介記事も参考にして欲しい。
参考:マルチクラウドを制御するユニバーサルなコントロールプレーンCrossplane
このようなオープンな仕様が可能になったのは、KubernetesがNon-Opinionated(特定の論理に固執しない寛容性)な性質を備えているからだと解説した。例外としてすべてのPodにIPを持たせることが必要という仕様は存在するが、それをどうやって実装するのか? に関してはルールがあるわけではないという。
この寛容性はエコシステムにおける今後の可能性に関連しているとして、ベンダーにとってはイノベーションを、エンドユーザーにとっては拡張性を、そしてコミュニティにとっては相互運用性を高めることに作用すると解説した。
このようにオープンな標準を決め、それを遵守して実装することでソフトウェアには選択肢が増え、結果としてさまざまなソリューションが開発されることで、さらにイノベーションが加速することを強調してセッションを終えた。
主にベンダー側から語られることが多いオープンソースソフトウェアだが、Gamanji氏のようにエンドユーザー側からの客観的な視点でオープンな標準仕様がエコシステムに与える良い影響を解説したことに大きな意味がある。
ただOSSコミュニティにおいてはベンダーとエンドユーザーの意識や役割の違いやガバナンスモデルの違いなど、総論としては納得できても各論として理解できない部分もあるだろう。また冒頭に紹介されたランタイムrktのように、CoreOSがRed Hatに買収された後に活動が停止してしまったプロジェクトも存在する。コミュニティにはそれぞれの事情があることを前提に、それでもオープンな標準を目指すという姿勢は間違ってはいないことを確認するセッションとなった。
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- KubeCon Europe、2日目のキーノートはSpotifyの失敗事例とIBMのRazeeがポイント
- KubeCon+CloudNativeCon NA開催 Kubernetesのクラスター管理を進化させる方法論をKatie Gamanji氏が解説
- CNDO 2021、サイバーエージェントのテックリードがコンテナランタイムの最新情報を解説
- Kubernetes Forum@ソウル開催。複数のK8sを統合するFederation APIに注目
- CloudNative Days Tokyo 2021が11月に開催 記者会見で見えた「繋げる」の意味
- runC vs. cc-runtime vs. kata-runtime?コンテナランタイムの内部構造と性能比較
- Kubernetes 1.20から始まるDockerランタイムの非推奨化に備えよう!我々が知っておくべきこと・すべきこと
- CNDO 2021、Kubernetesとコンテナの基本的構造をNTTの徳永航平氏が解説
- KubeCon+CloudNativeCon EU 2022、3日間のキーノートを総括
- CloudNative Days Spring 2021開催。CNCFのCTOが語るクラウドネイティブの近未来