ビズリーチでは横断組織としてDBRE(Database Reliability Engineering)チームを発足しました。この記事ではチーム発足の意図と日本ではあまり聞き慣れないDBREについて紹介したいと思います。
DBREとは?
Database Reliability Engineering (DBRE)
日本語にすると「データベース信頼性エンジニアリング」となります。
Site Reliability Engineering (SRE)
は一般に広く使われるようになりましたが、 DBRE
に関しては海外ではオライリー本が発売されていますが、日本ではあまり聞かない名称だとは思います。
DBRE
の主な役割と求められる能力として挙げられているのが
- Educator and Mentor / 開発チームに対する教育
- Platform Builder /プラットフォーム構築
- Force multiplier / 自律化、自動化推進による生産性向上
- Operations Expert / データストア運用のスペシャリスト
- t-shaped / DB・データストアへの深い知識に加え他分野のスペシャリストと分野を超えてコラボレーションし、自分以外の専門知識を適用する
といった役割や能力になります。
我々は事業においてデータストア層(DB)は非常に重要だと考えています。データストア層がイケてないとデータ登録・取得の処理が複雑化し、レスポンスが悪くなるなどアプリケーションもイケてなくなります。そのため、DB(設計)のイケてなさを解消するためには、DBもアプリケーションも修正する必要があります。
またデータストア層がプロダクトの可用性、信頼性、保守性の重要なファクターを占めていて、これは事業が成長し長期の運用になればなるほど顕著になります。
お客様に安心してサービスを使っていただくためには、データストア及びデータの信頼性・可用性が大事になってきます。
DBAとDBREの違い
今までの DBA
との違いについてですが、 DBA
はその名の通りのデータの管理者、門番といったイメージが強いですが、 DBRE
は
データストア教育者でありメンターでありプラットフォーマーあると定義されています。
DBA | DBRE |
---|---|
データベースのAdministrator(管理者) | Reliability Engineering(信頼性エンジニア) プラットフォームビルダー(仕組み化によってデータを守る) |
「データ」の最後の門番 | 開発チームへのデータストアの技術知見のメンター |
データを蓄積する | 運用のエキスパート |
DBのスペシャリスト | エンジニアリングチームと協力して課題解決する |
業務のイメージとしては
- 信頼性と再利用性の高い(resilient)データストアを開発しプロビジョニング用のコンポーネントを開発チームに提供する
- チームの作業を支援するためのプラクティスと知識の提供
- SLOを確実に達成できるように、データアクセスとストレージの微妙な違いを理解して教える(RDB/NoSQLでのデータ構造の違いなど)
- データストアのトラブルシューティング、リカバリーの専門知識を持って開発チームを支援する
- セキュリティなどの担保
などが挙げられます。
感覚としては、データストア領域でのSRE、 DBA + Infrastracture as Code (コード化・自動化の実現)
といった概念になるかもしれません。
まとめると
開発チームがデータストアを正しく扱えるように導き、データストアにかかわる作業の自律化、自動化、再利用性を推進することで開発チーム全体の生産性向上させながらデータの信頼性も向上させる。
ビズリーチで起きていた課題
弊社には3-4年前までDBAという専門職はいませんでした。最近は優秀なDBAにジョインいただきデータストア層の改善が進んできましたが、色々と課題も抱えてきました。
- プロビジョニング、モニタリング、バックアップ、運用など同じことを各事業でやっている
- 全事業にDBAを配置できるほど人数がいない
- スクラムチームごとにDBAがほしい問題
- DBAができたことで逆に開発者がデータストアの可用性・信頼性などを意識しなくなった
- 開発部隊とデータストア層運用チーム(DBA)の意図せぬ分断
- 適切にDBに対するモニタリングができない、課題を開発チームと共有・改善できない
- DBAがレビューに入るタスクが追加として入ることで生産性が落ちた(納期遅れる)と言われる?・・・
弊社ではスクラムやマイクロサービス化など実施している事業もあるんですが、スクラムチームやマイクロサービスごとにデータストア関連の権限移譲して自律的に動くチームにしたいと思っても、そもそもメンバーに知見がなく、知見を深めようにもデータストアのサンドボックスがなかったり。
DBAを配置しても開発チームとの間に溝ができてしまったりとそんな問題が起こってました。
そんな中DBAチームからDBRE組織の提案があり、我々が直面している課題の解決策ではないかとチーム組成に動き出したのが経緯です。DBAが門番としてデータストアを管理する体制ではなく、開発チームが自律的にデータストアを安全に管理・運用できるプラットフォームを作る体制を目指して動き出しました。
現在のDBREチームの活動
DBREチームは2月から動き始めたばかりですが、
- データストアに関わる3大非機能要件(Provisioning, Monitoring, Backup)の共通化を行い各事業の労力を最小化する
- Platform化(共通化)を推進して、開発チームが業務に集中できる環境づくり
といった活動をメインに動いています。
Platform化といっても、これを使えと開発チームをがんじがらめにするのではなく、現場の自律性を尊重しながら自由にツール選定をできる環境をつくりつつも、セキュリティや信頼性など守らなければいけないところはきっちり守る。Toil(トイル)と呼ばれる作業を減らし運用効率も維持・向上させる体制構築を目指しています。
現在注力しているのは全社で使えるバックアップツールのPlatform化を行っています。DBAと言われた人たちがPythonなど自分でコードを書きながらツールやプラットフォームを作っています。
DBREの詳しい活動については、このあとあわっちが別記事で詳しく書いてくれる予定です。
直近のDBREチームを立ち上げた一番の効果は、組織を作り役割を明確化したことで、各開発チームからデータストア周りの課題感や困りごとが上がってくるようになったことでしょうか。
レッツジョイン
DBREチームを発足はしたんですが、とはいえやりたいことに対して仲間はまだまだ足りません、実はまだDBREチームの専任は2名です!DBREに興味のあるかた是非ご応募ください。いまDBAやってるよって方からソフトウエアエンジニアやSREだけどDBREに興味あるよって方もご応募お待ちしております。
採用情報のページはこちら
DBRE