クラウド&データセンター完全ガイド:特集

本格稼働するオブジェクトストレージサービス

Amazon S3(Simple Storage Service)――Amazon Web Servicesを支えるS3の概要と魔力

Amazon S3(Simple Storage Service)

Amazon Web Services

長い前振り

 エンタープライズシステムにおいて「クラウドは、まだ利用していない」という方も多数おられると思うが、そういう方でも「AWS」の3文字は何度か耳にしているに違いない。AWSは、Amazon Web Servicesの略だ。いまや世界最大のオンラインショップ(年商5兆7000億円)となったAmazon.comの子会社の名前でもあり、その子会社が世界中で提供しているパブリッククラウドサービスの名前でもある(なぜか日本法人はアマゾン データ サービス ジャパン株式会社(以下 ADSJ)という名前になっている)。ユーザー数は数十万社ともいわれ、IT調査会社ガートナーによれば、IaaS系クラウド提供事業者において世界最強のプレーヤーと目されている。サービス開始は2006年。その時点で日本から利用することも可能だったが、2011年に日本上陸を果たし、日本のユーザーから非常に使いやすい存在になった。近年、特にエンタープライズ分野での利用が進んでおり、ユーザーは日々猛烈な勢いで拡大しているといわれている。

汎用的サービスの追求

 AWSは、いわゆる基盤系(IaaS、一部PaaS)のサービス提供に徹しており、アプリケーションレイヤなどの高付加価値なサービスには興味を示していない。実際「高付加価値ビジネスは我々のビジネスではない」と公言しており、「真にエンドユーザーに広く受け入れられる汎用的なサービスだけをできるだけ低価格で提供する」「企業努力によって価格を下げる余地が生じれば価格を下げる」というスタンスを明確にしている。これは他のインフラ系ITプレーヤー(IBM〜HPから、マイクロソフトやオラクルまで)とは真逆の発想である。これらのベンダーとの付き合いに慣れ切った方からすると、AWSの利用(あるいはADSJとの付き合い)は異次元の体験をすることになるだろう。

熱きコミュニティ

 最大の特徴は「ユーザー・コミュニティ」の存在だ。ひと言でいうとAWSのファンの集合体である。AWSで大きなメリットを得た人びとや、サービスに感銘を受けた人びとが、技術ノウハウを共有し、使い方の自慢話をし、AWSへの将来の期待を語る場である。コアなメンバは週末にかけて夜通し話し込んでいるというから恐れ入る。しかも運営はボランティア、参加は無料、懇親会は自腹である。この場はユーザー自身のカジュアルな集まりであり、AWS(ADSJ)は(若干の支援はしているが)主催者ではないのである。そして、このようなコミュニティがいまや全国36支部に拡大しており、ほぼ毎週、日本のどこかでイベントが行われている。

 なお、ファンの中にはブログ等で情報公開している方も多く、特にAWSの新サービスや新機能がリリースされると、またたくまに「使ってみた」「試してみた」などの情報が競うように開示される。AWSに関するほとんどの情報はインターネットの検索によって得ることができるのが実情だ。それでもなお、人びとは、先進的な事例や口コミ情報、人的交流を求め、お互いの熱気を確かめ合うように集うのである。

お好きなサービスは?

 AWSのコミュニティで行われるユーザー同士のプレゼンテーションには、ひとつの「お約束」がある。自己紹介の際に、自分の所属や興味や趣味などを述べるが、それと併せて「AWSで一番好きなサービスの名前」を当然のように付言するのである。AWSは、ITインフラにかかわる多種多様(約40といわれる)なサービスがある。詳解は避けるが、代表的なところで、EC2(Elastic Compute Cloud)、EBS(ElasticBlockStore)。本稿で紹介するS3(SimpleStorage Services)。その他にも、RDS、VPC、SNS、SQS、EMR、が挙げられる。3文字略語ばかりではなく、CloudWatch、CloudFront、Elastic Beanstalk、Route53、Elastic Transcoder、など印象的な名前のものも多い。「一番好きなサービス」を表明するのは一種の「お遊び」だと思われるが、意外と発表者の素性や視点、ビジネス上/技術上の関心事項が滲み出てきて興味深く感じられる。

 さて、AWSのCTO(本家AmazonのCTOでもある)のワーナー・ヴォーゲル(Werner Vogels)が来日し、秋葉原で行われたユーザー・コミュニティに招かれて講演をしたことがある。同氏は上記の「お約束」を承知していなかったので、フロアからこの点について質問が飛んだ。CTOが自社サービスの中で最も気に入っているものは何なのか? 筆者の予想は完全に「あたり」だったので思わず小躍りしたものだ。同氏は、最も地味なサービスである「S3」を称揚したのである。

 その理由は後述するとして、前振りが長くなったので、まずは、S3について解説していこう。

技術的特性

 S3は、いわゆる「オブジェクトストレージ」「クラウドストレージ」と呼ばれるサービスである。多くのクラウドプレーヤー(AWSの競合)が、同様のサービスを提供しているが、そのほとんどがS3との類似性やAPIレベルの互換性をうたっている。S3はこの分野でデファクトスタンダードを形成しているといっていいだろう。

 S3は、インターネット空間上にある容量無限のストレージ装置とでも考えればよく、GUIや、自前ツール(APIをたたく)、市販ツール(無料のものもある)経由で、ファイル(オブジェクト)を置くことができる。当然、置く、削除する、名前を変更するなどは平易に行える。RESTおよびSOAPインターフェイスを使用するオブジェクトストレージであり、ファイルサーバーではないので、S3上でファイルの一部分を更新することはできない。ファイル内部の一部を更新する必要がある場合は、更新したオブジェクトを別のところで生成し、全体を上書きすることになる(これを意識させずにあたかもS3をファイルサーバーのように見せるツールなども存在している)。

 置かれたオブジェクトはインターネットを経由して世界中からアクセス可能な状態にすることもできるし、特定ユーザーのみに解放することもできる。データ保護のための暗号化オプションも備えている。

 ストレージ装置やその管理技術、インターフェイスを司るサーバーの仕様など、技術的な詳細は公開されていない。

可用性

 東京リージョン(東京近郊)で、複数のデータセンターによる冗長構成を組んでいる。1つのオブジェクトの書き込みを行うと、2個所以上(3個所以上という説もある)のデータセンター(いずれも地理的に相当離れており、電気系統、地盤、水系において独立している)でデータが保持される。どのデータセンターでどのような状態でデータが保持されているかユーザーが気にする必要はない(ユーザーからも見えない)。いってみれば、データセンターレベルでミラーリングしていることになり、極めて高い可用性がもたらされる。AWSは「99.999999999%(イレブン9)の堅牢性と99.99%の可用性」をうたっている(図1)。前者はデータ喪失の可能性であり、複数のデータセンターがすべて同時に壊滅する確率を100%から引いて計算されていると考えればよいのではないか。後者はRESTおよびSOAPインターフェイスの一時的なレスポンスの問題のようだ。単純計算すると一カ月当たり4分間の停止が許容されている……と読めなくもないが、この問題に直面したとか、心配しているという話は聞いたことがない。B2C用途など、「頻繁にアクセスされるが、一瞬たりともダウンさせたくない」場合には別の(現実的、かつ、優れた)方法があるので、後述する。

図1 データ保存の基盤(出典:AWSマイスターシリーズ Amazon Simple Storage Service (Amazon S3)、2013.03.27、アマゾンデータサービスジャパン株式会社 ソリューションアーキテクト 北迫 清訓、p.6)

価格

 リージョン(米国東海岸、西海岸、シンガポール、南米、欧州、オーストラリア、がある)によって微妙に異なるが、日本(東京リージョン)では表1の価格体系となっている。

表1 AWS東京リージョンの価格体系
容量累計スタンダードストレージ低冗長化ストレージ
最初の1TB/月~1TB$0.10/GB/月$0.08/GB/月
次の49TB/月~50TB$0.09/GB/月$0.07/GB/月
次の450TB/月~500TB$0.08/GB/月$0.06/GB/月
次の500TB/月~1PB$0.07/GB/月$0.06/GB/月
次の4000TB/月~5PB$0.07/GB/月$0.05/GB/月
次の5000TB/月~10PB$0.06/GB/月$0.04/GB/月

出典:AWSのウェブサイトより著者改編
注:「累計」とは、最左カラムの容量の表示を累計的に表示したもの。
注:本文中に詳解したサービスは表中の「スタンダードストレージ」に相当する。
注:低冗長化ストレージは、単一のデータセンタ内での冗長構成による廉価版サービス。堅牢性は99.99%とされている。

 使えば使うほど単価が安くなることがわかる。オブジェクトは1バイトから置くことができる。表にある課金体系はギガバイト単位だが、1バイト置いた瞬間から1GB分課金されるわけでは「ない」。驚くべきことに容量に応じて、かつ、置いた日数に応じて按分されるようである。たとえば、表1によれば「1GBのオブジェクトを1カ月置いた場合の課金は$0.10」だが、「0.5GB(2分の1ギガバイト)のオブジェクトを半月(2分の1カ月)置いた場合の課金」は、どうやら、$0.025(料金表の4分の1)となっているようだ。1オブジェクトの最大サイズは、5TB(5000GB)とされている。

 1オブジェクトで5TBだろうと、1000オブジェクトで5TBだろうと料金は変わらない。これだけの容量のデータの保管について、オンプレミスでは相当の苦労を伴うことが推察されるが、AWSの解は明快だ。単純にS3上に置けばイレブン9の堅牢性が確保される。保存料は、

1TB(1000GB)×$0.10+4TB(4000GB)×$0.09=$440.00

となる(低冗長化ストレージなら$352.00)。本稿執筆時点(2013年7月)の円ドルレート(約100円/ドル)で、約4万4000円/月(低冗長化ストレージなら約3万5000円/月)となる。5TBで月額44000円なら、3年間(36カ月)で約160万円であり、「5TBのストレージ装置を買ったほうが安いのではないか」と考える方もおられるかもしれない。しかし、この比較は装置の設置場所、保守料金、電力料金、アクセス制御の手間、災害発生時の可用性、遠隔バックアップ、イレブン9の堅牢性の担保のためのコストなどを考えていない。このようなファクタをすべて考慮にいれれば、上記費用は圧倒的に安いといえるのではないか。

エラスティック(伸縮自在性)

 また、5TBが、1年後には10TBになることが予想されているのであれば、オンプレミスの装置としては10TBのもの(実際には余裕を見て20TBくらいのもの)を購入するのが当然だ。その分、装置の初期コストや保守料は跳ね上がってしまうし、物理的にも場所を食う。予定通りデータ容量が10TBになったとしても、残り10TBは無駄なままだ。せっかく20TBのものを買ったにもかかわらず、1年後に3TBしか使わなかったとすれば17TB分は完全に無駄になる。別の可能性として、事業拡大によりデータ量が30TBになろうとしていても、20TBしか格納できない以上、10TBは「機会損失」となって事業貢献できない可能性も生じる。IT管理担当者にありがちな典型的な悩みである。

 AWSのS3は、この悩みがない。「初期費用ゼロ」「事前予約ゼロ」だからである。価格表を見れば察せられるが、10PB(10TBではない)までは事前協議や容量予約などを気にすることなく、いきなり普通に使い始めればよいのである(この場合の月額課金は6300万円を超えると試算される)。逆に、この規模であっても、利用をやめる場合にAWSに事前通告を入れる必要もない。単純にユーザーがデータをすべて削除すれば次の瞬間から課金もゼロになる。極めて「クラウド」らしい特性といえる。

主な用途

 汎用的な技術であるので、用途は多種多様である。AWSのサービスを使いながら、データの保管場所としてS3を使う方法が一般的だが、AWSの外部からS3だけを使う方法もある。以下、紹介してみたい。

ビッグデータの保管場所

 AWSには、いわゆるビッグデータを処理する基盤的なサービスが用意されている。EMR(Elastic Map Reduce)や、DynamoDB、RedShift等である。これらのデータの入口/出口として、S3が活用される。

 この他にも、ビデオエンコーディングのサービスのように大型のデータのハンドリングをする際にもS3が利用されている。

静的コンテンツの置き場

 Webサーバーをホスティングしている場合で、動的コンテンツはWebサーバー側で処理するが、静的なコンテンツはS3上に置くという手法がある。Webサーバー側の負荷を下げるなどの効果がある。

 動的コンテンツをまったくもたないWebサイトであれば、すべてのコンテンツをS3上に置き、S3だけで(Webサーバーなしで)Webホスティングすることができる。AWSも「月額10円〜でレンタルサーバーを始める方法」としてキャンペーン中である。ファイルをアップロードする際には、AWSの標準的なGUI画面(Amazon Management Console)を使うか、各種ツールを使う。

 ソフトウェアのアップデートモジュールやパブリックドメインの大容量データなど、公開前提のオブジェクトを置いておくには便利ではあるが、さすがに世界中からアクセス集中があるとやや心もとない。特にB2Cの分野で顧客向けサービスに使うとなるとレスポンスや可用性が心配になる。このようなときは、Amazon CloudFrontというCDN(Content Delivery Network)のサービスと組み合わせると良い。世界42個所のエッジロケーションにコンテンツがキャッシュされ、エンドユーザーから最適なルートでの高速アクセスが実現できる。

遠隔保管

 オンプレミス環境のファイルサーバーなどのバックアップ先としてS3が使われる。最近はNAS装置がこの機能を有しているものがあり、インターネット接続可能なLANの上に設置し、機器にAWSのアカウント情報を登録しておけば、自動的にバックアップをS3上に保存してくれる。災害などにより装置が全壊したとしても、新たな装置を購入し、AWSアカウント情報を入れることで、S3上のバックアップからの「戻し」が自動的に行われる。同様の機能をソフトウェアで実現しているものもある。

アプリケーション経由で使う

 前項(遠隔保管)のソフトウェア版に近いが、S3の存在を意識させずにサービスとして提供されるものがある。代表格はDropboxである。個人で使っている方も多いと思うが、機能がシンプルで、エンタープライズ用途でファイル共有/バックアップ用途でも使える。

 AWSには多種多様なサービスがあると述べたが、すべてのサービスにはなんらかの形で「保存」が伴っている。たとえば、サーバー(インスタンス)のイメージ(バックアップ)や、各種の設定値は、すべてS3上に保管されている(このとき、ユーザーがS3を意識することはない)。つまりS3はAWS全体を支える寡黙な基盤なのである。AWSのCTOが「S3が一番好きだ」というのもうなづける。

利用開始まで

 前述の用途を俯瞰してみると、S3を直接使うことはあまりないことがわかる。どうしても直接使ってみたいという場合は、以下のような流れになる(画面1〜画面3)。

(1)AWSのアカウントを開設する

 AWSのWebサイトに専用の申し込み画面がある(画面1)。手元に電話とクレジットカードがあれば、開設は数分で可能だ。申し込み画面から、ユーザー情報や電話番号、クレジットカード番号などを投入する。確認の電話(日本語の自動応答)がかかってくるので、そのとき画面に表示されている暗証番号をダイヤルすれば完了である。

画面1 アカウント設定

(2)Amazon Management Consoleを開く

 AWSの専用画面からログインする(画面2)。さまざまなサービスのアイコンがあり、利用状況を表示するタブやグリッドなどが表示される。最初の瞬間では中身はすべて空である。この時点まで1円も課金されない。このまま何カ月も放置していても問題はない。

画面2 コンソールホーム

(3)Amazon S3の画面を開く

 (2)からS3のアイコンをクリックするなどして、S3専用の管理画面を開く(画面3)。バケット(オブジェクトを入れるフォルダのようなもの)の作成/削除、オブジェクト(ファイル)のアップロード/ダウンロード/削除などの機能が、すべて直感的なオペレーションで可能となっている。オブジェクトの公開/非公開。公開する際のURLの確認などもここから行える。

画面3 S3ホーム

(4)課金状況を確認する

 AWSの専用の画面で、「昨日までの課金状況」が確認できる。月初の数日間は暫定的な金額が表示されるが、その後は正確な料金が表示される。この時点でクレジットカード会社に請求が行われ、すべて(AWS〜クレジットカード会社間のトランザクションが)正常であれば、その旨も表示される。円ドルレートは、この日のレートが適用されるようだ。この時点で前月分の利用料についてAWS側から見た決済は完了している。以後のプロセスは、クレジットカード会社とユーザーの間のサービスや契約に依存する。

 AWSは世界で数十万人のユーザーがいると述べたが、S3には彼らが置いたデータが粛々と蓄積されている。AWSの公式発表によれば、その数は1兆個を超えたそうである。オブジェクトが失われたことも、ユーザーが意図しない形でデータが漏洩したことも、過去に一度もないとのことだ。

Amazon Glacier

 これだけ使われていれば、S3は、AWSにとって「ドル箱商品」といえそうだ。汎用性も可用性も十分に確保されており、顧客の満足度も高い。もし筆者がAWSの立場なら、S3の規模の拡大だけを目指し、積極的な投資は行わないだろう。投資をしたとしても、若干の機能追加にとどめ、少し利用額を上乗せする程度にとどめるに違いない。

 しかし、AWSはこれをあっさり否定してみせた。2012年12月に投入された「Amazon Glacier」がそれだ。機能は後述するが、AWSが膨大な投資をしたことは予想に難くない。しかも、価格面でS3の十分の1程度の商品として投入してきたのだ。S3にとってみれば、一種のカニバリ(社内競合)である。この英断には脱帽せざるを得ない。

Glacierのターゲット

 Glacierのターゲットは次のようなものだ。ユーザーのデータの中には、長期の保管義務があるものがある。金融系のトランザクションや医療系のデータなど、公的な要請に基づくものも多い。S3に置かれたオブジェクトのなかには、上記のように、「めったに参照されない」が「超長期の保管義務のあるデータ」がある。この種のデータの保管に際しては、「即座に参照/ダウンロードできる」S3は、オーバースペックといえる。1GB/月=$0.10のサービスは過剰なのだ。このようなデータは、S3ではなく、Glacierでの保管が望ましい(図2、表2)。即座にはデータを取り出せない(申請から数時間かかる)仕組みであったり、ファイル名を指定できないなどの弱点はあるが、それを補って余りある価格体系であることは間違いない。

 すでに、一部のデータセンター事業者が、顧客向けのバックアップサービスの一環として、Glacierを利用したサービスを検討中とも聞いた。従来型のデータセンターと最先端のパブリッククラウドが相互補完しながら新たなサービスを切り開いていくという意味では、興味深い構図といえるだろう。今後の動静に注目したい。

図2 Amazon Glacierの機能(出典:AWSマイスターシリーズ Reloaded Amazon Glacier、2012.11.12、アマゾンデータサービスジャパン株式会社 ソリューション アーキテクト 北迫 清訓、p.17)
表2 Amazon S3とGlacierの違い(出典:AWSマイスターシリーズ Reloaded Amazon Glacier、2012.11.12、アマゾンデータサービスジャパン株式会社 ソリューション アーキテクト 北迫 清訓、p.35)
Amazon S3Amazon Glacier
Object (S3) VS Archive(Glacier)ファイル単位ファイルもしくはアーカイブされたファイル単位(ZIP/TAR等)
上書き更新可能WORM (Write Once Read Many) アーカイブの更新不可
リスト可能なインデックスインデックスなし
オブジェクト名指定可能システムが生成するアーカイブID
同期ダウンロード非同期ダウンロード
オブジェクトレベルでのアクセス管理アーカイブ単位でのアクセス管理なし
スタンダード + 低冗長化ストレージスタンダードのみ
Server Side Encryption選択可自動Server Side Encryption
LISTによるメタデータ情報参照Inventoryによるダウンロード方式のみ
Bucket (S3) VS Vault (Glacier)アクセスコントロール(IAM + Bucket Policy)アクセスコントロール (IAMのみ)
SNSによる通知設定可SNSによる通知設定可
ログ設定可ログ設定不可
ライフサイクルポリシー指定可ライフサイクルポリシー指定不可
Webサイト機能Webサイト機能なし
データ格納同期型同期型
オブジェクト名指定可能システムによるアーカイブID自動生成
データ取得同期型非同期型
Jobによる処理要求
オブジェクト名でのアクセスアーカイブIDでのアクセス