はじめに
技術本部 サービスリライアビリティグループ(SRG)の鬼海です。
#SRG(Service Reliability Group)は、主に弊社メディアサービスのインフラ周りを横断的にサポートしており、既存サービスの改善や新規立ち上げ、OSS貢献などを行っているグループです。
データベースワーキンググループとは
我々SRGが管轄しているサービス数は100を超えており様々なデータベースが利用されています。
特にメディアサービス内で利用実績が多いものがMySQLとMongoDBです。
これらのソフトウェアを長年利用してきた知見を個人やチームを超えて活用できるようにしていくため、このワーキンググループが発足されました。
主に以下のようなことに取り組んでいます。
DBガイドライン
目的
社内での利用事例や知見を集めて、サービス開発でMySQLやMongoDBを利用するときの困りごとをすぐに解決できるようにする。
内容
どのバージョンを利用するべきなのか、高可用構成を作るための手法や注意点、バックアップ手法、設定やインデックスのチューニングなどをドキュメント化しています。
弊社ではプライベートクラウドのほかパブリッククラウド各社のマネージドデータベースも利用おり、それらを利用する上でのノウハウやベストプラクティスなどの情報も提供しています。
また、データベースで障害発生した場合に状況を簡易診断できるようなフローチャートも作成しています。
下記はMySQL利用時にレプリケーション遅延秒数が増えた際のフローチャートの例です。
簡易診断をつくることで、「データベースで障害発生したけど何をしたらいいかわからない」という人を減らせていければいいなと思っています。
DB勉強会
サービス開発をしている方を対象に定期的に社内勉強会を開催しています。
データベース全体の話からMySQL,MongoDB個別の運用、障害対応、チューニングなどの話をしています。
下記は過去に行ったMySQL勉強会の中でのIndexチューニングの内容です。
実際のサービスで利用されているテーブル構成を例にどういったチューニングが適切かという話をしました。
勉強会開催後のアンケートでは実際の事例紹介や実践的な内容が特に好評だったので、こういった情報は今後も発信していきたいです。
今後の展望
社内向けに書いているガイド記事ですが、運用や障害対応などの情報は今後このエンジニアブログにも情報を掲載していきたいと考えています。
まだまだ社内でもこのガイドラインの知名度は低いので勉強会と絡めて宣伝活動をしていき、より多くのサービスで役立つようにしていきます。
また現在はMongoDBとMySQLのみになっていますが、今後は分散データベースやNoSQLなどの別のデータベースの採用事例も増えていますので、そういった情報も扱っていきたいです。