CloudNative Days Tokyo 2021レポート 17

CNDT2021、CNCFの元TOCメンバーがOSSにおける標準の重要性を解説

AppleのシニアエンジニアKatie Gamanji氏が、クラウドネイティブにおける標準の重要性を解説したセッションを紹介する。

松下 康之 - Yasuyuki Matsushita

2022年2月22日 8:25

CloudNative Days Tokyo 2021から、Katie Gamanji氏によるセッションを紹介する。

Katie Gamanji氏はConde Nast、American Express、CNCFのTechnical Oversight Committee(ToC)メンバー、エコシステムアドボケイトなどの職歴を経て、現在はAppleのSenior Kubernetes Field Engineerというポジションに就いているエンジニアだ。同時にUdacityにおいてクラウドネイティブなシステムにおける教材などの開発にも従事しており、クラウドネイティブなシステムにおいて広範囲な視野を持つ人材と言えるだろう。

このセッションでは、Kubernetesの拡大において標準仕様がどのようにエコシステムの拡大に役に立ったのか、またエンドユーザーとベンダーの立場の違いなどについて技術的な解説を踏まえて語りかける内容となっている。

セッションを行ったKatie Gamanji氏

セッションを行ったKatie Gamanji氏

ちなみに2020年に開催されたKubeCon+CloudNativeCon NA 2020では、Gamanji氏はクラスターAPIに関するセッションを行っているので参考にして欲しい。

KubeCon NA 2020のセッション:KubeCon+CloudNativeCon NA開催 Kubernetesのクラスター管理を進化させる方法論をKatie Gamanji氏が解説

Gamanji氏はオープンソースソフトウェアにおいてエンドユーザーが大きな役割を果たしているとして、トヨタやApple、ヤフージャパンなどのロゴが記載されたスライドを使って紹介した。

エンドユーザーがOSSの拡大を後押ししていることを解説

エンドユーザーがOSSの拡大を後押ししていることを解説

その中でオープンな標準仕様がエコシステムの拡大にどのように寄与しているのかを解説するのが、このセッションの目的だ。

オープンな標準の重要性を解説するセッション

オープンな標準の重要性を解説するセッション

そのために3つの視点を通じて解説を行っている。ここではコンテナの世界的な拡大、インターフェースの標準化、そしてクラウドネイティブなエコシステムの拡大の3点だ。

3つのポイントで解説

3つのポイントで解説

コンテナの拡大についてはKubernetesを例に解説。コンテナのオーケストレーションツールについてはDockerが開発したSwarmやApache MESOSなども併せて紹介しているが、その中でもKubernetesが抜きん出た理由は、GoogleがIBMやRed HatなどとともにCNCFというニュートラルな組織を作って、その中で開発を続けることを決定したことだろう。

KubernetesについてはCNCFに参加している企業の83%が本番環境で利用していることや、2500人以上のデベロッパーが存在することなどを挙げている。これはGamanji氏が2020年のKubeCon NAで行ったセッションのスライドでは「58%の企業、2000人のデベロッパー」と紹介されていることから、継続的に増加していることがわかる。

2021年のKubernetesの普及度。2020年に比べて増えている

2021年のKubernetesの普及度。2020年に比べて増えている

KubeCon NA 2020のスライドから

KubeCon NA 2020のスライドから

ここでコンテナの特徴であるcgroupとnamespaceについて取り上げ、cgroupはCPUとメモリーを制限するための仕組みとして、namespaceは他のシステムやプロセスへのアクセスを制限する仕組みとして解説した。ポイントはcgroupもnamespaceもLinuxカーネルの機能としては2008年から実装されていたのに、どうして近年急にそれが持て囃されるようになったのか? という点だ。これは次のスライドへの前置きとなっている。

コンテナの本質的な機能を解説

コンテナの本質的な機能を解説

つまりコンテナが必要となってきたのは、ソフトウェアテクノロジー自体がビジネスの競争力の大きな要因になってきているからだと解説。ビジネスがソフトウェアによって実装される時代には、いかに素早くアプリケーションを開発してユーザーに使ってもらうかが勝負となる。この要請によって、マクロサービス化されたアプリケーション自体が複雑になってきたこと、開発したアプリケーションを素早く本番環境に実装する必要があること、そして開発から本番までの環境を統一したいという3つの要因が顕著になってきたことが背景として説明された。

コンテナが必要とされる3つの要点を解説

コンテナが必要とされる3つの要点を解説

Dockerは、コンテナツールとしてアプリケーションの依存関係を記述できること、テストがシンプルになること、実装が容易になることなどが特徴として挙げられているが、実際に利用が進んでいくにつれ、コンテナのフォーマットとランタイムそしてレジストリが乱立することが予想されていた。そこで互換性を保つためにDockerを中心にOpen Container Initiative(OCI)が2015年6月に設立されたことを説明。

Open Container Initiativeの概要

Open Container Initiativeの概要

OCIの仕様としてはイメージとランタイムの仕様、配布とコンテナを保存するアーティファクトリーに関する仕様が主なものとして知られていると説明し、ビジネスの中で使われるに従って標準化が進んでいったという。同様にKubernetesにおいてはコンテナランタイムとしてDockerと新たにCoreOSによって開発されたrktが登場したことで、ランタイムレベルの標準化が求められる状況になってきた。そこでOCIに倣って標準化のためにContainer Runtime Interface(CRI)が定められた。これによってランタイムの抽象化がなされ、さまざまなランタイムがニーズに従って開発されることによってエコシステムが拡大したと言えるだろう。

CRIによってコンテナランタイムのエコシステムが拡大

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を持たせることが必要という仕様は存在するが、それをどうやって実装するのか? に関してはルールがあるわけではないという。

寛容性がエコシステムにもたらす3つの作用を指摘

寛容性がエコシステムにもたらす3つの作用を指摘

この寛容性はエコシステムにおける今後の可能性に関連しているとして、ベンダーにとってはイノベーションを、エンドユーザーにとっては拡張性を、そしてコミュニティにとっては相互運用性を高めることに作用すると解説した。

オープン標準がイノベーションと拡張性の中心的なエンジン

オープン標準がイノベーションと拡張性の中心的なエンジン

このようにオープンな標準を決め、それを遵守して実装することでソフトウェアには選択肢が増え、結果としてさまざまなソリューションが開発されることで、さらにイノベーションが加速することを強調してセッションを終えた。

主にベンダー側から語られることが多いオープンソースソフトウェアだが、Gamanji氏のようにエンドユーザー側からの客観的な視点でオープンな標準仕様がエコシステムに与える良い影響を解説したことに大きな意味がある。

ただOSSコミュニティにおいてはベンダーとエンドユーザーの意識や役割の違いやガバナンスモデルの違いなど、総論としては納得できても各論として理解できない部分もあるだろう。また冒頭に紹介されたランタイムrktのように、CoreOSがRed Hatに買収された後に活動が停止してしまったプロジェクトも存在する。コミュニティにはそれぞれの事情があることを前提に、それでもオープンな標準を目指すという姿勢は間違ってはいないことを確認するセッションとなった。

この記事のキーワード

この記事をシェアしてください

人気記事トップ10

人気記事ランキングをもっと見る