こんにちは、作野です。
昨年12月5日から12月9日まで行われた『AWS re:Invent 2016』に参加してきました。

AWS re:Inventとは?

aws_re-invent_IMG_4596

AWS re:Inventとは、今年で5度目の開催となる Amazon Web Services, Inc. 主催のグローバル・カンファレンスです。今年は世界中から30,000人を超える参加者がアメリカ・ネバダ州ラスベガスに集まりました。

僕が所属しているチームは、少人数のデータサイエンティストの組織で完全に内製で開発を行っています。AWSはよく利用しているのですが、 データに関するソリューションを提供するAWSのサービスは新製品が発表されたり既存の機能が拡充されたりと、とても進化が激しいので、「最新機能についていち早くキャッチアップしておきたい」という理由で参加しました。
今回は、いろいろあるサービスの中でも「サーバレス」「データ分析」というトピックスに注目してセッションに参加してきました。今回参加して、気になったトピックスをいくつかご紹介します。

AWS re:Invent 2016の注目トピックス

aws_re-invent_IMG_4593

1:Amazon AI

AWS re:Invent 2016で僕が注目した新製品の1つがAmazon AIです。
もともと僕は大学時代の専攻が音声認識だったこともあり、KeynoteでのAmazon Lex発表は特に興味深く聞いていました。音声認識のほかにも音声合成などのマネージメントサービス、深層学習の文脈でいうとMXNetのサポートなどの最新情報が紹介されていて、AWSがAI分野でのソリューションを提供する事に力を入れているという事を感じました。

特に、画像認識、音声認識、音声合成をマネージメントサービス化して、誰でも使えるようにしているというのはおもしろい取り組みだと思いました。AWSはユーザーの不満をいち早く現場から吸い上げて機能改善していく事が多いのですが、そのような「リアクティブ(即応的)なアプローチ」だけではなく、「プロアクティブ(予期的)なアプローチ」でサービスを出していくという姿勢を感じたからです。
現段階では、AIを実際にプロダクトに組み込んでいる企業ってそこまで多くないと思うのですが、「これからこういう世の中になっていくだろう」という、時代を先取りしたようなことをマネージメントサービスとしていち早くリリースしている、というのは印象的でした。AIは注目度が高まっている分野だからなのか、会場の反応も非常によかったですね。

Amazon AIの発表を聞いて感じたのは、AWSはIoT時代を先取りすることを狙っているのではないかという事です。データの観点から見たIoTは、いくつかの段階を登っていくと思っています。
第一段階は、いろいろなデバイスがインターネットにつながってデータの蓄積までを自動化し、蓄積したデータをどのようにサービスに活かしていくか、というのは人間が解析していく段階。
第二段階は、様々なデバイスを通して蓄積したデータを、人間の介在なしに、ダイレクトに人工知能がサービスにフィードバックする、という段階です。
この段階は、データの蓄積から活用までワンストップで機械が担うという事なのですが、そこを見据えたサービス開発をしているような印象を持ちました。

2:データ分析

データ分析をしていて面倒な工程があるのですが、それを自動化してくれるサービスが紹介されていたのも印象的でした。
例えば、Amazon S3に保存されているデータに対して直にクエリを投げられる新しいサーバレスクエリサービスの“Amazon Athena”。あとは、ETLを全部サポートするような完全マネージド型ETL サービスの“AWS Glue”などは、ゆくゆくは使っていきたいなと思いました。
AthenaはS3に置かれるデータが集計可能な形で置かれている事が前提となっていて、現状だとログデータなどは集計用途に変換する必要があるので手間がかかります。
しかし、例えばKinesis Firehoseに関数が適用できるようになって、集計用途に変換したログデータをS3に直接配置できるようになれば変換にかかる手間は相当削減されるはずです。
そのような状態になったら一気にAthenaの存在感は高まるんじゃないかと思いますね。
ただ、AthenaもKinesis Firehoseも東京リージョンでは現状利用できませんが…。
データ分析が目的だとWebサービスと比較するとレイテンシへの要求が厳しくないため、サービス開始しているリージョン(例えば Oregonリージョンなど)に基盤を移すことも可能だとは思っています。
マルチリージョン化する事によって生じる運用の手間よりも、利便性が勝ると判断したら是非使いたいですね。

3:サーバレス

僕らのチームは、レコメンドに代表されるようなデータを使ったソリューションを提供するチームなのですが、完全に内製で開発をしているため、インフラも扱わなければなりません。それが、サーバーレスソリューションを使うとインフラの構築時間を最小化して、アルゴリズムに向き合う時間を増やす事ができます。
なので、いろいろな企業のセッションで、ユースケースを聞いてきました。中には、「そんな使い方をするんだ!?」という驚きもありました。
例えば、MapReduceを全部“AWS Lambda”でやるなど、僕が半年ほど前にあるプロダクトでサーバレスアーキテクチャ組んだときにはあまりユースケースの数もバラエティもなかったのですが、半年ほどでどちらも充実してきている印象を受けました。

いくつかは“Cloud Formation”のテンプレートとして提供されていて、すぐに再現できるという話もありました。例えば、Webサービスの3層構造(MVCなど)を全部サーバレスにできる“AWS Serverless Application Model (AWS SAM)”などはCloud Formationによって一発で立てられますが、それってオンプレミス時代から考えたら信じられないですよね。

クラウドになった時点で物理サーバの不都合は切り離せましたが、構成もワンタッチでできてしまうなど、さらに一歩先を行っています。あるセッションでは、フルマネージドサービスをおさらいしていたのですが、Amazon DynamoDB、Amazon Simple Queue Service (SQS)、AWS Lambda、Amazon API Gatewayなど、サーバを意識しないようなサービスをうまく組み合わせた事例を紹介していて、大変興味深かったです。アイディア次第でなんでもできる時代になってきているのだなと実感しました。

エンジニアのAWSとの付き合い方

数々のセッションを通じて感じたことは、AWSはマネージメントコンソールのUIが変わるくらいサービスがかなり増えていて、re:Invent後に数えてみたら95のサービスがありました。
ここまで数が増えると、全部について詳細に把握する事は恐らく難しいでしょう。

当然ですが、時間というリソースは限られているので、自分に関わる分野の概要をある程度掴んでおいて、いざ「こういうサービスを作りたい」となったときに、詳しく調べてアーキテクチャを組むというのが一番効率的だなと思いました。
そういう意味でも今回のAWS re:Inventは、各企業のユースケースやAWS製品についての使い方などで発見が多くあり、無駄のない、大変有意義な時間でした。AWS re:Inventで吸収したことを業務にも活かしていきたいです。