AWSはなぜ、ECSがあるのにKubernetesのサービスを始めたのか、コックロフト氏に聞いたAWSとオープンソース(1)

Amazon Web Servicesが、オープンソースへの取り組みを強めている。同社は具体的に、何をどのようにやろうとしているのか。AWSクラウドアーキテクチャ戦略バイスプレジデントのエイドリアン・コックロフト氏へのインタビューを、2回に分けてお届けする。前半では特に、Kubernetesベースのコンテナ管理基盤運用サービスを提供開始した理由などを聞いた。

» 2018年06月11日 05時00分 公開
[三木泉@IT]

 Amazon Web Services(以下、AWS)が、オープンソースへの取り組みを強めている。同社は具体的に、何をどのようにやろうとしているのか。本連載では、同社におけるオープンソースへの取り組みを指揮する、AWSクラウドアーキテクチャ戦略バイスプレジデントのエイドリアン・コックロフト(Adrian Cockcroft)氏へのインタビューを、2回に分けてお届けする。

 第1回の今回は、「AWSがなぜ、どのようなオープンソース活動を進めているのか」「そして特にKubernetes関連では何をやろうとしているのか」「コンテナ環境としては『Amazon Elastic Container Service(Amazon ECS)』を提供してきたのに、なぜマネージドKubernetesサービスの『Amazon Elastic Container Service for Kubernetes(Amazon EKS)』を始めたのか」などについて聞いた部分をお届けする。

AWSクラウドアーキテクチャ戦略バイスプレジデントのエイドリアン・コックロフト氏

 Netflixでクラウドアーキテクトを務め、オープンソース活動をリードしたコックロフト氏は、Battery Venturesを経て、2016年10月にAWSへ入社。その後、顧客とのコミュニケーションを通じて、そのニーズを取り込む活動の傍ら、オープンソースチームを組織し、これを指揮している。

 例えばAWSは2017年8月、Kubernetesおよび関連技術をホストするCloud Native Computing Foundation(CNCF)に加入。コックロフト氏は同時にCNCFのボードメンバーに就任した。

強いていえば、コンテナと機械学習/AIが基本トピック

――AWSにおけるオープンソース活動が対象としている分野は何か。

 過去1年の活動としては、コンテナ関連が最も目立った。一方で、AWSではPostgreSQL、Hadoopなどからサーバレス、機械学習、IoT、さらにはブロックチェーンなどへの取り組みも進めている。一部はAmazon本社も巻き込んでいる。

 私たちのチームは、社外に向けたオープンソース活動における主役を担っている。他社との調整やオープンソースカンファレンスへの協賛など、多様な活動をしている。

 CNCFへの加入は、2017年において一番目立った活動の1つだ。同ファウンデーションについては、フルタイムで関わっているスタッフがいる。

――では、コンテナあるいはCNCF関連に最も力を入れているということなのか。

 これまではCNCFと機械学習に最も多くの時間を割いてきた。今後を考えると、さまざまな点で、機械学習/AIがコンテナよりも大きな活動になりそうだ。だが、特にどれに力を入れているということはない。それぞれが違う活動を必要としている。

 コンテナ関連は、Kubernetesベースの製品を出したことと、このコミュニティとの関わり方がはっきりしたことで、注目を集めている。

 私たちがCNCFに加入した理由は、Kubernetesを(そのまま)製品化したかったからだ。CNCFのメンバーになることなく、やることもできただろう。だが、それは正しいやり方ではないし、ぎこちない方法だともいえる。

 要するに、AWSはPostgreSQL、Hadoop、AIフレームワークなど、数々のオープンソースコミュニティに対し、コントリビューションを行ってきた。だが、私のチームが生まれるまで、そのことが積極的に語られることはなかったし、正当な評価を得られていなかった。当社は、(オープンソースに関して)ほとんどの人が考えるよりも多くのことをやってきた。だから私のチームは、やってきたことに対する正当な評価を得るための活動をする。

 その上で、新たな活動を進める。私たちは、社外の人々がオープンソースに関してAWSが何をやっているかを知るための、単一の窓口として機能する。さらに、NetflixやCapital Oneなど、独自にオープンソース活動をしている企業との連携を図っていく。

 AWSがオープンソースに力を入れるのは、顧客がこうした活動を私たちに求めているからだ。人々は私たちに、「MySQLを運用してくれ」「Kubernetesを運用してくれ」「OracleからPostgreSQLへの移行を容易にしてくれ」といった要望を投げ掛けてくる。こうした声に応えるのが目的だ。

AWSはコードをフォークしてきたのではないのか

――私は、「AWSがオープンソースソフトウェアを自社サービスで利用する過程で、コードをフォークさせている」という不満を、一部の人々から聞いている。

 そうしたこともあったし、改変をコントリビューションしたこともある。

 例えば2017年には、Hadoopでオートスケール機能をコントリビューションした。フォークすることもできたが、そうはしなかった。Redisについても、暗号化機能をコントリビューションしている。

 私たちは、社内の開発チームに対し、オープンソースについてもっと積極的に活動するよう、促している。これによってコントリビューションはさらに増えていくだろう。

 オープンソース活動に(直接)関与する人員を増やそうとしているし、さらに多くのオープンソースプロジェクトへの参加を通じ、オープンソースのコンポーネントを活用した製品を多数構築していこうとしている。

 世界はオープンソースに向かっている。世の中で最良のテクノロジーは、大部分がオープンソースに基づいている。例えば、優れた機械学習フレームワークは、全てオープンソースだ。クローズドソースのソフトウェアは後れを取りつつある。

――関連して、(Kubernetesをサービス化したように、)多くの人々が認知し、好むオープンソフトウェアを、使いやすいサービスとして提供することが、今後ますます重要になると考えているのか?

 そうだ。ユーザーが感じてきた不便さは、特定のテクノロジーを試したり、採用したりすることが、これまで困難だったことにある。

 独自技術に基づく製品に依存してきたこれまでの企業データセンターの世界では、ソフトウェア製品をちょっと試したいだけでも、ベンダーに連絡し、実証環境を構築し、実証のためのライセンスを取得しなければならず、1カ月ほどかかってようやく試せるようになる。試用するだけでも大きな出費だ。そして本番利用するとなったら、複数年にわたる企業単位の契約を結ばなければならず、(ライセンスの適切な利用についての)監査を受ける羽目になる。大企業では、これが当たり前だ。

 一方、オープンソースソフトウェアでは、GitHubなどからコードを手に入れればいい。(例えば)10分後には、好きか嫌いかを判断できる。何かをやりたいときに、関連するツールを全て試すこともできる。試すだけなのに、ライセンスを買わなければならないといったことはない。試してみて、他が良ければ乗り換えるのも簡単だ。大した投資が要らないため、利用を撤回するのも簡単だ。

 AWSもこれに似ている。無料枠もあるし、いろいろなソフトを自由に試せる。例えば「AWS Lambda」を使ったアプリケーションは、2日で書き上げられる。

 私たちの方法では、何かをやるのにあなたが払う犠牲は少しずつだ。エンタープライズソフトウェアにおけるロックインに代わって、(オープンソースとパブリッククラウドでは、特定のソフトウェアに対する)依存度が極小化できる。さらにあなたは、常時リファクタリングできる。

 要するに、依存度についての考え方を、従来よりもアジャイル化できる。例え一方通行であっても(訳注:特定のサービスにしかない機能であっても)構わない。Amazon DynamoDBの機能が気に入ったなら、私はDynamoDBを使う。他のものを使いたくなったとしても、移行は簡単だからだ。

 人々は、「何かを試したり、本番利用したり、利用を停止したりすることに、どれだけの作業を要するか」という点に基づいて、現実的な判断を行っている。

なぜECSの他に、Kubernetesベースのサービスを展開するのか

――そうであるなら、なぜAWSは既にECSがあるにもかかわらず、EKSも提供しようとしているのだろうか。

 ECSはAWS上でしか動かない。

――「それでも構わない」とあなたは言ったではないか。

 この業界における、もう1つの長年にわたる課題に、データセンターの自動化がある。企業が仮に、自社ITの全てをAWSへ移行するつもりであっても、社内データセンターが消え去るまでには、まだまだ時間がかかる。撤廃までの間、より整然として自動化された方法で、運用したいというのが多くの企業の本音だ。

 データセンターを自動化するための汎用的な手法として、今注目されているのがKubernetesだ。一方ECSはAWS上でしか使えないため、こうしたニーズに全く対応できない。

 Kubernetesを使ったサービスの提供については、2つのことが言えると思う。

 1つは、クラウドと同じことをデータセンターでやりたいというニーズだ。こうした場合、クラウドとオンプレミスで同一のものを使えるということが要件になる。

 このため私たちはKubernetesで、CNCFに認定された、フォークしていないバージョンを提供する。あなたが社内で動かしているのと全く同一のソフトウェアを動かす。結果として、これ以上ないほど可搬性が高まる。

 一方で、(新しいアプリケーションを)構築するスタートアップ企業や開発者のことも考える必要がある。

 こうした人たちは、ホットな技術に着目し、自身のアプリケーションを開発する傾向が強い。この「ホットな技術」として浮上したのがKubernetesと、おそらくサーバレスだ。

 つまり、Kubernetesを採用したサービスをAWSが生み出した理由は、「ポータビリティ(可搬性)」と機能性だ。

 ECSはKubernetesに比べてはるかに運用がしやすく、低コストで、マルチテナントのプラットフォームとしての効率が非常に高い。一方Kubernetesは、(仮想)マシン数にして100から1000くらいまでの、中小規模データセンターに向いている。そのコントロールプレーンは、マルチテナント環境でスケールするようになっていない。

 このため、AWSではECSを大規模環境向け、EKSを中小規模環境向けに提供していく。

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。