【レポート】クラスメソッド × スマートニュース AWS Night #cmsn_aws

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

こんにちは!おおはしりきたけです!今日はスマートニュースさんと合同で、「クラスメソッド × スマートニュース AWS Night」を開催させていただきました。参加してきたので、レポートを書かせていただきます。

イベント概要

AWS の最新動向に精通しているクラスメソッドと自社サービスでAWS を利用しノウハウをためてきたマートニュースの2社で、4年間試行錯誤をし、AWS を使い倒してきたノウハウを大放出します!

開催日程 2016年1月27日(水)
開場と開始時間 開場:18:30(受付開始) 開始:19:00
参加費 参加費無料
主催 クラスメソッド株式会社
スマートニュース株式会社
会場 スマートニュース株式会社 イベントスペース
〒150-0001 東京都渋谷区神宮前6-25-16 いちご神宮前ビル 2F(旧 神宮前第23ビル)
定員 140名
ハッシュタグ #cmsn_aws

タイムテーブル

時間 タイトル スピーカー
18:30 - 19:00 受付開始 -
19:00 - 19:05 開会のご挨拶 スマートニュース株式会社 浜本 階生様
19:05 - 19:35 AWSの進化とSmartNewsの裏側 スマートニュース株式会社 尾形 暢俊様
19:50 - 20:00 Building a Sustainable Data Platform on AWS スマートニュース株式会社 坂本 卓巳様
20:00 - 20:10 休憩 -
20:10 - 20:40 AWSで大規模なシンクラ環境を超短期で用意したお話 クラスメソッド株式会社 千葉 淳
20:40 - 21:10 iOS開発者から見たMobile Hub クラスメソッド株式会社 加藤 潤
21:15 - 22:00 懇親会 全員

イベント会場

イベント会場は、SmartNewsさんのイベントスペースをお借りして開催させていただきました。2015年2月に移転されたそうで、執務室も見学させていただいたのですが、非常に働きやすそうなオフィスでした。

写真は入口にあるロゴです。シンプルでカッコイイですね〜

20160127065536

噂のカフェとキッチンです!

20160127065739

イベント会場はこんな感じです。広々としていて快適な空間でした

20160127065729

公式キャラの地球くんのお水です。

20160127065747

本日の登壇者の方々です!左からクラスメソッド加藤、千葉、スマートニュース尾形さん、坂本さんです。

20160127065435

開会のご挨拶

SmartNewsの浜本さんから開会の挨拶をしていただきました。

20160128014114

Session 1:AWSの進化とSmartNewsの裏側

スピーカーは、SmartNews株式会社 尾形 暢俊さんです。

20160127082917

資料はこちら

1番目のセッションは、SmartNewsの尾形さんからAWSの進化とSmartNewsの裏側というお話です。
SmartNewsは全世界で1500万DLされており、先日SmartNews3.0ということでテレビ実況の機能がリリースされました。公式キャラクターである地球くんのLINEスタンプも1/27日から販売が開始されており、勢いが増しています。
Scaleとして現在のAWSの利用状況を公開していただき(詳しくは資料を見て下さい)ました。EC2のインスタンス数が300台など、相当規模が大きいんだなと感じました。最近ではニュースのコンテンツ配信をAkamaiに移行したとのことでしたがCloudFrontも自社ブログなどで利用しているとのことです。定期的にニュース配信の通知をしており、ピークが4つあってスケーリングがよみやすいとのことでしたが、7時のピークでは、エンジニアが起きていない可能性があるという課題もあるということでしたが、安定して稼働しているとのことでした。
ServiceとしてAWSで利用しているサービスなどの紹介があり、DeviceFarmやLambdaなど新サービスも積極的に利用しているという印象を受けました。
Changes in the Configurationとして昔はサーバー1台にすべての役割を持たせていましたが、クローラーから徐々に分割し、今では様々なサービスを利用することで、各コンポーネントが連携しマイクロサービス化してきているとのことでした。
デプロイは、github⇒CircleCI⇒CodeDeployという流れで自動化されており、エンジニアはgithubにPushすることに専念でき、CodeDeployは細かいカスタムもでき、DataDogとの連携やSlackに通知を投げるといったこともやっているそうです。
SmartNewsさんでは、AutoScalingGroup(以下ASG)を積極的に利用しており、ASGを利用することで、EC2のタグ名でA/Bテストなどがやりやすいとのことでした。但しASGは便利だけど、インスタンス名を付けるのと相性が悪いらしく、最初は番号付けて管理していたりしていたようですが増え続けるので、今はインスタンスIDをそのまま利用しタグなどで分かるようにしているとのことでした。DSLで管理はしているけど、完璧ではないとのことで、例えばChatOpsで設定を変えたい場合などは相性が悪いし面倒ということで、ここは課題として考えているそうです。
AWSにRun Commandができ、最近はよく利用しているとのことで、外からコマンドラインで特定のサーバーを操作でき、IAM使って権限管理もできるのでセキュアに利用できるそうです。例えばCircleCIから特定のコマンドを投げたい時に便利とのことでした。
Future Planとしては、現在コンテナサービスを調査しており、ゆくゆくは全部のサービスをコンテナ化していきたいとのことでした。コンテナ化することで、リソースを有効活用できたり、開発環境をそのまま本番環境にすることができるので、環境に依存するような問題が減らせたり拡張性なども、よりやりやすくなるとのことで、2015年のre:InventでAWSからマイクロサービスからコンテナ化しているという発表がありましたが、SmartNewsさんもその流れに乗って行っていると感じました。

Session 2:Building a Sustainable Data Platform on AWS

スピーカーは、スマートニュース株式会社 坂本 卓巳さんです。

20160127082929

資料はこちら

 2番目のセッションは、SmartNews坂本さんからで、Building a Sustainable Data PlatformというタイトルでSmatNewsのデータ解析のお話です。
SmartNewsは、「世界中の良質なニュースを必要な人に届ける」をミッションにしており、元々10万以上ある記事からフィルタリングを行ない、1000記事程度をユーザーに定期的に配信しています。データ解析をすることでプロダクトの改善やA/Bテストをアドホックに計測しています。
データを解析して記事を作るので、解析した結果は、ニュースのランキングとか、CTRとかの元データとして使ったりメディアパートナー向けにPVが見れるツールの提供の元データとして利用しているそうです。データ量としては資料を見ていただければ分かりますが、尾形さんからのお話であったEC2のインスタンスの300台のうち半分はデータ解析のインスタンスとして利用しているとことでした。 Sustainable Data Pratformとは、以下の内容になります。
  • 信頼性、可用性のあるLambdaアーキテクチャー
  • オペレーションやランニングコストを下げたい
  • 将来に向けてやりたいことへの拡張性
Lambdaアーキテクチャとは、2012年にStorm の作者である Nathan Marz氏提唱したアーキテクチャーで、インプットとアウトプットの間に、バッチレイヤー、サービスレイヤー、スピードレイヤーの3つの層から構成されます。
なぜ、Sustainableかというと少ない人数でも色々とできるようにする必要があるのと、SmartNewsにいるプロフェッショナルの方にやりたいことがやりやすく集中できるようにする必要があるということでした。計算する部分とストレージを分けることで、機械学習の人が同じデータを触るので、バッティングしないようにしたり、計算する部分はいつ終了してもよいので、スポットインスタンスでコスト削減したり、S3とかKinesisなどのフルマネージドサービスを利用することで、データロスをなくしたり、AWSのサービスで足りない部分に関しては、自分たちで考えて他のツールを利用したりしているそうです。
バッチレイヤーでは、ETL処理のExtractでMySQLからEmbulkを利用しデータを引っこ抜き、Transferでは集計するための処理を行ない、Loadでは、読める形にしてストレージに吐き出します。特に重要なデータはAuroraに保存をしているそうです。
データ解析ではスポットインスタンスを積極的に利用しており、スポットインスタンスを利用することで、50%〜90%のコスト削減ができているそうです。但し、スポットインスタンスは強制的にTerminateされるのでそういう前提も考慮して使う必要があります。
バッチ処理は、少ない時はCronなどで問題ないが、数が多くなってきたり依存関係が増えるとCronでは管理できないので、SmartNewsさんではAirflowを利用してバッチ処理の管理を行っているそうです。 AirflowではPythonでタスクの定義ができるので、Workflow as Codeが実現でき、依存の可視化ができたり、失敗した時の通知などもできるとのことでした。
サービスレイヤーでは、ローレイテンシでアドホックなことが求められるので、Presto(分散SQL実行エンジン)を利用しており、Prestoを利用している理由として、色々なデータソースとつなぎ込みができ、色々な部分のETL処理がスキップできるのと、Presto自体はステートを持っていないので、扱いやすいということでした。但しPrestoも万能ではなく、重いクエリとかがくると、耐えられないので、そこはSQL自体のチューニングなどが必要です。
Output Data としてChartioというツールを使っており、Chartio自体Dashboardツールとして非常に優れているので、自前のDashboardツールなどはメンテナンスコストなどもかかるので特化したツールを利用しているとのことでした。
スピードレイヤーについてですが、ニュースは速報性が重要で、2日目以降は見られないという統計データもでています。その短い時間の中で正しいランキングを作る必要があるので、ポジティブ、ネガティブのシグナルを取得したり、メディアパートナーの記事を表示してたりするので、リアルタイムに確認したり、リアルタイムのRe-Rankingを行っているそうです。記事の一覧、ユーザーの行動などを結合してランキングを作ってDyanamoDBに保存し、これによってリアルタイムに記事のランキングを変えることができる仕組みになっています。大規模な処理はSparkを利用しライトな処理はLambdaを利用することで使い分けているそうです。

Session 3:AWSで大規模なシンクラ環境を超短期で用意したお話

スピーカーは、クラスメソッド株式会社 千葉 淳 です。

20160127082906

資料はこちら

3番目は、弊社の千葉からWorkSpacesのお話です。
WorkSpacesは、シンクライアントを構築できるサービスで、今回のお話はシンクライアントを100台構築するというお話でした。100台というと相当な数ですが、AWSなら簡単に構築できますということです。
そもそもシンクライアントとは、PCoIPというプロトコルを利用し、データの格納や処理はサーバーに任せクライアントでは画面のみの提供になります。
WorkSpacesの良い所として、端末にデータを持たないのでセキュリティが高いですし、HWのバージョンアップなどの運用コストが抑えられたり、クラウド上にデータがあるので、BCPに対応できたり、マルチデバイスでの利用やOfficeなども利用できます。
元々WorkSpacesの経験自体は無かった千葉ですが、弊社のブログや社内チャットで情報交換をすることで特に問題なく対応できました。
WorkSpacesの特徴として、フルマネージドなVDI環境が構築できます。またAWSのサービスは基本的に時間課金なのですが、WorkSpacesは月額課金といった特徴があります。
WorkSpacesのデプロイ作業ではユーザー数を決めて構築されるので、1台でも100台でも構築の工数は変わらないというのがポイントです。再デプロイで注意することとしては、必ずRebuildから実行してくださいとのことで、削除/新規作成をすると最大で2倍の料金がかかっていまうとのことです。
最後にWorkSpacesのTipsの紹介する予定でしたが、多いので続きはブログでということでした。期待してブログを待ちたいと思います。

Session 4:iOS開発者から見たMobile Hub

スピーカーは、クラスメソッド株式会社 加藤 潤 です。

20160127084551

資料はこちら

最後に弊社加藤からは、2015年10月のre:Inventで発表されたAWSの新サービスMobile Hubのお話です。
MobileHubは、AWSの各種サービスを使って、認証(Cognito)、Push通知(SNS)、コンテンツ配信(S3、CloudFront)、データストレージ(Cognito、S3)、アプリ分析(MobileAnalytics)、クラウドロジック(Lambda)、アプリのテスト(DeviceFarm)などがお手軽に利用できるサービスです。
今回は、マネジメントコンソールから、認証とクラウドロジックを利用してみて、自動生成されたコードの説明になります。
認証は、1/27日時点でFacebook、Google+、Custumの認証が提供されており、今回はFacebookでの認証となります。今回は、Custumについての説明はありませんでしたが、CustumはOpenIDConnectに対応されていれば利用できます。FacebookIDを利用するためには、事前にFacebookからFacebookAppIDを取得しておきそれを利用することで、CognitoのIdentity PoolとIAM Roleが自動で作られます
ビルドするには、Xcode7.0が必要で自動生成されるコードはObjective-Cになります。自動生成されたコードは、iOS 9で必要なATS対応もされており、最新のiOS開発で必要な要件も考慮されています。
クラウドロジックは、自動生成される画面にLambdaのファンクション名、Request、Invoke、Responsが提供されており、Lambdaのクラウドロジックを実行できることが確認できました。
自動生成されるコードの特徴としては、シングルトンが多く、密結合になりすぎるのでテスタビリティも悪くなるので、実際のプロジェクトでそのままヘルパークラスを利用するのはオススメはできないですが、AWS SDKの利用方法はそのまま使えるし、SDKの使い方の参考になります。
Mobile Hubの登場により、モバイルアプリ開発者からのAWSの敷居も下がったと思いますし、AWS SDKの利用方法も参考にできますので、これからモバイル開発者もAWSを使った開発がより進んでいくかもしれません。
今後Mobile Hubに期待することとして、まだ対応していない機能(Twitterログイン)が増えたり、自動生成のコードがSwiftに対応されていくとより利用されていくのではということでした。

懇親会

懇親会は、そのまま、イベントスペースで行ない、SmartNewsさんからピザと飲み物が提供されました。懇親会では登壇者への質問などがざっくばらんに行われ、良い情報交換&交流の場となっていました。

僭越ながら乾杯の挨拶をさせていただきました。

konsin

まとめ

140名という枠に対し、一次は250名以上の応募があり開始前からこの勉強会の注目度は高かったですし、実際に開催してみるとノウハウを大放出した勉強会になったと思います。SmartNewsで実際に動いているAWSの環境の話、進化の話やデータ解析でのアーキテクチャなど大変勉強になりましたし、WorkSpacesでの事例やMobileHubについての解説などは、沢山のAWSサービスを利用しているクラスメソッドならではの話だったと思います。登壇者の皆様、会場運営をして頂いたSmartNewsの皆様、参加して頂いた皆様お疲れ様でした。

今後も、こういったノウハウを共有できる勉強会を一緒に開催できればと思っております。