【Cloud Days基調講演】“AmazonはAWSのクラウドを使っているの?”という疑問に答えます
クラウドやビッグデータに関するイベント「Cloud Days Tokyo 2012 Conference&EXPO」が、2月28日から29日まで、東京国際フォーラムで開催されている。28日の基調講演では、Amazon Web Services(AWS)のPrincipal Quantitative EngineerであるJohn Rauser氏が登壇した。
冒頭で自ら「で、AmazonはAWSを使ってるの?」という疑問を投げかけたRauser氏は、Amazon社内でのAmazon EC2/S3などの利用事例を紹介。さらに、ともすればバズワード化しがちな“ビッグデータ”の技術的な意味についても、自社のスタンスを語った。
Amazon Web Services社 Principal Quantitative EngineerのJohn Rauser氏 |
■急増するAmazonアソシエイトの支払い計算をHadoopで分散処理
まず、Amazonのアフィリエイトプログラムである「Amazonアソシエイト」の支払いの計算システムについて事例が紹介された。12年前に開発された計算システムは、単一のサーバーで動くもので、注文データベースに直接接続してデータをファイルに書き出し、集計するものだった。これを拡張して2008年まではうまく動いていたが、注文数が急増するにつれて処理が追いつかなくなったという。
「こんな問題は、みなさんのところでもあるでしょう」とRauser氏。最初はうまく動いても、データ量が増えるにつれてだんだんうまくいかなっていくというケースだ。これに対応するためにマシンを増やすと分散処理の問題に頭を悩ますことになる。「サーバーが複数台になると急激に難しさが増し、神のようなプログラマーが必要になる」という。
そこで、Amazonでは分散処理基盤のHadoopの上でシステムを作り直した。Hadoopでは、処理を小さな単位に分割して分散し、処理する。新しいAmazonアソシエイトのシステムでは、データを一度Amazon S3に格納。そうした100GBオーダーのデータを50ノードのHadoopクラスターで処理しているという。
Hadoopによって、サーバーの台数が増えた分だけ分散処理がリニアにスケールし、「ビッグデータになっても問題ない。神のようなプログラマーは不要になった」とRauser氏は説明した。
さらに、Amazonの11月シーズンでの処理の変動データを見せながら、「ピークのキャパシティに合わせてシステムを用意すると76%が無駄になる」と説明。しかも、バッチ処理は一日一回実行されるものだったりする。それに対してAmazon EC2とAmazon S3の上でHadoopが動く「Amazon Elastic MapReduce(EMR)」であれば、使ったぶんだけのコストで無駄なく利用できると、自社サービスの有用性を力説した。
■「複数台で分散処理する必要があれば、それはビッグデータ」
続いて紹介されたのが、配送センターの事例だ。関税での商品分類や、配送中に盗まれやすい商品の特別扱いなど、商品ごとに分類する必要がある。しかし、10億以上の商品があり、商品が日々増え、ピーク時は一日900万個の荷物が配送される。
Amazonではこの商品分類を、EMRを使った機械学習によってシステム化したという。Rauser氏はこうした処理について、「分散処理で迅速にデータを処理することで、意思決定をぎりぎりまで延ばせて有利になる。データの経済性が変わってきている」と論じた。
さらに、「ビッグデータ」という言葉の使われ方について言及。「ビッグデータというと、“極端に大きなデータ”の意味で使われることが多いが、われわれはそれ以下のサイズもビッグデータと考えている。複数台で分散処理する必要があれば、それは価値のあるビッグデータだ」と主張した。
3つ目の事例としては、オンラインストレージサービスの「Amazon Cloud Drive」とその上のクラウドミュージックサービス「Amazon Cloud Player」を紹介。その計測用システムをEMR上で動かしていることと、「ログ処理が仕事なのではなく、そこからイノベーションを起こすのが役割だ」というエンジニアの声を紹介した。
最後に再び「で、AmazonはAWSを使ってるの?」というスライドに戻り、「広く使っている。社内でもEMRを使っているし、それ以前からHadoopを使っていた。EMRのおかげで、大きな分散処理をちょっと試してみることもできるようになった」とEMRの利用状況を説明して、講演を終えた。