こちらのイベントに参加してきたので、会の様子と感想を書いていこうと思います。
会の概要
以下、イベントページから引用です。
今回のテーマは「巨大なデータとの向き合い方 〜Safieとfreeeの場合〜」です!
クラウド録画サービスであるSafie(セーフィー)さんをお迎えして、バックオフィスのクラウドサービスであるfreeeとそれぞれ性質の異なる巨大なデータとの向き合い方についてご紹介します。
同じSaaSといった立場からの共通項やドメインの違いによる課題解決へのアプローチの違いなど、両社から2名ずつゲスト迎え、 知見や実践的なポイントを添えてお届けします!
会の様子
巨大なデータとはどれくらいのデータ量か?
Safieさんは映像データを900TB/日ほど扱う必要があるため、23PB程のデータがクラウド上に保存されており、映像の解析データは1億件/日程度の量があるということでした。
freeeさんの場合は、DBに数十億のオーダーが保存されているそうです。
データ量が多いからこそ起こる苦労
これはデータ量の問題だけではなく、プロダクトの特性もあるということですが、freeeさんの場合は負荷がスパイクしたときの対応が非常に難しいということでした。
データ量が多いからこそしている工夫
Safieさんはカメラの台数に応じてスケールしていく水平分割方式を行っているそうで、NWも分割されるようにしているそうです。(インフラ側で対応をしている)
また、1000件くらいのslow queryリストを舐めて、チューニングが必要かどうかの検討をするといった泥臭い対策もしているということです。
freeeさんはslow queryのチューニングでindexの最適化を行ったり、Reader/Writer構成のため、Writerに向いているクエリをReaderに逃したり、アプリケーションに求められる信頼性に応じてReader/Writerどちらにクエリを向けるかを見直ししたりといった工夫をされているということでした。
同時にアーキテクチャの改善として検索系をOpenSearchに切り替えしたり、シャーディングを進めたりといった改善も進めているという話がありました。
ドメイン知識のキャッチアップ
データ量が多いからこそドメイン知識のキャッチアップも難しくなってくるということで、各社さんがどのような工夫をしているか聞いていきました。
Safieさんは実際に動いているコードベースで挙動中心にキャッチアップしてもらったり、映像系の勉強会を開いたりしているそうです。
freeeさんは「グラス片手に...」の本を勉強会で読んでいったり、コードを読みつつ国税庁のドキュメントとの整合性をモブで確認したり、PdMからドメイン知識を吸収する会を開いたりしているというお話でした。
Q&A
テーマに沿った話をした後は、お互いに話を聞いて気になったポイントについて質疑応答をする時間がありました。
以下、質問の内容と回答を一問一答形式かつ常体で記載していきます。
水平分割の運用で工夫していることは?
デプロイ時の負荷を調整したり、エラー通知がSlackにすぐ飛ぶようにしている。
Reader/Writer構成でここはやばい部分を勘で判断できるようになる勘所は?
読んだデータをそのままDBに反映させるような機能を抑えるようにして、そこから判断をしている。
また、不安な部分は会計に詳しい人とクロスチェックしている。
Aurora以外のDBを検討したことはあったか?
- 削除周りで問題点があったのでAurora以外の採用は見送った
- Dynamo DBも一部使っているが、結果整合性で成り立つような機能が大半なので、そういった機能はAuroraを使うようにしている
シャーディングの単位はどのようにしているのか?
- デバイスキーに書き込みが多いという特徴があるため、特定ユーザーによってうわ振れすることはなく、予測は一定しやすい。デバイスの世代によってリバランスすることはあるので、その点は考慮している
- 開発観点から、水平シャーディングはしていない。もしやるとしたら事業所単位で切ることになると考えている
会全体を通した感想
データ量が多いからこその工夫が聞けて面白かった部分もありましたが、slow queryのチューニングなど、やるべきことに対して当たり前に取り組んでいた話も印象的でした。
具体的なデータ量を聞けたりインフラ構成を一部聞けたのも、非常に面白かったです。