VOYAGE GROUP エンジニアブログ

voyagegroup_techのブログ
VOYAGE GROUPエンジニアブログです。

2013年12月

【AWS re:Invent 2013 参加レポート】 AWSが切り開く大規模分散ストリームデータ処理の未来と、AWSを支えるエンジニアリング文化

adingoプラットフォーム本部エンジニアの @suzu_v です。11月12-15日にかけて米国ネバタ州ラスベガスにて開催されたAWS re:Invent 2013についてのレポートになります。

http://reinvent.awsevents.com/

re:Inventは年に一回開かれているAmazon Web Service(以下、AWS)のカンファレンスです。弊社でもAWSをサービス構築に利用しており、今後の展望や活用事例をヒアリングすべく、カンファレンスに参加してまりました。弊社からは私一人の参加となりました。

re:Inventは日本からの参加者向けにツアーが用意されております。このツアーに参加し、アマゾンデータサービスジャパンの皆様と日本のユーザ企業の皆様と一緒にまずシアトルへと向かいました。

シアトルでAmazon.com本社を訪問しました。Amazon.comの本社は創業以来シアトルにあるそうです。

オフィスの外観です。


エントランスでパスを受け取り中へ。

各国のドメインが飾られていたり、

おしゃれなカフェテリアもありました。

シアトルのAmazon.comオフィスではJapan Sessionとして以下の発表を聞きました。

  • Amazon Redshiftのプロジェクトマネジメントについて
  • GovCloudリージョンについて
  • AWS Localizationチームの仕事について
  • ELBについて

全体を通して、強くAWSのエンジニアリング文化を感じられる内容になっていました。新しいサービスをどのように作っていくのか、それぞ れのチームがどのように働いているのか。そういったことを直に聴くことのできる良い機会でした。発表後のタコランチでは、ELBチームの橋本さんにAWS でのエンジニアリングについて多く伺うことができ、貴重な機会となりました。シアトルまで足を運んでよかったと感じられたひとときでした。

その後、カンファレンスの行われるラスベガスに飛行機で移動しました。

毎年re:Inventにおいては新規機能やサービスについてのアナウンスが恒例となっており、こちらも楽しみの一つでありました。もう既に公式サイトや各種メディアでも報じられているとおり、以下の新サービスの発表がありました。

また新機能については以下のものが追加されました。

  • Amazon RDSにおいてPostgreSQLをサポート
  • I2インスタンス
  • ID連携におけるSAML 2.0のサポート
  • Amazon Redshiftのクロスリージョンスナップショットコピー
  • Amazon RDSのクロスリージョンリードレプリカ
  • C3インスタンス

現地レポートについてはAWSのページにも掲載されております。

私個人としては今回の発表で最もエキサイティングだったのはAmazon Kinesisです。これは分散ストリーム処理環境をIaaS側で受け持つということに他なりません。Elastic MapReduce(以下、EMR http://aws.amazon.com/jp/elasticmapreduce/ )が使い捨てのHadoopという利用形態を可能にしたのと同様に、Amazon KinesisにもEMRと同様の柔軟さがあります。殊更広告領域においては即時に計算結果を反映し、配信に活かす必要があります。これを、例えばApache Kafka(https://kafka.apache.org/ )やTwitter Storm(http://storm-project.net/ )を組み合わせつつ、計算結果をCassandraなどの高速でスケーラブルな分散KVSに保持しておくというのはよくある構成です。しかし、このスト リーミング処理の部分というのはミッションクリティカルになりがちであり、かつこれらのミドルウェアを用意して検証するというのも多大なコストがかかると ころです。例えばfluentd(http://fluentd.org/ )やlogstash(http://logstash.net/ )などのログ収集基盤からAmazon Kinesisにログストリームを流しつつ、mapとreduce処理を目的ごとに切り替えながら検証するといったことがより簡易に行えるようになりま す。すなわち、開発者はロジックの部分に集中して時間を裂けるようになります。AWSのもつelasticityをリアルタイム分散ストリーム処理の分野 にも持ち込んだ今回の発表には、そういったインパクトが有りました。

ユーザ企業のセッションでも興味深いものがいくつかありましたのでピックアップしてご紹介します。私が実際にみたセッションは以下のとおりです。

  • ARC310 - Orchestration and Deployment Options for Hybrid Enterprise Environments
  • SVC202 -- Asgard, Aminator, Simian Army and more: How Netflix’s Proven Tools Can Help Accelerate Your Startup
  • BDT401 - Using AWS to Build a Scalable Big Machine Data Management and Processing Service
  • BDT306 - Data Science at Netflix with Amazon EMR
  • SPOT401 - Leading the NoSQL Revolution: Under the Covers of Distributed Systems at Scale
  • DAT204 -- SmugMug: From MySQL to Amazon DynamoDB
  • DAT306 - How Amazon.com, with One of the World’s Largest Data Warehouses, Is Leveraging Amazon Redshift
  • BDT301 - Scaling your Analytics with Amazon Elastic MapReduce
  • MBL307 - How Parse Built a Mobile Backend as a Service on AWS
  • STG306 - Dropbox presents Cloud Storage for App Developers
  • BDT311 - New Launch: Supercharge Your Big Data Infrastructure with Amazon Kinesis: Learn to Build Real-time Streaming Big data Processing Applications
  • ARC303 - Unmeltable Infrastructure at Scale: Using Apache Kafka, Twitter Storm, and Elastic Search on AWS

最も印象に残ったのはParse(https://parse.com/ )のDevOpsに関するセッション(MBL307)でした。こちらはParseのProduction Engineering ManagerのCharityさんによる発表です。ParseはMBaaS("Mobile Backend as a service"の略。 http://en.wikipedia.org/wiki/Backend_as_a_service )として著名ですが、AWS有数のユーザとしても知られています。ここではParseにおけるDevOpsの進化の過程と、AWSのElasticity を活用するためのProvisioningの工夫について発表されていました。最近日本でも議論され始めているImmutable Infrastructureという観点がありますが、まさにそれをサービスレベルで実現し始めている好事例でした。Go(http://golang.org/ )で書かれたapiサーバから、MongoDB(http://www.mongodb.org/ ), Cassandra(http://cassandra.apache.org/ ), Redis(http://redis.io/ )といった分散KVSクラスタまで全てAutoscalingGroup(http://aws.amazon.com/jp/autoscaling/ )とchef(http://www.opscode.com/chef/ )によって制御されているようです。当初、Ruby on Rails(http://rubyonrails.org/ )で書かれていたものを現在ではDeploymentの観点からGoに半分ほど書き換えたという話も刺激的なところでした。Goのポータビリティは確かにこういったImmutableなサーバに対してのデプロイのために相性が良いです。

もう一つのセッションとしては、Loggly(http://www.loggly.com/ )の分散ストリーム処理環境に関するセッション(ARC303)です。こちらはSenior Architect, Lead DeveloperのPhilipさんとCTOのJimさんによる発表でした。LogglyはsyslogdなどのログをモニタリングするためのSaaS を展開されています。内容としてはApache Kafka + Twitter Storm + ElasticSearch(http://www.elasticsearch.org/ )を利用したリアルタイムログ処理基盤に関するもので、この日発表されたAmazon Kinesisにより実現される構成に非常に近いものです。Logglyのビジネスはリアルタイムにログを処理し、モニタリングすることにあります。これ は広告配信基盤においても似たところがあります。セッションではもともとSolr Cloud(http://wiki.apache.org/solr/SolrCloud )を活用していたが、indexingの関係でElasticSearchに入れ替えたという話がありました。Logglyにとってはサービスの性質上、 秒間10イベントを送る利用者と秒間10000イベントを送信する利用者が存在しますが、その場合にindexingの戦略を同様のものを利用してしまう と、どうしてもあまりログを転送していない利用者についてはリッチすぎる仕組みになっていまいます。その点でElasticSearchの indexingの仕組みが効率よく働くというのは納得できる部分でした。Amazon Kinesisとの比較を行なうと、Apache KafkaではZooKeeper(http://zookeeper.apache.org/ )によるcluster管理が基本となるため、この部分の手間がAmazon Kinesisではかからないといったところはメリットになりそうです。Twitter StormはAmazon KinesisでいうところのKinesis Applicationのレイヤーと同様のものとなります。

また、Netflixさんが数多くのセッションで発表されていました。私が直接聞いたのはNetflixで開発されたAWS用ツール類の紹介セッ ション(SVC202)、データサイエンスに関する話(BDT306)、EMRの話(BDT301)でしたが、他にもDeploymentについてのセッ ションなどもありました。実際にBDT301のセッションでデータサイエンスチームの方にお話を伺う機会があり、データ分析側と解析基盤側のチームという のは独立していて、解析基盤を作るチームではどんどんツールをNetflix OSS(http://netflix.github.io/ )として開発し、提供し続けているとのことでした。Asgard(https://github.com/Netflix/asgard )を始めとして、Netflix OSSのラインナップは驚くほど拡充しています。Netflixさんのセッションでいくつも初めてみるツールが多かったのですが、中でもLipstick(https://github.com/Netflix/Lipstick )というツールは興味深いものでした。PigのQLの実行計画を視覚化するツールです。解析を実際に行なうデータサイエンスチームでもLipStickを利用しているというところに、Netflixさんの解析チームの文化と強みを垣間見ました。

これら実際の利用事例を聴くと、弊社システムの設計に活かせる部分はないかと思案を巡らせることができるため、大変有意義でした。なお、講演のビデ オ及びスライドについてはYouTube及びSlideshareで視聴・閲覧が可能です。(一部のセッションは公開されていないものもあります。)

AWS Cloud - YouTube: http://www.youtube.com/user/AmazonWebServices/videos

Amazon Web Services presentations channel: http://www.slideshare.net/AmazonWebServices

また、セッション終了後は毎晩パーティーやイベントがあり、それらに参加して海外のAWSユーザ企業のエンジニアの方々とも多く話を伺うことが出来ました。

2日目の夜にはIntel社主催のre:Play Partyがありました。Keynoteが行われていた大ホールがクラブハウスの様になっていました。

re:Inventに参加して強く感じたのは、Amazonの顧客を大切にする文化です。KeynoteでもAWSの中の方によるセッションでも パーティーでも、全てのAWSの方が例外なく「顧客が最も大切だ」と仰っていました。この文化こそが、なによりAWSのエンジニアリングの根幹であるのだ と、強く感じたのでした。大いに刺激を受けた1週間となりました。

re:Inventで得た知見を活かし、さらにシステムを改善してまいります。

Advent Calendar 2013

昨年に引き続き今年もAdvent Calendarやりますよ。

書き手は若手とベテランが入り交じっていて、良い感じでカオスになりそうで楽しみですね。(11/30記載)

VOYAGE GROUP エンジニアブログ Advent Calendar 2013
日付担当者エントリ
12/1@makoga最適な技術で最高のプロダクトを!
12/2@s_tajimaAWSでリージョン間の自動DR構成を構築してみた #vgadvent2013
12/3@brtriver簡単にPHPをmakeしてみた
12/4@chocopie116幼き日の想い出 #vgadvent2013
12/5@yuu_ito寒い冬の過ごし方。
12/6@akiyah実践ハンバーガー統計学! マクドナルドのポテトSを10個食べて信頼区間を推定した #vgadvent2013
12/7@ajiyoshiAngularJSでライフゲームを作ってみた
12/8@TachibanaKaoruクリスマスっぽいスクリーンキャプチャーにしてみる
12/9@jewel_x12きよしこのテスト駆動開発
12/10@takkyuuplayerWindows8でMerry X'mas! #vgadvent2013
12/11@_zoo年の瀬にJenkinsの訃報が届いても、悲嘆にくれないために #vgadvent2013
12/12@tadasy心の傷を抱えたエンジニアたちに捧げる #vgadvent2013
12/13@DayBySay13日の金曜日に怪物と戦うために #vgadvent2013
12/14@lesamoureuses会議室名がオシャレ過ぎて覚えられない君へ #vgadvent2013
12/15@hagino3000iOS WebViewアプリ勉強会の資料と補足 #vgadvent2013
12/16@shinbashiSmartWatch2のapkをAndroidStudioでビルドしてみる #vgadvent2013
12/17@kuromatu2013年のAJITO活用事例 #vgadgent2013
12/18@jet_mmmiOSアプリを作りたいと思っているあなたへ、30分でアプリをつくろうと思いましたが、1日かかりました #vgadgent2013
12/19@at_grandpa簡単極小構成でFailoverを体験してみよう! 〜 Vagrant+Chef を使って 〜 #vgadvent2013
12/20@saya_223nクリスマスを楽しく過ごす論理パズル #vgadvent2013
12/21@awa-vgOS と kernel と私 #vgadvent2013
12/22@katzchangVOYAGE GROUPに転職して2年とちょっとが経ちました
12/23@hironomiu今年も振り返ってみる!
12/24@suzu_v懸垂機できました #vgadvent2013
記事検索
QRコード
QRコード