「サーバレス」、そしてKnativeは、KubeCon + CloudNativeCon 2018における大きな話題となった。ではあらためて、サーバレスとは何なのか。多数のサーバレスOSSがある中で、Knativeが特に注目されるのはなぜなのか。
「サーバレス」、そしてKnativeは、2018年12月中旬に開催されたKubeCon + CloudNativeCon 2018における大きな話題となった。ではあらためて、サーバレスとは何なのか。多数のサーバレスOSSがある中で、Knativeが特に注目されるのはなぜなのか。
Kubernetesコミュニティーで人気のあるGoogleのスタッフデベロッパーアドボケイト、ケルシー・ハイタワー(Kelsey Hightower)氏は、今回のイベントで、Kubernetesとサーバレスの関係について次のように語っている。
「『サーバレス』の非常に広い定義を考えるなら、例えばマネージドデータベースサービスを使うことで、(ユーザーは)データベースを管理しなくて済むようになった。ストレージに関してもAmazon S3やGoogle Cloud Storageなどが使える。Kubernetesユーザーにとって、ネットワーク、ストレージ、データベース、ロードバランサーなどはその意味でサーバレスになっている。サーバレスでないものはコンピュートだけだ。そこで人々は、サーバレスをスペクトラムで考え、『あなたはどれくらいサーバレスなのか』と言い始めている。(中略)あなたが何らかの組織で事業担当部署(のIT)をサポートしていて、Kubernetesなど全く知らない人たちに、「ここにコードを置いてくれれば動くよ」と言えたならば、サーバレスな体験を提供していることになる。するとテーマは、『コンテナとファンクションの間で、何ができるのか』ということになる。(中略)私たちはKubernetesを捨て、新たなアーキテクチャを使い始めることを提唱しているのではない。AWS Lambda(などのサーバレス)はKubernetesのサブセットだ。Lambdaはイベントとファンクションに特化している。Kubernetesでは、アプリをどんなやり方で動かしてもいい。イベントに応じて動かしたければKnativeがある。バッチジョブとして動かしたければジョブとして動かせばいい。長期間連続して動作させたければ、デプロイメントとして動かせばいい」
「サーバレス」という言葉の意味は依然として曖昧だ。例えばAmazon Web Services(AWS)などは最近、データベースサービスなどで「サーバレス」をうたうことが増えている。これは、サービスがコンテナとしてデプロイされるため、ユーザーが利用する際に仮想マシンの設定などをしなくて済むというもので、コンテナを使っているだけで「サーバレス」ということになる。
ハイタワー氏も、上記のコメントでKubernetesとサーバレスは別物ではないとし、Kubernetesという単一のプラットフォームで、さまざまなレベルのサーバレスを実現できることを強調している。同時に、サーバレスがデベロッパーエクスペリエンスを向上できる取り組みの一つであることも示唆している。
今回のイベントで注目されたのは、狭義の「サーバレス」(本稿では以降、これを「サーバレス」と表現する)であり、それを実現するための部品としてGoogleが2018年7月に発表したKnativeだ。狭義のサーバレスは、基本的に3つの要素を実現する。第1にコードを自動的にコンテナ化し、第2にゼロからの自動コンテナ起動および自動スケーリング、さらにゼロへのスケーリングを実現し、第3にイベントドリブンなアプリケーション(マイクロサービス)の稼働を実現する。
Kubernetes上でサーバレスを実現するオープンソースソフトウェア(OSS)は、既に幾つも存在している。だが、Cloud Native Computing Foundation(CNCF)のCOO(最高執行責任者)であるクリス・アニズィック(Chris Aniszczyk)氏は、Knativeがサーバレスの基盤として事実上の標準になると見ている。
「GoogleがKnativeを発表したと同時に、Pivotalは自社が開発していた(サーバレスソフトウェアの)riffをKnative上に再構築すると発表し、IBMも同様な意向を明らかにした。2019年にかけて、サーバレスソフトウェアにおけるKnativeへの統合の動きはさらに進行すると考えている。私は2019年に、KnativeがサンドボックスプロジェクトとしてCNCFに加入することを期待している」
CNCFはこれまで発足以来、時間がかかるものの実効性は担保されにくい標準の策定よりも、実装の普及によってクラウドネイティブアプリケーション構築・運用の世界を分かりやすくする取り組みを進めてきた。アニズィック氏は上記のコメントで、こうした方針をあらためて強調する。
「CNCFではサーバレスワーキンググループを1年以上前に開始したが、当時はあらゆるITベンダーがそれぞれ開発しているのではないかと思えるほど、サーバレスのツールが多数登場していた。そうした開花期を経て、今はKnativeを活用する方向で、業界内の統合が進もうとしている。CNCFでは、こうした統合の動きを喜んで支援していきたい。Knativeは完全なサーバレスプラットフォームではない。位置付けとしてはネットワーキングにおけるCNIに似ており、役に立つサーバレスプラットフォームを構築するための基盤要素として活用できる」
アニズィック氏は、Knativeプロジェクトにおける「Build Pipeline(Pipeline CRD)」というサブプロジェクトも面白いと話す。
「これはあらゆるCI/CD(継続的インテグレーション/継続的デリバリー)システムから使えるパイプラインを定義できるというもので、とても良いアイデアであり、もっと早くこうしたツールが登場すべきだったと思う。サーバレス以外でも役に立つと考えている」
それにしても、Knativeはなぜこれほどまでに注目されるのか。
GoogleのKnative担当開発者は、約1年前にプロジェクトを始めたころ、Red HatやPivotalに対して「こういうものを作ろうとしているが、あなたたちにとって役に立つと思うか」と打診し、その後フィードバックをもらいながら開発してきたと、今回のイベントで話した。Knativeが発表されたのは2018年7月だが、それよりかなり前に、「根回し」が進んでいたともいえる。
Pivotalは2018年7月のGoogle Cloud NEXT ’18で下のような図を見せ、サーバレスにおける自社の付加価値発揮ラインを上げられることを説明した。同社のサーバレスOSSプロジェクトriffで、全てを独自の仕組みとして開発するのではなく、基礎的な機能はKnativeに任せ、上のレイヤーでの差別化に注力できるとしている。Red HatやIBMも、今回のイベントで同様な図を示している。
Knativeを採用するベンダーが得られるメリットは、「退屈な部分」を自社開発しなくて済むということだけではない。基盤を共通化することで、相互のサーバレスプラットフォーム間の相互運用性を確保できる可能性が生まれる。Google CloudはGoogle Cloud NEXT ’18で、オンプレミスなどにGoogle Kubernetes Engineを持ち込む「GKE On-Prem」を発表したが、これにKnativeを組み込めば、オンプレミスとGoogle Cloudの間でハイブリッドのサーバレスプラットフォームを構築できるようになる。さらに理想的には、Google Cloud、Pivotal Container Service(PKS)、IBM Cloud Kubernetes Service、Red Hat OpenShiftなどが相互に連携することで、これらのクラウド/プラットフォームにまたがるサーバレスアプリケーションを構築できるようになる。
実際、Googleのテクニカルインフラストラクチャ担当シニアバイスプレジデント、ウルス・ヘルツル(Urs Hölzle)氏は、Google Cloud Next ’18におけるインタビューで、Knative(およびIstio)の目的がサーバレスにおけるクラウドのロックインを回避することにあるとし、次のように話している。
「(クラウドベンダーは、)実装の優劣を競うことはできる。だが、運用APIは統一されるべきだ。このため、運用APIはオープンソースでなければならない。これを実現する取り組みの一つがKnativeだ。現在の状況は、Kubernetesをオープンソース化した頃に似ている。当時少なくとも1ダース以上のコンテナオーケストレーションシステムがあったが、その後Kubernetesが事実上の標準になった。『どれ』が勝つかよりも、どれかが『事実上の標準になる』ことが重要だ。私たちはKnativeについて、業界内の有力パートナーと協力し、サーバレスをどのように見せるかについてのコンセンサスを醸成しようとしている。繰り返すが、Knativeにおける私たちの目標は、実装ごとに独自であってはならないものを統一することだ」
Copyright © ITmedia, Inc. All Rights Reserved.