🎧InfluxDBとGrafanaでリアルタイムにログを可視化できるツールを作ってわかった時系列DBの強みと辛み #notetechtalk
noteのエンジニアがお届けするPodcast「note tech talk」の第8回目は、InfluxDBとGrafanaを利用してリアルタイムダッシュボードを開発した久保田さんに来ていただきました。
▲Grafanaの管理画面デモ
noteのデータ量は膨大にあり、サービスとして規模も拡大してきたため、GAでは判断しづらいログも増えてきました。そのため、noteに合わせたログ管理ツールを開発することになりました。そして誕生したのが、ログをリアルタイムに取得して閲覧ができる「リアルタイムダッシュボード」と呼ばれるツールです。
開発をした久保田さんに技術選定やアーキテクチャ、時系列DBによる開発の苦労についてお聞きしました。
司会・進行
福井 烈(ふくい たけし) / エンジニアリングマネージャー
ジークレスト、ガンホー・オンライン・エンターテイメントを経て2015年にnoteに入社。サービス黎明期からnoteの開発に携わり、データ基盤や会計などを担当。現在はエンジニアリングマネージャーとして、開発チームの統括や組織編成などを行う。note / Twitter
久保田 勇喜 (くぼた ゆうき) / エンジニア
新卒で株式会社アドウェイズに入社し、事前予約サービスの日本版 / 北米版の開発を担当。その後、テレビ朝日メディアプレックスにてテレビの視聴ログや広告販売プラットフォームの開発を担当。2021年4月にnoteに入社。
================================
【雑談】
0:00 〜 オープニング / 自己紹介
1:20 〜 ケバブを自動で焼くための電子工作
2:58 〜 フルリモートなので社員の身長がわからない問題
【本編】
3:50 〜 久保田さんが今取り組んでいること
6:55 〜 社内公開されたリアルタイムダッシュボード機能とは?
9:10 〜 リリースしてからの反響
12:03 〜 技術スタックについて
16:50 〜 Kinesis Data Analyticsを選ばなかった理由
18:49 〜 InfluxDBへどうデータを入れているのか
20:35 〜 DBへの負荷は?
23:52 〜 Amazon Managed Grafanaへの移行は考えている?
25:57 〜 時系列DBはRDBと考え方がまったく違う
27:40 〜 データの重複があった場合は?
29:12 〜 開発で難しかった点や悩んだ点
30:22 〜 リアルタイムダッシュボードの今後の展開とお願い
================================
ざっくりあらすじ文字おこし
※ 本編の内容がざっくりわかるように、箇条書きで内容を抜きだしています。あくまで「ざっくり」なので詳しい内容は本編をお聞きください。
■ 今、取り組んでいる開発について(3:50〜)
================================
Q:久保田さんが取り組んでいることを教えてください
A:PVや既読数をログとして保存し、開発に活かせるような仕組みを作っている
================================
・リアルタイムでログが閲覧できるリアルタイムダッシュボードの開発を行った
・データを保存する基盤の仕組みはもともとあったため、その機能の改修やリプレイスも行っている
・データの整形部分はAWS Lambdaを利用し、言語はGoを使っている
▼久保田さんが所属しているデータ基盤チームについての紹介記事はこちら
■ リアルタイムダッシュボード開発が始まった理由(6:55〜)
================================
Q:リアルタイムダッシュボードとは?
A:noteのPVやクリック数などのログをリアルタイムで閲覧できるダッシュボード
================================
・入社当時からnoteのログのうまい活用方法を考えていた
・社内でデータを見ているのがPMやアナリストなど、エンジニア寄りの人しかいなかった。もっといろんな職種の人にデータを見てほしいと思っていた
・「データを使ってnoteの運用に関わっていく」というのがチームの目標でもあるため、ビジュアルでデータを見られるような興味を引く仕組みをつくりたかった
・開発開始は7月頃で1〜2ヶ月くらいでリリースした
■ 社内からの反響は?(9:10〜)
================================
Q:社内からの反響はありましたか?
A:エンジニアからも良い反応があってよかった
================================
・リアルタイムでログが閲覧でき、ヘルスチェック的にも使用できるため、エンジニアからの評判はよかった
・普段データを見ていない人にももっと見てほしいので、もう少し整備していきたい
・毎日数時間おきに見ているPMもいて、リアルタイムダッシュボードを参考にして施策を考えるような動きもでてきた
▲リリース時の社内の様子
■ 技術スタックについて(12:03〜)
================================
Q:技術的には何を使っている?
A:主にGrafana、InfluxDB、ECSで開発
================================
・InfluxDBやGrafanaはnote社としても初めての導入
・時系列DBの中で一番スタンダードであり、検証結果も良かったためInfluxDBを選んだ
・InfluxDBはDockerで環境構築するのが楽というのも利点である
・本当はAWSの時系列DBを利用したかったが、まだ日本では使えない
・Grafanaについては前職でも使ったことがあるうえに、欲しい機能もそろっていたので迷うことなく決まった
■ なぜKinesis Data Analyticsではなかったのか(16:50〜)
================================
Q:Kinesis Data Analyticsという選択肢はなかった?
A:現状の構成だと、データ基盤に大きく手を入れないといけないため導入自体が難しかった
================================
・リアルタイムダッシュボードはすぐにリリースしたいという想いがあった
・Kinesis Data Analyticsを入れるには大きな改修をしなければならない状態だった
・開発を進めるために、変更が少ない方法を検討して今のアーキテクチャに決定した
・noteのバリューである「すばやく試そう」にそった形になった
■ DBへの負荷について(20:35〜)
================================
Q:時系列DBやRDBへの負荷は?
A:RDBは問題なし。時系列DBはかなりデリケートにコントロールする必要がある
================================
・note本体のRDBへのアクセスは制限しているので負荷は高くない
・InfluxDBの読み込みはかなりシビアに制御する必要がある
・時系列DBはカーディナリティが高くなると、すぐに重くなってしまう弱点がある。この問題については今も悩んでいる
・noteは記事が多いためユニーク数が増えてしまい、カーディナリティがすぐに高くなってしまう。気をつけなければすぐに落ちてしまう
・導入したときは「クエリをうまく書けば動くはず」と考えていたが、まったくダメだった。RDBと同じ考えではうまくいかないことがわかった
■ Amazon Managed Grafanaへの移行は?(23:52〜)
================================
Q:Amazon Managed Grafanaが登場したが、移行の検討は?
A:今のところ予定はない
================================
・使っていない理由は単純で、リアルタイムダッシュボードのあとにAmazon Managed Grafanaがリリースされたから
・ECSで事足りており、移行するメリットがあまりないため、今のところ現状のままで運用していく予定
・むしろ、InfluxDBはマネージドサービスに移行したい。早くAWSの時系列DBが日本で使えるようになってほしい
■ 時系列DBは消えてもいいデータを扱う(25:57〜)
================================
Q:時系列DBではデータの消去や修正はどう行っている?
A:基本的には時系列DBには消えてもいいデータを入れる
================================
・時系列DBは後からデータの修正などはできないと思った方がいい
・データを修正するのであれば、全部消してしまってバケットごと入れ替えた方が早いことが多い
・時系列DBでは消えてもいいデータを扱うようにする。RDBとは考え方が違うことを理解する
■ データドリブンな企業を目指す(27:40 〜)
================================
Q:今後やっていきたいことは?
A:エンジニアだけでなく、会社全体でデータを扱える状態を目指したい
================================
・データ基盤全体のアーキテクチャを見直しているため、近いうちに改修する予定
・リアルタイムダッシュボードはよりリアルタイムなデータが取得できるように改修していきたい
・リアルタイムダッシュボードはエンジニアやPMがメインで使っている。まだまだ、「必要なひとは見るが、必要ないひとは見ない」というのが現状
・コロナ下でなければ会社のディスプレイなどに常にログを表示させて、データが目に留まる状態にしたかった
・会社全体としてデータドリブンなマインドにしていきたい。それによってチームでやれることが増える好循環が生まれる
▼noteを一緒に作りませんか?
▼エンジニアの記事をもっと読みたい方はこちら
Text by megaya