Amazonのウェブサービス内部

Table of Contents

Amazonのウェブサービス内部

2006 年、Amazon.com は、無制限のインターネット ストレージを提供する Simple Storage Service (S3)、信頼性の高いメッセージ配信を実現する Simple Queue Service、開発者が仮想サーバー インスタンスをプログラムで作成および管理できる Elastic Compute Cloud (EC2) など、開発者向けの Web サービスをいくつか開始しました。

革新的で、従量課金制のリーズナブルな価格設定で、概ね宣伝通りの働きをします。しかし同時に、ある日は書籍を販売し、次の日はウェブサービスを販売するのは矛盾しているようにも思えます。Amazon の CTO、Werner Vogels の顔写真。先月のロンドンQConで講演したAmazonのCTO、ヴェルナー・フォーゲルス氏によれば、そうではないようです。

「Amazonは単なるインターネット書店ではなく、テクノロジープラットフォームです」と彼は言う。「Amazonの秘訣はパーソナライゼーションやレコメンデーションにあると思われるかもしれませんが、Amazonの真の強みはスケールアップ力にあります」。Amazonのウェブサービスは、余剰リソースを活用するだけでなく、サードパーティにもプラットフォームを開放している。

Amazonのウェブサービス導入の障壁となっているのは、SLA(サービスレベル契約)が存在しないことだ。そのため、一部の企業はデータや重要なサービスをAmazonに委託することに躊躇している。「彼らの言うことは全く正しい」とヴォーゲルス氏は率直に語る。「これはまだ発展途上のビジネスだということを理解する必要があります。ですから、私たち自身で、どのように保証を提供するかを考えなければなりません。保証した上で、その保証を果たせないのは理にかないません。顧客に嘘をつくのではなく、現時点では高速で信頼性が高いという大まかな説明以外に保証はないということを説明する方が賢明です。」

とはいえ、データを失った人はいますか?障害はありましたか?「誰のデータも失っていません。パフォーマンスの急上昇は数回ありましたが、全員に影響はありませんでした」とヴォーゲルス氏は言います。「Amazon.comでも、障害は大きな経済的打撃となるため、そのような事態を避けるようにしています。S3とEC2でも同じ手法を採用するようにしています。」

SLAがない代わりに、Amazonのサービスは低価格です。例えば、S3は1GBあたり月額0.15ドル、データ転送量1GBあたり0.20ドルです。一方、EC2のサーバーインスタンスは、1.7GHz x86プロセッサと1.75GBのRAMを搭載したサーバーに相当すると言われており、1インスタンスあたり1時間あたり0.10ドルです。初期費用はかかりません。Amazonは今後も低価格を維持する方針ですか?「もちろんです。こうしたサービスが意味を成すには、安価である必要があります」とVogels氏は言います。「こうしたシステムの開発を推進するのは、ユーティリティコンピューティングのモデルなのです。」

AmazonのウェブサービスAPIは最初のリリース以来ほとんど変わっていませんが、Vogels氏は将来的な機能強化を示唆しています。興味深い分野としてWebDAVを挙げています。よくある要望として、認証と課金に関するものがあります。「開発者の中には、顧客認証をAmazonが独自に処理し、S3の使用料を直接請求してほしいという要望もあります。」

現状では、S3アプリケーションのエンドユーザーであっても、開発者としてサインアップする必要があります。「まだ何か不足している点はありますか?はい。Amazonがそれらに対応するかどうか?おそらくそうでしょう。しかし、まずはストレージ、CPU、通信、キューといった基本的なサービスが確実に動作することを確認する必要があります。まだ学ぶべきことがたくさんあります」とVogels氏は言います。

AmazonのSOA実装方法

Amazon の社内開発では、小規模チームによるモデルが採用されています。各チームはビジネスの小さな部分を所有し、それをサービスとして構築します。「社内にはサービス指向アーキテクチャがありますが、これはサービス指向が流行語になる前から行っていました」と Vogels 氏は言います。チームは自律的であり、つまり、合理的な範囲で、自分の好みの言語とツールを選択できます。「エンジニアには、独断で突飛なことをしないだけの賢さを求めています」と Vogels 氏は語りました。「Perl はまだ多く使用されていますが、完全に Perl で構築されているものはそれほど多くありません。C++ と Java もあります。Amazon 内には成長を続ける Ruby コミュニティもあります。さらに、JBoss や Tomcat、あるいは自社開発のコンテナもあります。

私たちはエンジニアが正しい選択をしてくれると信じています。彼らはそれを管理する必要もあります。彼らはフルサイクルの中にいるので、テクノロジーの選択肢を限定しなければなりません。それが正しい選択をするための非常に良い動機付けになります。

社内に多様なテクノロジーが存在することは、相互運用性に問題があることを示唆しています。「サービスとは何かについて、非常に厳格なガイドラインを設けています」とヴォーゲルス氏は言います。「クライアントとサーバーの間では、ネットワークに依存しないアクセスメカニズムを規定する契約が交わされます。しかし、そこにはSLAも明確に規定されています。Amazonでは、クライアントとサーバー間のSLAについて非常に厳格な基準を設けています。そのため、相互運用性は標準的なメカニズムを通じて実現されています。その一部は自社開発のプロトコルであり、その他は標準的なRESTサービスやWebサービスです。しかし、その記述は固定されており、つまり、内部的に多くの依存関係があるため、サービスがAPIを次々に変更することはできないのです。」

Amazonが社内ではSLAに依存しているにもかかわらず、顧客にはそれを提供しないのは皮肉なことです。とはいえ、Amazonの手頃な価格のオンデマンドコンピューティングには、魅力的な点が数多くあります。

Amazon の Web サービスの詳細については、こちらをご覧ください。®

Discover More