Google Cloud Platform

オープンソースから始まり、持続可能な成功に至るまで ―― Kubernetes の “卒業” に寄せて

今年 3 月 6 日は、Kubernetes が CNCF インキュベーションを卒業した特別な日です。この日は Kubernetes の成長過程において重要な節目であり、IT 運用の基盤として Kubernetes に信頼を寄せているすべての皆さんにとっても、大きな意味を持つ節目となるでしょう。

私たち Google にとって Kubernetes の卒業は、長年にわたって成し遂げてきた仕事を振り返りつつ、育てていただいた皆さんに感謝し、多くのことを達成してきた同級生たちにお祝いの言葉をかける機会でもあります。この場合、お祝いを言うべき相手は、時に生徒として、多くは仲間として、そしてたびたび先生として、私たちとともに歩んだ Kubernetes コミュニティということになるでしょう。多くの人々がこのコミュニティのことを気にかけ、情熱を注いでくれなかったら、Kubernetes の今の姿はなかったはずです。

さらには、私たちのプロジェクトを育て、成長と学習のための独立した居場所をコミュニティに与えてくれた Cloud Native Computing Foundation(CNCF)にもお祝いの言葉を捧げるべきでしょう。

しばらく思い出話にふけるのをお許しください ―― Kubernetes は 2014 年 6 月にオープンソース コードとして Google によってリリースされ、瞬く間に成功を収めました

もっとも、実際の道のりはそんなに平坦なものではありませんでした。Kubernetes のプロジェクトは、世界的な規模の分散システムでスケーラブルなアプリケーションを実行することに取り組んでいた Google 技術チームのもとでスタートしましたが、1 年半後にはあらゆるタイプの課題が山積していました。

私たちは大きな成功を収めつつ破綻する危機に直面していました。関心は深まり、コントリビューションは増えましたが、そのためにシステムは複雑化していきました。リリースのたびに加える変更が多くなりすぎて、それらが相互に矛盾し、期限内にリリースし続けることが難しくなっていました。

現在、Kubernetes のような大規模なオープンソース プロジェクトはごく少数で、Kubernetes のように活動が活発に持続しているものは皆無に近いでしょう。私たちのときも、頼れる経験は限られていました。今日の成功に至るためには、コミュニティとして実験し、成長することにためらいを持たない技術者、プログラム マネージャー、プロダクト マネージャー、ドキュメント ライター、支持者などからなる業界横断的な集団が必要だったのです。

そこで、成長に伴う痛みを乗り越え、今日を迎えるために役に立ったいくつかのベスト プラクティスを以下でシェアしたいと思います。

1. ユーザーへのフォーカス
プロジェクトを成功させるためには、偉大な技術、市場への適合、真の問題を解決できるイノベーションが必要です。しかし、未知のオープンソース プロジェクトをユーザーに早期に導入してもらうことは容易ではありません。そこで、私たちは早い段階から、IRC、Stack Overflow、Slack チャネルでユーザーからの質問に答える Google 技術者のローテーションを組みました。このローテーションはプロジェクトの導入を直接的に促し、貴重な意見や感想、提案のフィードバックを技術者にもたらしました。

2. コミュニティの構築
Red Hat や CoreOS のような企業の技術者との共同作業は、Kubernetes をさまざまなニーズに適合させるうえで欠かせないものでした。また、大企業のベテラン コントリビューターだけでなく独立した個人のコントリビューターを同じように歓迎したことも、コミュニティにとって重要な意味がありました。大企業のニーズに応えつつ、学生やホビイストにも手を出せるようなスケーラビリティを備えたプロジェクトを作るには、さまざまなユース ケースや独自の視点、議論に対する反論などを提供する多様性に満ちた声が必要不可欠です。

3. 持続可能性への投資
健全かつ持続可能な形でプロジェクトを拡大するため、Google Cloud は大規模な投資を行いました。対象は、テスト インフラストラクチャ、変更に対する評価の自動化、イシュー管理の自動化、ドキュメント作成、プロジェクト管理、コントリビューター エクスペリエンス、メンターシップ プログラム、プロジェクト ガバナンスなどです。また、私たちは CNCF との密接な連携のもとに devstats というツールを開発しました。GitHub の組織とリポジトリの統計を可視化し、プロジェクトの健全性を定期的にチェックするためです。

4. エコシステムの実現
私たちが技術革命の素材をこの手につかんでいることは明らかでしたが、その材料を普遍的なプラットフォームに転化させるのに必要なものがほかにもありました。それは、ユーザーのニーズを理解し、すべてのユース ケースが同じではないことを踏まえた明快な将来のビジョンです。また、コントリビューターのエコシステムを構築するための仕掛け、新しいタイプのアプリケーションを扱える広範な機能、首尾一貫したユーザー エクスペリエンスを保証して導入を簡素化するための標準、業界全体での支持者と庇護者も必要でした。

Kubernetes が成功を収めた理由の 1 つは、明確に定義されたインターフェースを持つモジュール化された構造を、メンテナーたちが早い段階で保証したことです。その結果、Kubernetes は大手クラウドプ ロバイダーから ARM ベースのカード デバイスに至るまで、あらゆるプラットフォームで実行されるようになりました。コンテナ ランタイム、ネットワーク プラグイン、Ingress コントローラ、モニタリング システムなどについては、複数の選択肢がエコシステムに用意されています。

多様なワークロードに対応する効率的なプラットフォームをユーザーに提供するべく、私たちはステートフル ワークロードやストレージ プラグインハードウェア アクセラレータのサポートにも投資しました。さらに、API アグリゲーションカスタム リソース定義といった拡張メカニズムを設け、開発者たちが Kubernetes を新しい方向に展開できるようにして、エコシステム内のイノベーションを可能にしました。

最後になりましたが、Kubernetes が細分化されるリスクを避けるために、Google は CNCF や Kubernetes コミュニティと協力して、このプラットフォームのポータビリティと普遍性を強化することを目指す Certified Kubernetes Conformance Program もスタートさせています。

Google はかつて、数百人もの社員の力と長い時間をかけて、Borg と呼ばれるクラスタ管理システムを開発しました。しかし、そうした経験をもってしても、今の Kubernetes を私たちだけで作り上げることはできなかったでしょう。

Kubernetes をここまで育ててくれた多くのコントリビューター、協力者、リーダー、ユーザー、支持者、反対者、挑戦者の皆さんにとても感謝しています。これらの人々の助力のおかげで、Kubernetes はオープンソース コードからオープンソース プロジェクトに、そして産業エコシステムへと成長することができました。

インキュベーションからの卒業は、学校からの卒業と同じで、終わりではなく始まりにすぎません。これまでの成長を手助けしてくれた皆さんと、これからの拡充を手助けしてくれる皆さんのもとで、Kubernetes が切り開く未来を私たちは楽しみにしています。

Kubernetes の卒業に関する詳細は、CNCF のプレス リリースをご覧ください。

* この投稿は米国時間 3 月 6 日、Open Source Strategy Lead の Sarah Novotny と、Group Product Manager の Aparna Sinha によって投稿されたもの(投稿はこちら)の抄訳です。

- By Sarah Novotny, Open Source Strategy Lead and Aparna Sinha, Group Product Manager