Reliability Engineering (DBRE) とは n 主な役割 n SLO/SLI を測定し、それに合わせた開発組織へのアプローチ n ⾃動化、⾃律化推進による⽣産性の向上 n Backup/Restore などサービス稼働率の向上 n Database セキュリティ & ガバナンスコントロール n 他分野のスペシャリストとの分野を超えたコラボレーション Database に対する専⾨知識と判断を⽤いてサービスの信頼性を担保すること
n Cloud によって誰でも⼀定のレベルで解決できる⼟壌が揃っている n Cloud 技術の爆発的な発展 n DevOps / SRE 思想の醸成 n AI 技術の進歩 n ⼀⽅で Database そのものに対する基本的なアプローチはこれまでと変わっていない n 環境分離 n 構成管理 n パフォーマンスチューニング n Backup/Restore n Security & Governance 変化しているのは Database を取り巻く周りの環境
Database Document の⾃動⽣成 n 企業のガイドラインに適⽤した Platform の提供, etc. n 必ず⾏うべき設定や各サービスのお困りごとを解決する n スキーマレビュー、設計サポート n SlowQuery の対応サポート n トラブル対応サポート, etc. 現場のエンジニアの⽣産性を⾼める
Database Document の⾃動⽣成 n 企業のガイドラインに適⽤した Platform の提供, etc. n 必ず⾏うべき設定や各サービスのお困りごとを解決する n スキーマレビュー、設計サポート n SlowQuery の対応サポート n トラブル対応サポート, etc. 現場のエンジニアの⽣産性を⾼める
データ量は常に変化している n Database のテーブル定義やパラメータは Dynamic に変更可能なものも多い n デプロイに対応したスキーマ変更 n リクエストに増加に応じた max_connections の変更などのパラメータチューニング n Dynamic でないものもありますがここでは割愛します
の Aurora Cluster が存在している (* dev/stg など開発環境を含む) n Database は⽣モノ n ドキュメントには正確性が求められるがその運⽤に対する⾟みも。。 n データベースの設定は動的に変更が加えられる n ドキュメントの更新は⾯倒な作業で後回しになりがち n コードの様に変更履歴をもれなく保存しているパターンは少ない n 数が多くなってくるとミスも発⽣しやすい n 変更し忘れたことに気づけない罠も割と多い n 何よりモチベーションが保てない
Database Document の⾃動⽣成 n 企業のガイドラインに適⽤した Platform の提供, etc. n 必ず⾏うべき設定や各サービスのお困りごとを解決する n スキーマレビュー、設計サポート n SlowQuery の対応サポート n トラブル対応サポート, etc. 現場のエンジニアの⽣産性を⾼める
チケットなどでワークフローを作成 n マネージャー承認をもらう n 承認を確認した上で踏み台サーバを構築する n Database に接続するユーザーやそのパスワードを都度作成 n 作業が終わったらその踏み台サーバと Database に登録したユーザーを削除する 予定作業ならもしかしたらできるかもしれないが、リソースも膨⼤になり トラブル対応など1分1秒を争うことが発⽣した場合に 都度このフローを回すことは現実的に不可能
n 個別の機能をいかに Platform として昇華させるかを考える n ただやるだけではつまらない n 実現していることは枯れたこと n How の部分をモダンに楽しく n 今回共有した内容は⼀⾔で⾔うとドキュメントを⾃動⽣成したり、踏み台サーバを使いたい時に構築しているだけ n そこに DBA としてのナレッジと AWS の技術を組み込んで実現することで楽しみながら開発 DBRE Platform Tools
for MySQL n Amazon CloudWatch n Amazon DynamoDB n Amazon EC2 n AWS Lambda n AWS Secrets Manager n AWS Step Functions DBRE を⽀える技術 n 開発⼿法 n Scrum n 開発⾔語 n Golang n Monorepo 管理 n Nx n CICD n GitHub Actions n Infrastructure as Code n terraform n 特にこだわったポイント n Slack App n 承認者には都度確認を強いるため負荷を減らす必要があった n 平均構築時間 n 1分40秒程度
の波に乗らない理由がない n エンジニアだけではなくさまざまな業種の⼈たちが活⽤している n 使わなくても仕事はできる、が Word や Excel と同じように様々な⼈・業種で⽣成系 AI を 使うことが当たり前になる時代になる (と個⼈的には思っている) n どうやって使うかによって今でも業務効率を⼤幅に改善可能 ⾃分たちの当たり前レベルを上げることで 今の市場価値を⾼める 将来的な市場価値を下げない
n アプリケーションそのものに対する影響 n 外部連携しているサービスへの影響 n (割とある) 忘れ去られた管理システム n 影響範囲が広いため調査と調整コストが⼤きくなりがち n アプリケーションコードで何とかしようとするとマジカルな仕様ができてしまう n マジカルな仕様は調査・学習コストを上げ、属⼈化や開発⼯数の増加を引き起こす 早い段階でどれだけ適切に設計できるかは開発⽣産性に⼤きく影響してくる
AI がやるか ≒そこにある感情や状況を評価するかどうか n ⼈は⾃分にできないことを聞きづらい n こんなこともできないのかと思われたくない n 何が分からないのか分からず、質問の仕⽅を考えることに時間がかかってしまう n 聞く⼈が忙しい、など状況を何となく察してしまう n 忙しそうだと聞けないなどが発⽣し時間をかけて⾃⼰解決するように振る舞ってしまう n 結局⽣産性という観点ではマイナスに働いてしまう AI なら感情や状況を気にせず質問できる
AI に指摘されることでは受け⽌め⽅が違う n サービスにはその歴史と携わった⼈たちの想いがある n Review で正論で指摘されると反論できない⼼理も働きやすい n バックグラウンドやドメイン知識を持たない横断組織が⾏ってしまうとハレーションが溜まりやすい n (特に Database 関連の Review になるとお作法に従っているかどうか、という観点で Review しがち) AI であれば、「機械だしまぁ⼀意⾒として聞いておくか」くらいの軽い気持ちで受け⽌められる 間違っていても、(今なら) AI だしな、という反応ができる 期待通りの結果が得られなければ素早く聞き直すことができる
によるサポートを提供することで開発⽣産性に寄与する n DBRE が⾏うのは⽣成系 AI を活⽤したツールを開発して終わりではない n もちろん使われなければ意味がない n ⾃分たちの思いを仕組みに乗せ続けることで、(意識せずとも) DBRE が伴⾛している状態を形成することができる n (そして忘れてはいけないのは DBRE のやることはこのほかにもたくさんある) (今の) ⽣成系 AI の活⽤に期待していること