AWS Cloud for Start-Ups & Developers | NYC に参加しました
AWS Cloud for Start-Ups & Developers | NYC
翌日に開催されるAWS Summit 2012 | NYC のプレイベントとして、AWS Cloud for Start-Ups & Developers | NYC に参加して来ました!
アジェンダ
- 13:30 – 14:00: Registration and Light Snacks
- 14:00 – 15:00: AWS Keynote & Introductory Demo
- 15:00 – 15:30: Web App Demo
- 15:30 – 15:45: Customer Talk: Adam Nelson, co-founder & CTO | Yipit
- 15:45 – 16:15: Mobile App Demo
- 16:15 – 16:30: Customer Talk: Michael Young, co-founder & CTO | News.me
- 16:30 – 17:00: Tips for running a cost-efficient infrastructure in the AWS Cloud
- 17:00 – 19:00: Network with local investors and other start-ups/developers. Drink beer. Keep Learning!
AWS Keynote & Introductory Demo
AWSテクニカルエバンジェリストのMatt Woodさんからセッションスタート。スタートアップ企業がどのようにAWSを活用してサービスを構築するかデモを交えて紹介。マシンガントークとデモとスライドと動画をスムーズに切り替えながらのプレゼンテーションはスゴい。起業家が投資家に向けてプレゼンしているような感じ。
アイデアを思いついてから、直ぐに開発し、リリースして、評価し、開発とリリースを繰り返すか、ピボットする。ピボットとは、前向きな方向転換とでも言いましょうか。たとえ失敗しても致命的なダメージを受けずに小さな挑戦を繰り返す。妄信的にならずに振り返って自らにフィードバックする。こういったスモールスタートなアクションを取るときに負担となるのが、先にお金が出て行くこと。そこで、AWSだよねって話です。
AWSを使う目的として、直ぐ調達できる仮想サーバとか高信頼なストレージというのも間違いではないんだけど、今までと同じように、プログラム以外の関心ごとに時間やお金を掛け過ぎていると、スタートアップなビジネスは成長しづらい。規模と資金を最初から見込めずに持久戦で負けると分かっているなら、アイデアとスピードを武器に初期費用や運用を軽くして開発を繰り返す。こういった基本的な戦い方を実現する最適な方法がAWSを活用するメリットです。
今回のデモでは、基本的な構成としてEC2、S3から始まり、次にELBとMultiAZとAutoScalingでスケーリングに対応します。そして、単一障害点を持たずメンテナンス不要のサービスとして、DynamoDBとSimple Workflowを活用しています。SWF内ではEMRを使って統計などのバッチ系を行っています。Design for failure(障害が発生することを前提に設計する)という言葉が良く出てきます。
Customer Talk: Adam Nelson, co-founder & CTO | Yipit
Yipitは、ユーザーの興味や場所からオススメ情報を持ってくるGroupon系のサービス。彼らがどのようにAWSを使いこなしているか教えてくれました。
まずは現在使っているAWSの各種サービスについて。S3、EC2、CloudWatch、CloudFront、RDS、ElastiCache、SQS、IAM、Route53、DynamoDB、Mechanical Turkとのこと。盛りだくさんに見えますが、当社での事例でもこんな感じです。そして、これが近い将来、DynamoDBをより多く使うこと、CloudSearch、VPC、EMRを使う事が名言されています。私が思っていたことを実際にUSのスタートアップでやっていることに嬉しくなりました。DynamoDBを使いこなす事で、スタートアップを確実に加速させることができるのです。
システムのためのAWSの価値について。開発のイテレーションを高速化できること、インフラをコーディングのように扱える事(これ重要!)、A/Bテスト(サービスを複数立ち上げて比較する)を簡単に行える事などが挙げられています。
スタートアップのためのAWSの価値について。AWSのベストプラクティスを活用することで時間を短縮し、自動化することもできる。開発外要求(インフラの管理とかチューニングとか)に対して全てを知る必要はなく、時間を使う必要もない。それがコスト削減に繋がる。
お金を無駄遣いしないために。
モニタリングについて。全てのサービスでモニタリングを自動化するためにChefを使っているそうです。まぁ、これ自体もそのうち時間を掛けて知る必要の無いものに入る可能性があるのでしょう。彼らはたまたま詳しい人が居たから活用しているという認識が正しいと思っています。
Customer Talk: Michael Young, co-founder & CTO | News.me
News.meは、ソーシャルタイムラインからニュースを集約して提供するサービス。New York Timesの社内ベンチャー的な感じでスタートしたみたい。SNSから大量のストリームデータを取得して処理しているみたいで、AWSが無いとスタートアップできなかったのではと思います。
news.meのインフラ構成について。写真が見えづらくてごめんなさい。
API周りのインフラ構成について。ELB、EC2、データストア、memcached、mongo、redisという最近流行りの構成ですね。
いくつかのTIPSについて。全てを粗結合にしろ(これ重要!)と言っています。粗結合に分散させてステートレスであれば、スケールする際に容易に対応できるよと。計測しろと言っています。データに基づいて対応しろと。リーンで行こうと言っています。非常に少ない人数で全部やるぐらいがちょうどいい。ELBはSSLとロードバランシングに良いと言っています。フルに活用しているとEBSの待ち時間が気になってくるから対応を考えようと言っています。最後に、常にリザーブドインスタンスを使ってコスト削減しようと言っています。最後の質問コーナーで、これってどうやってマネタイズするのって誰かが言って、まだスタートアップだしさって答えていたのが良かったです。とにかく多くの人に使ってもらえれば、ビジネスは後から付いてくるとか、バイアウトできるとでも思っているかもですね。事実、競合サービスのSummifyがTwitterに買収されたばかりですし。今後は、よりサービスリリースを加速できるように、DynamoDBとかSWFを活用すればいいのになと思いました。
まとめ
AWSは、スタートアップのビジネスを加速し、デベロッパーがサービス開発のためのプログラミングに注力することができるプラットフォームサービスです。ただの仮想サーバーとか安価なストレージとして使うことをレベル0とするならば、障害は必ず起きるという前提で単一障害点を意識した設計にするのがレベル1、粗結合・分散・ステートレスにしてスケールできるようにするのがレベル2、自分たちで作らずに高可能性なサービス群を活用しまくるのがレベル3と考えてはいかがでしょうか。
- レベル0:仮想サーバーやストレージとして使う(EC2、S3とか)
- レベル1:障害は必ず起きるという前提で単一障害点を意識した設計にする(AMI、EBS、EIPとか)
- レベル2:粗結合・分散・ステートレスにしてスケールできるようにする(ELB、AutoScaling、MultiAZ、SQS、SNSとか)
- レベル3:自分たちで作らずに高可能性なサービス群を活用しまくる(DynamoDB、SWF、EMRとか)
明日は本番、AWS Summit 2012 | NYCです!