マイクロサービス専門のコンサルタント兼著者であるサム・ニューマン氏は、開発者カンファレンス GOTOpia Europe の仮想聴衆に対し、Kubernetes ではなくサーバーレスがソフトウェアの導入に最適な抽象化であると語った。
ニューマン氏はクラウドの支持者だ。「私たちは自分たちのものを所有するという考え方に夢中です」と彼は参加者に語った。「結局、自分たちで構築したインフラシステムの虜になってしまうのです。」
そのため、プライベートクラウドに関しては懐疑的な見方をしている。「AWSは仮想化の威力とAPIを介した自動化のメリットを私たちに示してくれました」と彼は言う。その後、オンプレミスで同じ特性を実現しようとしたOpenStackが登場した。OpenStackは世界最大級のオープンソースプロジェクトの一つだが、「それは誤った希望です…結局のところ、実行しているものに対処しなければならないのです」と彼は言う。
ご覧いただいているカードは1,459枚で、合計2,407,911個のスター、時価総額19.73兆ドル、資金調達額656.2億ドルです(クリックして拡大):CNCFのクラウドネイティブの「ランドスケープ」図は、Kubernetesとそのエコシステムがいかに複雑になっているかを示しています。
次の大きなトレンドは何でしょうか?Kubernetesでしょうか?「Kubernetesはコンテナワークロードを管理するのに最適です」とニューマン氏は言います。「コンテナワークロードの管理に最適というわけではありませんが、Kubernetesは素晴らしいエコシステムを構築できるという点で優れています。」
話を続けるうちに、彼には懸念があることが判明した。「まるでシロアリ塚のように、たくさんの小さなものが詰まった巨大な物体のようです。Kubernetesクラスターは巨大な建造物であり、他にも可動部品が満載です。…自社でKubernetesクラスターを拡張している多くの組織は、Kubernetesのトレーニングコースを受講しなければならなくなったことで、ソフトウェアを提供する能力が空洞化していることに気づいています。」
ニューマン氏は、非常に複雑に見える「クラウド ネイティブ ランドスケープ」の CNCF (Cloud Native Computing Foundation) の図を参照して、自分の主張を説明しています。
独自のKubernetesクラスターを増設している多くの組織は、全員がKubernetesトレーニングコースを受講する必要があるという事実によって、ソフトウェアを提供する能力が空洞化していることに気づいています。
プライベートクラウド上のKubernetesは「巨大な建造物のようなものだ」と彼は述べた。ハードウェア、オペレーティングシステム、仮想化レイヤー、VM内のオペレーティングシステム、コンテナ管理、そしてその上に「最終的にアプリケーションにたどり着く…これらの管理に時間とお金を費やすことになる。一体、これらを本当に管理する必要があるのだろうか?」
パブリッククラウドに移行し、マネージドVM、またはEKS(Amazon)、AKS(Azure)、GKE(Google)などのマネージドKubernetesサービス、あるいはコンテナを実行する他の方法を使用すると、その負担の多くを取り除くことができます。しかし、ニューマン氏は、Kubernetesではなくサーバーレスこそが「ソフトウェアに対する考え方を変えるものです。プラットフォームにコードを与えると、プラットフォームが代わりにコードを実行する方法を考え出します」と主張しました。
サーバーレスとは何ですか?
サーバーレスサービスの重要な特徴は、サーバー管理が不要であることです。オペレーティングシステムやメモリ容量について心配する必要はありません。それらはすべて抽象化されているからです。使用量に応じて自動的にスケーリングされるはずです。つまり、サーバーレス製品によって高可用性が実現されると暗黙的に想定しています。パブリッククラウドを使用する場合は、従量課金モデルも期待できます。
「多くの人がサーバーレスと関数を誤って混同しています」とニューマン氏は述べた。この用語はAWS LambdaやAzure Functionsといったサービスに関連付けられているからだ。サーバーレスは「私たちが考えるよりもずっと前から存在していました」と同氏は付け加え、2006年のAWS Simple Storage Service(S3)や、AWS DynamoDB、Azure Cosmos DBといったメッセージングソリューションやデータベースマネージャーなどにも言及した。
しかし、サーバーレスには制約があることも認めた。FaaS(Functions as a Service)では、開発者が使用できるプログラミング言語とそのバージョンに制限があり、特にGoogleのCloud Functionsでは「サポートされている言語が非常に少ない」という。
関数は本質的にステートレスであるため、プログラミングモデルに影響を与えます。ただし、Microsoft は永続関数の開発に取り組んでいます。また、開発者が実行時に発生する低レベルの処理から遠ざかるため、トラブルシューティングが困難になるという問題もあります。
「FaaSは、Herokuを導入して以来、ソフトウェアの開発方法や展開方法に関して私たちが考え出した最高の抽象化です」とニューマン氏は述べた。「Kubernetesは開発者にとって使いにくいのです。」
ニューマン氏は、FaaSは「私たちのほとんどにとって未来となるだろう。問題は、それが現在であるかどうかだ。現在の実装の中には確かにひどいものもある。Lambdaのようなものの使い勝手は、あるべき姿よりもはるかに悪い」と述べた。
AWSはLambdaで先行していたものの、ニューマン氏はMicrosoftがAzureでサーバーレスの分野で追い上げていると指摘する。彼はGoogleに対してより警戒感を抱いており、Googleはサーバーレスの提供においてKnativeとIstioに依存しすぎていると主張している。彼の見解では、どちらもまだ成熟していない。また、GoogleがCNCF内でKnativeを開発しないという決定は誤りであり、開発者のニーズへの適応を阻害することになるだろうとも考えている。
サーバーレスは、ニューマン氏の専門であるマイクロサービスとどのように結びつくのだろうか?ニューマン氏は、既存のマイクロサービスを関数として実行するという1対1のマッピングから始めることを提案した。「人はあまりにも急ぎすぎてしまう」と彼は言った。「『関数の実行がとても簡単になるから、1000個も関数を作ってしまおう』と考えてしまう。でも、それでは問題が起こります」
マイクロサービスをさらに細分化して個別の機能にすることは理にかなっているかもしれないが、「その詳細は外部から隠すことができるので、気が変わるかもしれません。それらの機能を再び統合するか、さらに細分化するかを決めるかもしれません」と同氏は述べた。
マイクロサービスは論理ユニットであるべきであり、FaaS は実装の詳細であるべきだと彼は述べた。
パブリッククラウドの支持者であるにもかかわらず、ニューマン氏は技術面以外の懸念も認識している。「権力が少数の者に集中しつつあります」と彼は述べた。「これらは社会経済的な懸念であり、議論の余地があります。」
Kubernetesの話題が盛り上がる中、サーバーレスへの注目度は低すぎるのではないでしょうか。ニューマン氏の言う通りです。ただし、注目すべきは、一部のサーバーレスプラットフォームはKubernetes上で動作しており、Googleのプラットフォームはまさにその典型と言えるでしょう。®