2023/8/31に開催されたSRE Longe #15でお話した、みてね SREの伊東の登壇資料です。 https://sre-lounge.connpass.com/event/290455/
データベースにまつわるトイル削減の新手法の提案SRE Lounge #15
View Slide
MIXI, Inc.自己紹介 株式会社MIXI Vantageスタジオ みてねプロダクト開発部 基盤開発グループ SREチーム 伊東 宏起 https://hekki.info
MIXI, Inc.家族アルバム みてねの紹介写真プリントフォトブックスマホで撮影した子どもの写真や動画を家族と共有し、コミュニケーションして楽しむ家族アルバムサービスです。
MIXI, Inc.家族アルバム みてねの紹介利用者数1,800万人を突破(2023年5月時点)※ iOS・Android™ アプリ登録者数、ブラウザ版登録者数の合計7言語・175の国と地域でサービスを提供
MIXI, Inc.本日お話する内容 - データベースにまつわるトイルについて - トイル削減のための新手法の提案 - 具体的な実装例の紹介 - まとめ
MIXI, Inc.データベースにまつわるトイルについて - Googleの「Site Reliability Engineering」によると、トイルの定義は次のようなものがある - 「トイルとは、手作業、繰り返される、自動化が可能、戦術的、長期的な価値がない、サービスの成長に比例して増加する、といった特徴を持つ作業です。」 - https://cloud.google.com/blog/ja/products/gcp/identifying-and-tracking-toil-using-sre-principles - ではデータベースにまつわるトイルとは? - 監視の設定や調整 - データベースエンジンのアップグレード - セキュリティパッチの適用
MIXI, Inc.- みてねで運用しているいくつかのサービスのうち、メディアのエンコードを主な責務としているマイクロサービスがある - こちらのマイクロサービスの詳細については「1秒動画のつくり方 ― 「家族アルバム みてね」における動画エンコードパイプラインとその最適化事例」をご覧ください - エンコードに関わるパラメータの管理などにDBを使っているものの、テーブルサイズは小さくクエリも非常に少ない - そこで、これらのデータをDB以外に保存することでDB自体をなくしてトイルもなくすという手法を思いつく トイル削減のための新手法の提案
MIXI, Inc.- データの保存先はAmazon S3を採用し、JSON形式のテキストデータを保存する - 該当のマイクロサービスはRailsを使っており、通常であればActive Recordを使うところを改造 - Active Modelと自前のS3操作用のモジュールを組み合わせ、 Active Recordのinterfaceに似せた自前のモデルを実装 - テーブルのJOINやトランザクション等は使えないが 元々使っていなかったので問題なし - オブジェクトの保存・ロード・更新など 必要最低限の機能のみを実装 具体的な実装
MIXI, Inc.- 無事DBを廃止することができ、これに伴って冒頭で紹介したトイルを撲滅することに成功 - S3の高耐久性も相まって、リリース後から半年経過した現時点でトラブルなし - DBインスタンスがなくなったことによるコスト削減という副次的な効果も得られた - 一方で、独自実装による分かりにくさといったデメリットも リリース後
MIXI, Inc.- DB自体をなくすという斬新な手法でDBの運用にまつわるトイルを撲滅することができました - どんなワークロードにも適用できるわけではないので注意 - たとえばDBのテーブルサイズが小さく・シンプルなクエリだけのパターンなど - SREのプラクティスを推進するにあたって、アプリケーション開発のスキルを求められることはよく語られていますが、今回のようなケースではそれを強く実感しました まとめ
MIXI, Inc.