* この投稿は、米国時間 1月 9 日、Google Cloud Platform’s Global Head of Solutions, Miles Ward によって投稿されたものの抄訳です。
これからの数週間はコンテナ技術に関する私たちの見解についてお伝えし、 10 年以上にわたって Google のサービスをコンテナで運用していく中で得た経験を共有する記事をお届けしていく予定です。 Google のプロダクト マネージャー、エンジニア、オペレーター、アーキテクトからなるチームとしての私たちのゴールは「コンテナ レボリューション」が、効率的に目的を達成するアプリケーションを構築し、それを実行する上でどう役立つのかを皆さんに理解していただくことです。そこで、まずは Google Cloud Platform の Global Head of Solutions を務める Miles Ward を招きました。それでは始めましょう!
皆さん、こんにちは。そして、新しい連載へようこそ。この連載では、現代コンピューティングの最も重要なイノベーションの 1 つであるコンテナリゼーション(Containerization)についてお伝えしていきます。
ところで、コンテナについてこんな疑問を持ってませんか?
と、質問はもういいですね。このポストは、コンテナ テクノロジーを使うことにどんな意味があるのか、ということの入門編と考えてください。
コンピューティング モデルが進化する中で、あきらかにアプローチが変わる瞬間、その後の軸が変わるような瞬間を、これまで何度か目にしてきました。この 10 年は、まるで過去を無視するかのように、仮想化という変化が起こりました。仮想化のムーブメントによって、広範囲でリソース利用が爆発的に拡大し、価値を生むまでの時間、そしてサービスを提供するまで続けられる繰り返し作業の削減にもなったのです。そして、マルチテナンシー、API を使ったシステム管理、パブリック クラウドの到来により、その利点はさらに拡大していきます。そして最も大きなブレイクスルーは、コンピューターの CPU の 1 つのコアほどのリソースが、オンデマンドで数分のうちに利用可能になったということです。しかし、考えてもみてください、マシン全体のごく一部しか必要としないときに、マシン全体を仮想化する必要があるでしょうか?
Google は早い段階で、この問題に直面することになります。ソフトウェアを短い時間で、安価に開発し、これまでにない規模でオペレーションする必要に迫られ、もっと細かいレベルでの制御を可能にする、より高い次元で抽象化できる仕組みにが必要になったのです。そこで Linux カーネルの追加機能として作成されたのが、cgroups です。cgroups は、隔離した実行コンテキストを作ることができるもので、その実行コンテキストがコンテナです。コンテナは、一種の仮想化であり、全ての Google のアプリケーションを動かすために使われる単純化された OS でもあるのです。それから数年が経った今、Docker の優れたスタッフが、このテクノロジーを活用し、コンテナ化されたアプリケーションの相互運用可能なフォーマットの開発を続けています。
VM にはない、コンテナの特徴とは何でしょう?
では、こういった特徴によって、何がもたらされるのでしょう?
長期的な視点で、この技術の最も重要な価値は、多くのホスト環境でアプリケーションを実行できる、ポータブルで統一したフォーマットだということです。今アプリケーションを作るとしたら、ベア メタルから、オンプレミスの仮想化インフラ、パブリックやプライベートのクラウド、種々の PaaS も選択肢です。つまりソフトウェアをパッケージしデプロイするには、6 つの異なるやり方があるということです!コンテナのフォーマットが標準化されれば、プロバイダーの差がなくなり、1 つのプラットフォームにロックインすることを避けて、ワークロードをもっとも安価で、もっとも速い環境へと簡単に移していけるようになります。
コンテナや Docker コンテナの実装についての詳しい紹介、特にこことかここや、ここだとかあるので、ここではこのアプローチが「Good アイデア」である、と言っておけば十分でしょう。と言いつつも、課題がないわけではありません。コンテナによって細分化が進んできたことで、驚くほどのメリットがもたらされたものの、実行するワークロードの効率が大幅に向上するわけではなく、アプリケーションの実行に数千台のコンピューターが必要なワークロードもあるわけです。今のところ Docker は 1 つのコンピューターで動かせるように設計されています。では、どうすればコンテナとそこで動くワークロードを、インフラのリソース消費にあわせて連動させ、分散させ、それを管理していけるのでしょうか?どうしたらマルチテナントのネットワーク環境で運用できるのでしょうか?安全性は確保されるのでしょうか?
この論点で話をしてもいいのか?と、システム デザインの観点からの問いとしては、あまりに基本的なところなのですが、私が話をする大半の開発者やそのスポンサーは、ここにあるコンピューター上のこのコンテナということには関心がないのです。求めてるのは彼らのサービス、つまり、アプリケーションが起動して、動いて、価値を生み出し、それを監視して運用していくことだけなのです。どのコンピューターでどのコンテナが何をしているかといった取るに足らない(希望的観測、というやつです)細かいことは気にしません。
Google はこの問題に対しイテレーティブに取り組み続け、Google 規模でコンテナ技術の運用を可能にするためのクラスタ管理、ネットワーキング、命名システムを構築してきました。その最初のバージョンを Borg、そしてその後継が Omega と呼ばれています。今現在 1 秒あたりおよそ 7,000、週間では 20 億個以上の新しいコンテナが起動しています。そして、これまでの Google のコンテナに関する運用経験と技術的な知見から、Kubernetes (パブリック フォーラムでは「K8s」と短縮されることもあります)を構築し、世界に向けて公開しました。
Kubernetes は、個々のコンポーネントやコンテナ、あるいはインフラのリソースといったことよりも、開発者と管理者とが、サービスの挙動の改善やパフォーマンスの改善に向けて連携して取り組める、抽象的なレイヤーを作り出します。
Kubernetes のクラスターは、1 つのコンテナでは実現できない何を提供してくれるのか? Kubernetes は、コンテナというレベルではなく、サービスというレベルでコントロールする、そこににもう一度着目することで、サービス全体に対して知能的、自発的マネージメントを可能にします。サービスがスケールし、自己回復し、さらに更新も容易になるとしたら、それは「Good アイデア」の 1 つです。たとえば Google では、機械学習のテクノロジーを応用し、所定のサービスが最大効率で運用されるようにしています。
コンテナを使うことが、デプロイの面倒な作業を減らし、開発者の能力をもっと有益なことに使えるのだとすれば、Kubernetes はコーディネーションの混沌を最小化し、チームの能力を高めるものだと言えるでしょう。 Kubernetes を使うことで、多数のコンテナからなるサービスを構成し、そのコンテナが適切にオペレーションされるようにデプロイのルールに従わせられます。サービスの一部が、他の部分を台無しにしてしまうことなんて、ザラですからね! Kubernetes なら、こういったコンフリクトが系統的に回避されます。Google では、コーディネーションの改善によって、開発者の生産性とサービスのアベイラビリティが向上し、大規模環境でのアジリティを実現しています。
まだ初期段階ですが、 Kubernetes はすでに多くのお客様や多様な企業のチームに採用されています。企業には、Red Hat、VMware、CoreOS、Mesosphere も含まれ、お客様が、Kubernetes で大規模に利用されるコンテナ テクノロジーからビジネス的にも利益を生み出せるように積極的に支援しています。
Google Container Engine は、Google Cloud Platform 上の Containers as a service です。 Kubernetes を利用している GKE では 、開発者がコンテナを使って、アプリケーションをすばやく起動させて実行できる手段、そして、デプロイして管理し、必要なときは指定された範囲までスケールできる手段を提供しています。GKE については、今後の連載でさらに詳しい情報をお届けします。
私たちは、コンテナリゼーションをコンピューティング モデルの次の大きなシフトの始まりであると捉え、この革命の中で中心的な役割を担っていきます。コンテナについてわかったら、以下にリストしたデプロイの選択肢から、皆さんの要件に最も適合するものを探してください。
何にもまして、このイノベーションの中で、皆さんが何をしたか、どんなニーズがあるのか、そしてアイデア(プル リクエストも待ってます!)にとても関心があります。気軽に私まで連絡ください。また、出来る限りたくさんのカンファレンスやミートアップにも参加する予定です。皆さんの 2015 年から先の目標や抱負に、コンテナ技術がどうしたら大きな影響を与えられるか、お話しできることを楽しみにしています!
-Posted by Miles Ward, Global Head of Solutions, Google Cloud Platform
0 件のコメント :
コメントを投稿