実例で学ぶAWS入門:オーディエンスデータプラットフォーム「cosmi」を例に

第1回AWS超入門

こんにちは。株式会社adingoの小澤です。これから全4回にわたってAmazonWebService(AWS)について、実例を交えながら紹介したいと思います。紹介する内容は、⁠AWSとは?」という基礎的なところから始まり、なぜAWSを選んだのか? AWSのメリット・デメリット、分散処理やスケーラビリティ確保のための手法など、事業やサービスを作っている方が具体的にイメージできる事例をメインにした内容にしようと思っています。ぜひ最後までお付き合いください。

cosmiとは?

さて、このたびadingoでは新たにcosmiというプロダクトをリリースしました。この連載はAWSをcosmiが採択し、開発を進めていく過程で得られたノウハウなどをベースに話を進めていきます。そのためにまずはじめに少しだけcosmiというプロダクトについて紹介したいと思います。

cosmiとは、adingoが2011年9月にリリースしたオーディエンスデータプラットフォームです。ここではサービスの細かい仕様などは割愛しますが、簡単にいうと、WebページにHTMLタグを張り、そこからデータを取得し、得られたデータをデータマイニング分析し、どのような属性のユーザがサイトに訪れているのかなどを判別した上でフィードバックするというサービスです。イメージしにくい方はGoogle Analyticsのようなものをイメージしていただければよいかと思います。

2つの大きな要件

cosmiの構想が固まり、いよいよシステム要件に落とし込むと、大きく2つの問題にぶつかりました。

  1. どのようにスケーラビリティを持たせながらインフラを構築をすればいいのか?
  2. どのようにすれば、効率的に、安価に、高速に、膨大なデータ分析が可能になるのか?

当然自社ですべてインフラを構築するというプランもありました。しかし事業がどのくらいのスピードで成長するのか、またどのくらいの売上がついてくるのかわからない初期段階で、どの程度のインフラを用意するのが正解なのかわかるはずもありません。その中でクラウドなら、使いたいスペックの機器を、使いたい量だけ、自由に使うことができるというメリットがあります。私たちはクラウドサービスを利用することにしました。

なお、これらの問題について私たちがとった方法については、この連載の第2回、第3回でそれぞれ詳しく紹介したいと思います。

AWSとは?

AWSとはAmazonが提供しているクラウドサービスです。Amazonといえば本屋さんのイメージがありますが、現在Amazonは大きく3つの分野で事業展開をしています。1つは皆さんご存知のEC事業。2つ目はAmazon上にお店を作れるプラットフォームを提供して、店主から手数料をもらうプラットフォーム事業、そして最後の1つがインフラ事業です。AWSとはAmazonの3つのコアビジネスの中の1つなのです。

AWSとは、Amazonが所有する膨大なインフラの一部を間借りできるレンタルサーバの1つだと考えてもよいと思います。AWSでは 「使いたいサービス」⁠使いたい性能」⁠使いたい量⁠を指定してインフラを借りることができます。この3つを柔軟に指定できるのがAWSの特徴です。

1.使いたいサービスを選べる

AWSではWebサーバやDBサーバだけではなく、CDNやHadoop、ロードバランサやストレージ、監視サービスなどさまざまなサービスを提供しています。自分の目的に合わせて最適なサービスを借りることができます。

2.使いたい性能で借りられる

AWSでは、ほぼすべてのサービスで、高性能なものから安価で一般的なものまでさまざまな性能が提供されています。自分が構築するサービスの規模にあわせてそれらを選択することが可能です。

3.使った分だけ払えばよい

AWSの最も特徴的なことの1つが従量課金制だということです。契約するだけでは課金されません。高スペックのマシンを1時間だけ利用して重たい処理を走らせたり、1週間だけWebサーバを10倍にするなんてことも可能です。たとえばEC2と呼ばれるWebサーバのエクストララージインスタンス(超高機能なスペックのマシン)を1時間借りてかかる料金は約70円です(正確にはこれに加えてデータ転送料がかかります⁠⁠。

この柔軟性がAWSのクラウドサービスの最もすばらしいポイントでしょう。

そしてもう1つ忘れてはならないAWSのすばらしいポイントが、インスタンスを立ち上げたり、ストップしたり、ストレージの中身を確認したり、アクセス制限をかけたり、あらゆることがAWSの管理画面から行えるということです。

たとえば、cosmiではデータ分析のためにAmazon Elastic MapReduce(EMR)というサービスを利用しました。これはHadoopといわれる大規模データの分析インフラのクラウドサービスです。Hadoopは使ったことがあったのですが、EMRを利用するのははじめてだったので、データの転送や分析フローなどが本当に予想通りに動作するのか確かめるために、まずはテストをする必要がありました。本当に機器を用意したら、サーバを買って、Hadoopをインストールして、それを何台も準備して、分散させて……としなければならないところ、AWSでは管理画面からクリックするだけでそれらの環境が手に入り、検証が完了したら再度管理画面から終了すればそれで終わりです。

ちなみにEMRの料金は一番安価なsmallの場合、1時間で$0.115です。5台を3日借りてテストしても約3,000円です。cosmiではさまざまな検証をAWS上で行うことで、高速にプロトタイプを構築することができました。

AWSの実績は?

さて、クラウドといえばAWSだけではありません。しかしながらAWSの実績は圧倒的です。

これらを見ればわかる通り、今使っているそのサービスがAWSを利用していても何ら不思議ではありません。

図1 AWSを採用している企業例
図1 AWSを採用している企業例

また、AWSはこれまで海外のデータセンターでのみの提供でしたが、今年の3月に東京リージョンが開始され、より日本人にとって使いやすいサービスになっています。この東京リージョンの開始もAWSを利用するにあたった1つの要因です。

Amazon or not?

さて、ここまでAWSを利用するさまざまなメリットを紹介してきました。しかしながら当然AWSは完全ではありません。ここでは実際にAWSを利用したときに発生した問題点やリスクと、それに対する見解を紹介したいと思います。

1.サービスのSLAはAWSのSLA以上にできない

AWSが保証しているSLA(Service Level Agreement)以上に自社のサービスのSLAを上げることは容易ではありません。ただし事前にきちんとそれらに対して対策を行い、リージョン分けたり、Availability Zoneを分けたりすれば、1つ1つのインスタンスのSLA以上にサービス稼働率を上げることは可能です。大切なことはAmazonと冠がついていても落ちるときは落ちるので、それに対する対策をしっかりしておくことだと思います。

2.AWSがサービスダウンした際に、自社で解決ができない

AWSでは、過去に何度か大規模な障害が発生しています。幸い東京リージョンではまだ起こっていませんが、リージョンごとサービスダウンすると、他のリージョンやインフラにバックアップしていない限り、自社で解決するのは難しくなります。ここはリスクとして考慮しておくべきポイントです。

3.既存事業の場合は、現在のインフラからAWSにシステムを移管するコストが発生する

もともとサービスを提供していた場合に、そのサービスをAWSに移管する際はコストが発生します。

4.事前にコストが決まらないので、経理処理の調整が必要

従量課金のデメリットとして、事前に値段がわからないという点が挙げられます。AWSを利用する際は経理とよく相談しておくとよいでしょう。

5.会員情報などを持っている場合、それらの情報をAWSに預けることに対するリスクが発生する

AWSに会員情報などの個人情報を置くことに対する見解は、それぞれ分かれるところです。リスクを十分に検討して利用すべきだと思います。

6.1つ1つのインスタンスが案外弱い

これについては、かなり感覚値なところもありますが、AWSは1つ1つのインスタンスに対する安定性はそれほど高くない印象です。実は以前にAWSから「ハードウェア障害が発生していて物理メンテナンスをするから早く移動させてね」というメールが来たことがあります。10台、20台と借りていたら1台サービスアウトしたところでそれほど大きな問題ではありませんが、これが2台で構成していたら大変です。1つのインスタンスすらサービスアウトさせたくない場合は、よりサポートが強いクラウドを使ったほうがよいのかもしれません。

(メール内容)

Hello,

We have noticed that one or more of your instances are running on a host degraded due to hardware failure.

xxxxxxxxxxxxxxxxxxxxxxxx

The risk of your instances failing is increased at this point. We cannot determine the health of any applications running on the instances. We recommend that you launch replacement instances and start migrating to them.

Feel free to terminate the instances with the ec2-terminate-instance API when you are done with them.

Sincerely,

The Amazon EC2 Team

7.グローバルIPアドレスの使い回し

AWSで付与されるグローバルIPアドレスは、ついさっきまで他の人が使っていたIPアドレスの可能性があります。よって、外に公開すると思わぬところから思わぬアクセスが来ることがあります。クラウド特有の問題ですが、事前に理解しておく必要があるでしょう。 以上がAWSを利用するときに発生しうる問題点やリスクです。

Amazonのメリット

しかし、これまで紹介したとおりAWSを利用すると次のようなメリットをうけることができます。

1.初期コストを限りなく少なくできる

AWSを利用すれば、開発機や検証機、プロトタイプ機など、⁠まず1台借りてみてやってみるか」というときに、初期コスト少なくスタートすることができます。

2.高スペックの環境を時間単位で利用できる

AWSでは、高いスペックの環境も時間単位で利用することができます。高負荷なバッチ処理や分析処理などは、AWSととても親和性が高いと言えます。

3.サービスの成長に合わせて、極めて簡単にスケールアウトすることができる

AWSでは、サービスの成長に合わせて、インスタンスを増やしたり、性能を上げたりすることが容易に行えます。また、不意に多数のトラフィックが来たときにもAutoScalingの設定をしておけば自動的にインスタンスを増やすことが可能です。ただしすべてAWSが自動的にスケールしてくれるわけではないので、きちんとスケールアウトしやすいような設計にしておく必要があることには注意しておいたほうがいいでしょう。

4.豊富なサービス内容

AWSのサービス内容は豊富です。Webサーバだけではなく、RDBやCDN、Hadoopやロードバランサなどたくさんのサービスを提供してくれます。またアクセス制限やストレージの確認、インスタンスの追加削除や、監視まで、さまざまなことを管理画面やAPIから簡単に行うことができます。この豊富なサービス内容はAWSならではといってよいと思います。

5.ハードウェアの物理障害をケアーする必要がない

自らサーバを運用していた場合に物理障害が発生したら、アラートが飛んで、障害内容確認して、保守業者に確認取って、データセンターの入館申請をして、交換して、チェックして、…などさまざまな作業が必要になります。AWSならこれらをまったく気にせずにサービスを運用することが可能です。ラックマウントやケーブリングから開放されるのはAWSのメリットの1つです。

AWS選択のポイント

ここまでさまざまなメリット・デメリットを紹介してきました。

まとめると、AWSは大規模なサービスを構築する場合や、安定性がそれほど必要がない環境(たとえばセミナーの環境や、インターンシップの環境、個人の勉強のための環境など)を構築するにはとても便利に機能します。数十台のサーバを並列に並べて膨大なトラフィックを処理したり、高負荷なバッチ処理を行ったり、中規模のインフラを素早く構築したりすることは、AWSが最も得意とするところです。

一方で安定性は求められるけれども、それほど成長性や規模が大きくないサービスの場合(たとえばコーポレートサイトやブログなど)は、AWSのメリットをそれほど出せない可能性があります。たとえば開発やプロトタイプだけAWSを利用して、実際の実機は1つ1つのインスタンスが安定している他のクラウドサービスやASPサービス、自社サーバでの提供なども検討してみてはいかがでしょうか。

質問をお待ちしています

ここまでAWSのとても基礎的な部分と、cosmiを実例としたAWSのメリット・デメリットを紹介してきました。少しはイメージがついていただけたでしょうか? AWSは万能薬ではありませんが、特効薬になるかもしれません。もしこれまでクラウドを試したことがなかったら、まずはAWSのアカウントだけでも取ってみてはいかがでしょうか?

このあと、この連載はあと3回続きます。第2回、3回ではスケーラビリティを持ったインフラ構築と、EMRを利用した分散処理について、cosmiをともに作った弊社の岩川がそれぞれ具体的に紹介したいと思います。もしAWSやこの連載についてご意見やご質問があれば、何なりとこちらのアドレスまで送ってください。第4回のときにご紹介したいと思います。ありがとうございました

すべてのお問い合わせはこちら
hello@cosmi.io

おすすめ記事

記事・ニュース一覧