上記の写真は今年開催された全社合宿で撮ったものです。ランサーズでは2018年今年から分析基盤を創り上げていきました。今回は今流行りの分析基盤をどのように運用しているか、どのような技術を使っているのか簡単にご紹介できればと思います。👍ランサーズ分析基盤の始まりもともと@g0dgardenさんが全てフローを考えて、私が5月にジョインして引き継ぎをしました。その分析基盤名がなんと!!capybara(カピバラ)!!カピバラといえば草を大量に食べて蓄えている印象からデータ分析に近い存在なので決まったそうです(ロゴとか真面目に作りたい)SRE本の中にも分析基盤によるログの可視化は該当するので、私にとってはちょうどいいタイミングとチャレンジできるといったところ!まずはシステム構成図と各チームでの役割について書いていきます。・Redashこれは割愛したいところですが、弊社ではGoogleアカウントでログインでき、DBはRDSで管理しています。Sourcesの登録を削除して、クエリを全て消えても元に戻せるようになっています。Redashは常に最新のバージョンを保つよう運用しています。@waldo0515さんが作成した以下より、Redash自体のモニタリング!時間帯別に実行している時間、重いクエリ、BigQueryのユーザ別コストを可視化しています。・td-agent/Athenaアプリケーションログはtd-agentでログサーバに集計し、S3に同期しています。Athenaへのアクセスログを同期する方法としては以下のように工夫をしています。項目追加など変化に強い形になるためS3へ保存するログファイルをtdでJSONにするS3バケットのディレクトリ設計。HIVE形式にする⇛全ファイルを探索すると、その分課金されてしまうため必要な分のみパーティションを認識させるこれ実現することで、毎回サーバに入ってawkからの加工などがなくなり、運用コストが下がりました。・embulk/Digdag/BigQueryBigQueryはembulkを使って、S3やRDSのデータを日々Digdag(ワークフローエンジン/ジョブスケジューラ)を使って同期しています。エラー等出たら、slackで通知が来て、以下Digdagコンソールからポチっと押すだけで再同期されるのも手軽です。BigQueryは仮想テーブルを作成するviewという機能があるので、分析用に加工されたtableでさらに加工することが可能です。上記にもある各チームでの役割で、アプリ側/Dev開発チームがtdの設定をして、SREチームがDigdagや、embulkの設定をしています。することでスムーズに依頼と作業が進められているのもメリットとSREチーム全員が対応できるよう回しています。BigQueryはスキャンしたデータ容量によって重量課金する仕組みなので、下手にメンバーがしくじらないよう、アカウント作成時に以下のスライドで共有もしています。Limitの設定をしているため、クエリのコスト上限もしています。他にも気をつけることがあるので、以下にまとめてみました。datetime)Redashからのスケジューリング・BigQueryなどをRedashから定期実行する場合は、Queryを投げる度にコストがかかるため、過度な自動更新は辞めましょう・RDSからBigQueryに同期の際気をつけていること例えばこのテーブルをBigQueryに投入お願いします!と依頼が来た場合、毎回各テーブルのレコード数を確認しています。sec)上記だと150万レコードをBigQueryに同期する分にはembulkのデータ転送に時間はそこまでかかりません。1000万レコード以上の場合は以下のように別テーブルで保存し、差分のみ取るようにして、それ以下は上書き(replace)するようにしています。WRITE_TRUNCATE続いては分析基盤を応用したランサーズの新機能である「ユーザレポートのアナリティクス」の実装したお話をご紹介します。・BigQuery/profile_viewsプロフィール数とプロフィールを見たクライアントの可視化はPHPで今年新卒の森泉くん(@IZUMIRU0313)に実装してもらいました。流れは深夜にアプリケーションログをviewに作成し、続いてviewテーブルからRDSへ同期しています。(embulk-input-bigqueryを使用しています)つまり、BigQueryのviewテーブルからRDSへ同期といういつもの逆を実装しています。その方法については私の個人ブログに詳しく書いているのでぜひ参考に!https://blog.adachin.me/archives/8492まとめこの分析基盤は他社でも同じよう運用しているとのことで、初め共有されたときは理解するのに時間がかかりました。他にもいろいろとご紹介したいのですが、長くなってしまうので次回はどこかで登壇してノウハウ等共有できればと思います。capybaraは大事に大事に育てていきます!!!皆さまぜひ参考にしていただければ幸いです!!にしてもカピバラかわいい😆明日は同じSREチームのyuu26さんです!!!ランサーズではサービスを成長させてくれるエンジニア、デザイナーを募集しています!ご興味がある方は、以下URLよりご応募ください。ランサーズに出戻って1年。担当した開発プロジェクトを振り返る。」23日目の記事です。13日目の記事となります。SREチームの@adachin0817です。Lancers,Inc。