rights reserved. T O K Y O 2 0 1 9 . 1 0 . 0 3 - 0 4 AWS を活用した Database Reliability Engineering Keisuke Awata Database Reliability Engineer 株式会社ビズリーチ/DBRE グループ G - 6
rights reserved. Database Reliability Engineering とは Database におけるモノゴトを `Reliability Engineering` という側面から解決 n 主な役割 n 開発チームに対する教育、知見の共有 n プラットフォーム構築 n 自動化、自律化推進による生産性向上 n Database 運用のスペシャリスト n 他分野のスペシャリストとの分野を超えたコラボレーション
rights reserved. BizReach 流の Database Reliability Engineering DBRE グループ n 2019 年 2月 横断組織の一角として発足 n Database 運用は各開発部署で対応 n DBA Role の存在する部署は DBA が Database 管理を行う n DBA Role の存在しない部署では所属するエンジニアがフルスタックに対応 プロダクト組織 A SWE Team A..X SRE Team DBA(DBRE) Team プロダクト組織 B Scrum Team A..X プロダクト組織 C SWE Scrum Team A..X SRE Scrum Team
rights reserved. プラットフォーム基盤推進室 組織理念 エンジニアが成長でき、居続けたいと思う会社にする 優秀なエンジニアが集まり、育て、居続けられる環境を作ることで世の中に多くの価値を提供できる Mission 全サイトの信頼性を担保することで、 自社のサービス価値を最大化する Vision Make it Visible 品質、生産性を可視化することで 課題発見と健全な成長を促す No Ops, More Code エンジニアに対して開発と事業成長に 注力できる環境を提供する
rights reserved. BizReach 流の Database Reliability Engineering DBRE グループ n Platform を提供することで組織の Mission/Vision を具現化 n Database の 3大非機能要件の共通化を行い各事業に提供 (Cross-Functional Platform) n Backup n Provisioning n Monitoring
rights reserved. BizReach 流の Database Reliability Engineering DBRE グループ n Platform を提供することで組織の Mission/Vision を具現化 n Database の 3大非機能要件の共通化を行い各事業に提供 (Cross-Functional Platform) n Backup n Provisioning n Monitoring n DBA としてのナレッジを Engineering でサポート (Operational Platform) n Point In Time Recovery n 命名規則・設計ルールの共通化 n Release Operation 仕組み化 n Slow Query Analyze, etc.
rights reserved. BizReach 流の Database Reliability Engineering DBRE グループの Activity の裏側を紹介させていただきます n Platform を提供することで組織の Mission/Vision を具現化 n Database の 3大非機能要件の共通化を行い各事業に提供 (Cross-Functional Platform) n Backup n Provisioning n Monitoring n DBA としてのナレッジを Engineering でサポート (Operational Platform) n Point In Time Recovery n 命名規則・設計ルールの共通化 n Release Operation 仕組み化 n Slow Query Analyze, etc.
rights reserved. DBRE Platform Tools 組織横断的に利用できる Tool 開発 スローガン n 個別最適を行わない n 個別機能を開発しないのではない n 個別の機能をいかに Platform として昇華させるか n ただやるだけではつまらない n 実現していることは枯れたこと n How の部分を今っぽく n 組織横断的に作るプラットフォームによって実現できることは新しいことではない n それを今の技術を使いながら実現することで楽しみながら開発を行う
rights reserved. Backup Platform 組織横断的に利用できる Backup Platform 開発 n 前提条件② n 会社としての要件を担保 n 要件は自分たちのコントロールできない場所で変わることがある n 事件、世論、政治などの外部要件 n 保持期間、保持方法、保存場所などの内部要件
rights reserved. Backup Platform 横断組織的に利用できる Backup Platform 開発 AWS + BizReach DBRE n Serverless n CloudWatch Events, Step Functions, Lambda, ECS Fargate, DynamoDB, S3 n サーバ管理をしないことによる運用面の手軽さ n ヒトがアクセスしないことによるセキュリティ強化 n 全てをコード管理 n 1 Backup 対象につき1つの環境が Terraform で構築される n BizReach DBRE グループ以外の管轄のアカウントに対しても容易に構築可能
rights reserved. Backup Platform 横断組織的に利用できる Backup Platform 開発 AWS + BizReach DBRE n Snapshot Driven n RDS, Aurora n Snapshot を Restore してから Backup 処理 n Database 的に定点が取れているメリットを活かした作りが可能 n パラレルに dump 等どれだけ負荷を掛けてもプロダクトには影響を与えない n 全ての操作ログを取得 n 完了したら削除 n Restore そのものに時間がかかってしまうことは許容
rights reserved. Backup Platform 横断組織的に利用できる Backup Platform 開発 AWS + BizReach DBRE n Security n RDS, Aurora n Snapshot を Restore する際に毎回十分な長さのランダムパスワードを設定 n システム的に利用できるだけでいい状態 n ヒトはアクセスしない n DB に対する操作ログを全出力 n 処理完了時にリソースの停止、削除 n 不要にデータを保持し続けない n CloudTrail, GuardDuty, Security Hub, Trusted Advisor n Backup 処理だけでなくアカウントそのものに対する操作も監視 n 不正な操作を検知する仕組みを導入
rights reserved. Backup Platform 横断組織的に利用できる Backup Platform 開発 No Ops, More Code の実現 n 本質的には各プロダクトに存在すべき機能 n DBRE グループとして、プロダクトのエンジニアがより機能要件に注力できる環境を作る n 非機能要件に対する品質の担保 n プラットフォームとして品質の高水準化
rights reserved. Point In Time Recovery mysql > SELECT questions FROM me; +-----------------------------------------------+ | questions | +-----------------------------------------------+ | DB の Point In Time Recovery をやったことある方? | | 定期的にDBを含めたシステムの防災訓練をやっている方? | +-----------------------------------------------+ 2 rows in set (0.00 sec)
rights reserved. Point In Time Recovery Point In Time Recovery 時間 < それを利用するサービスのダウンタイム PITR は突然必要になる n 大抵の場合は最大級のトラブルと抱き合わせ n オペレーションミス n アプリケーションバグ n RDBMS そのもののバグ
rights reserved. Point In Time Recovery Point In Time Recovery 時間 < それを利用するサービスのダウンタイム PITR は突然必要になる n どうやって心理的、オペレーション的安全性を担保するか n サービス停止を伴う作業 n どんな作業が必要なのか n それにかかる時間 平常心でやり続けるためには情報が必要
rights reserved. Point In Time Recovery PITR: オンプレ編 大まかな必要オペレーション n (同一スペックのサーバ(箱)を探す) n (同一ネットワーク内に配置) n Backup から `どうにかして` Restore n 独自スクリプトなどの仕込み n アプリケーションエンジニアに引き渡して動作確認 DBA の職人芸
rights reserved. Point In Time Recovery PITR: RDS Aurora 編 大まかな必要オペレーション n Cluster を復旧 n 復元元の Cluster の状態を確認しながら設定 n Parameter Group n Security Group n CloudWatch の設定 など n Database Instance の復旧 n Cluster に紐付く Database Instance の個数 n Database Instance に紐付く諸々の設定 n アプリケーションエンジニアに引き渡して動作確認
rights reserved. Point In Time Recovery PITR: BizReach DBRE グループとしてのアプローチ 必要なオペレーションをコード化 n 最低限の入力で確実に PITR n Restore 元の Cluster ID (Instance ID) n 新しいRDS の Cluster ID (Instance ID) n 戻したい時間
rights reserved. Point In Time Recovery PITR: BizReach DBRE グループとしてのアプローチ 普段から定期的に CI/CD で流しておく n オペレーションそのものの信頼性の向上 n 突然の対応にも平常心で臨むための土台作り n 心理的安全性の向上 n Aurora の場合 Copy-On-Write 機能は時間指定をすると使えない n Aurora 5.7系の場合 Backtrack がまだ使えない -> 時間がかかることをあらかじめ知ることができる Make it Visible / No Ops, More Code
rights reserved. Point In Time Recovery PITR: BizReach DBRE グループとしてのアプローチ 完全に戻すためには この後に Binlog を充てる作業が必要 n SLA/SLO を決めておいて 場合によっては データを切り捨てる判断も重要 n Binlog からの PITR をやりきる為には DBA の経験が不可欠 n サービスの再開に時間がかかる n 更に悪い方向に進んでしまうこともある n 正常に戻せなかった場合のサービス断長期化リスク n Binlog の出力など設定そのものに対する制限 どこまで何をやるべきか、を見定めることをあらかじめ決めておく必要性
rights reserved. Slow Query Analyze Slow Query を分析することはアプリケーションの稼働率を上げる Slow Query が頻発していた場合どこから手をつけていいかわからない n 一番効果があるところから手をつけるためのアクション n Percona 社が提供している pt-query-digest というツールを使ってAnalyze n 対象の Slow Query Log を分析して n 同じ種類のクエリが何回流れているのか n どのテーブルを参照しているのか n 最大の時間や平均時間 などを出してくれる
rights reserved. AWS + BizReach Database Reliability Engineering n 自社の全サービスの Reliability (稼働率)を守る n Database におけるモノゴトを Engineering で解決 n Database を聖域化しすぎない n DBA としての専門的な知識、技術を誰でも使えるようにするために n AWS を活用し Database を安全に操作できる仕組みを開発 n Platform へ昇華させ、各プロダクトへ展開することで事業の成長を支える
rights reserved. AWS + BizReach Database Reliability Engineering n 自社の全サービスの Reliability (稼働率)を守る n Database におけるモノゴトを Engineering で解決 n Database を聖域化しすぎない n DBA としての専門的な知識、技術を誰でも使えるようにするために n AWS を活用し Database を安全に操作できる仕組みを開発 n Platform へ昇華させ、各プロダクトへ展開することで事業の成長を支える Database Reliability Engineering というアプローチ
rights reserved. We are Hiring! DBRE グループはまだ出来て7ヶ月の組織 やらなければならないこと、やりたいことはたくさんある n 今はまだあるべきものを形にしているだけ n 新しいことにもどんどん手をつけていきたい n 興味がある方はお気軽にご連絡ください! https://hrmos.co/pages/hrmos/jobs/160009210100
affiliates. All rights reserved. mysql > SELECT * FROM me ¥G *********** 1. row ********** name: 粟田 啓介 nickname: あわっち company: 株式会社 ビズリーチ title: DBRE twitter: @_awache 1 rows in set (0.00 sec)