Gunosyデータ分析ブログスマートフォン用の表示で見るGunosyデータ分析ブログGunosyで働くデータエンジニアが知見を共有するブログです。Sparkはじめにこんにちは、データ分析部の森本です。主な業務は記事配信アルゴリズムの改善とログ基盤の整備です。Gunosyでは、ユーザーへより良い記事を提供するためにアクセスログをストリーム処理し、集計結果を記事配信アルゴリズムに活用しています。Analyticsへ移行中です。Analyticsへ移行する理由や運用上のTips等についてお話します。Streamingで集計を行い、結果をRDSに保存しています。Analyticsへ移行するのかサーバーコストと運用コストの削減を目的としています。StreamingはEMR上で使用していますが、コストはそこそこします。サーバー(m4.xlarge)10台と考えると1ヶ月およそ約30万円になります。10台スポット価格で運用しサーバーコストを抑えてますが、スポット価格の変動に注意する必要があります。これを複数クラスタ運用していたので、それなりのサーバーコストを要しました。クラスタの構築コスト、運用コストを考慮するとEMRが最適なため、自前でクラスタ環境の構築は行いませんでした。運用コストについて長期間運用していると、ノードがしばしば落ちます。一時的に少数のノードが落ちてもクラスタ運用に問題ありませんが、長期的にはクラスタ状況をモニタリングし、問題が発生する前にノードの追加やクラスタの再構築が必要です。主観的に休日にクラスタ整備を行うことが多く、辛いです。Streamingはこのアクセスログ集計でオーバースペックなところもありました。Analyticsを利用したストリームログ基盤を紹介します。FirefoseがElasticsearchに結果を保存しています。AnalyticsとはストリーミングデータをSQLクエリで集計できるサービスです。標準SQLを使用でき、容易に実装できました。AnalyticsのSQLのみで完結するため、Sparkアプリケーションを実装するよりも開発コストを抑えることができました。Firefoseを使用しています。詳細はこちらの記事が詳しいです。Analyticsを利用したログ基盤は運用テスト中で、大きな問題もなく順調に稼働しています。ここでは運用上のTipsについて紹介します。Analyticsは、SQLクエリ上で静的ファイル(リファレンスデータ)とJOINできます。Analytics上でJOINできます。これは非常に便利な機能で重宝しています。Pipelineで行い、S3に再アップロードしています。リファレンスデータの更新はLambdaで行っています。Lambdaで実施Gunosyの監視はCloudWatch、Datadog、Papertrail、PagerDutyなどの各種サービスを必要に応じて利用しています。Serviceに重きをおいて監視することにしました。Elasticsearchの各種メトリックをDatadogでモニタリングし、アラート先をSlackに設定しています。直近N分間に登録されているドキュメント数もモニタリングしたいため、ドキュメント数をカウントし、Cloudwatchに登録するオリジナルスクリプトをLambdaで実装しています。Analyticsの対応しているリージョンは、アイルランド、オレゴン、バージニアのみとなっています。Analytics環境を構築しています。この場合、東京リージョンのログストリーム環境と比べて、オレゴンまでの転送分、遅延が多少発生します。今回の用途では、そこまで遅延に対してシビアではないため利用に踏み切りましたが、利用用途に応じて検証する必要があります。Analyticsのコスト実際にそれなりのコストを抑えることに成功しましたが、具体的にどのくらい安くなったのかお伝えできないことが残念です。(すいません)Kinesisの見積もり方法は下記リンクを参考にしてください。オレゴンリージョンで環境を構築しているため、リージョンを越えるデータ転送料も発生しています。参加レポートウェブにおけるユーザエンゲージメントを計測・予測する研究について。Blogはたらくを知り、Gunosyを知る。ブロックチェーンブログはてなブログをはじめよう!gunosy_dataさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。