[AWS DevDay Tokyo 2019 G-6] Database Reliability Engineering using AWS

9513a9cc8ee9b5f2a8b4a5a914da8411?s=47 _awache
October 04, 2019

[AWS DevDay Tokyo 2019 G-6] Database Reliability Engineering using AWS

2019-10-04 AWS DevDay Tokyo 2019 での発表資料です。

9513a9cc8ee9b5f2a8b4a5a914da8411?s=128

_awache

October 04, 2019
Tweet

Transcript

  1. © 2019, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. T O K Y O 2 0 1 9 . 1 0 . 0 3 - 0 4
  2. © 2019, Amazon Web Services, Inc. or its affiliates. All

    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
  3. © 2019, Amazon Web Services, Inc. or its 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)
  4. © 2019, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. BizReach, Inc 株式会社 ビズリーチ / BizReach, Inc 創業 : 2009年4月 代表者 : 南 壮一郎 従業員数 : 1,326名 (2019年8月現在) 拠点 : 東京/大阪/名古屋/福岡 事業内容 : インターネットを活用したサービス事業
  5. © 2019, Amazon Web Services, Inc. or its affiliates. All

    rights reserved.
  6. © 2019, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Database Reliability Engineering とは Database におけるモノゴトを `Reliability Engineering` という側面から解決 n 主な役割 n 開発チームに対する教育、知見の共有 n プラットフォーム構築 n 自動化、自律化推進による生産性向上 n Database 運用のスペシャリスト n 他分野のスペシャリストとの分野を超えたコラボレーション
  7. © 2019, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Organization QA Security ORE DBRE 事業横断組織 Platform Product Group Support エンジニア組織: 約15 社内のエンジニアの数: 約300名
  8. © 2019, Amazon Web Services, Inc. or its affiliates. All

    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
  9. © 2019, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. プラットフォーム基盤推進室 組織理念 エンジニアが成長でき、居続けたいと思う会社にする 優秀なエンジニアが集まり、育て、居続けられる環境を作ることで世の中に多くの価値を提供できる Mission 全サイトの信頼性を担保することで、 自社のサービス価値を最大化する Vision Make it Visible 品質、生産性を可視化することで 課題発見と健全な成長を促す No Ops, More Code エンジニアに対して開発と事業成長に 注力できる環境を提供する
  10. © 2019, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. BizReach 流の Database Reliability Engineering DBRE グループ n Platform を提供することで組織の Mission/Vision を具現化 n Database の 3大非機能要件の共通化を行い各事業に提供 (Cross-Functional Platform) n Backup n Provisioning n Monitoring
  11. © 2019, Amazon Web Services, Inc. or its affiliates. All

    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.
  12. © 2019, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. BizReach 流の Database Reliability Engineering DBRE グループ DBRE グループ Cross-Functional Platforms ・ Backup ・ Provisioning ・ Monitoring , etc. DBRE 推進 ・ DBRE 認知 ・ 全社DBA DBRE化推進 Operational Platforms ・ Point In Time Recovery ・ Release Operation 仕組み化 ・ 命名規則/設計ルール ・ Slow Query Analyze , etc. 全社 SLA/SLO/SLI の策定 Database 知見共有、教育 各プロダクト 事業部内 SLA/SLO/SLI の策定 Database を安心安全に誰でも扱うことができる状態 ・属人化の排除 ・Toil の削減 再帰性があり、信頼のできる ツール、仕組みの提供
  13. © 2019, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. BizReach 流の Database Reliability Engineering DBRE グループ DBRE グループ Cross-Functional Platforms ・ Backup ・ Provisioning ・ Monitoring , etc. DBRE 推進 ・ DBRE 認知 ・ 全社DBA DBRE化推進 Operational Platforms ・ Point In Time Recovery ・ Release Operation 仕組み化 ・ 命名規則/設計ルール ・ Slow Query Analyze , etc. 全社 SLA/SLO/SLI の策定 Database 知見共有、教育 各プロダクト 事業部内 SLA/SLO/SLI の策定 Database を安心安全に誰でも扱うことができる状態 ・属人化の排除 ・Toil の削減 再帰性があり、信頼のできる ツール、仕組みの提供 どの部署でも同じ基準で判断 できる仕組みを導入
  14. © 2019, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. BizReach 流の Database Reliability Engineering DBRE グループ DBRE グループ Cross-Functional Platforms ・ Backup ・ Provisioning ・ Monitoring , etc. DBRE 推進 ・ DBRE 認知 ・ 全社DBA DBRE化推進 Operational Platforms ・ Point In Time Recovery ・ Release Operation 仕組み化 ・ 命名規則/設計ルール ・ Slow Query Analyze , etc. 全社 SLA/SLO/SLI の策定 Database 知見共有、教育 各プロダクト 事業部内 SLA/SLO/SLI の策定 Database を安心安全に誰でも扱うことができる状態 ・属人化の排除 ・Toil の削減 再帰性があり、信頼のできる ツール、仕組みの提供 どの部署でも同じ基準で判断 できる仕組みを導入 横展開できるナレッジを Platform へと昇華
  15. © 2019, Amazon Web Services, Inc. or its affiliates. All

    rights reserved.
  16. © 2019, Amazon Web Services, Inc. or its affiliates. All

    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.
  17. © 2019, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. DBRE Platform Tools 組織横断的に利用できる Tool 開発 スローガン n 個別最適を行わない n 個別機能を開発しないのではない n 個別の機能をいかに Platform として昇華させるか n ただやるだけではつまらない n 実現していることは枯れたこと n How の部分を今っぽく n 組織横断的に作るプラットフォームによって実現できることは新しいことではない n それを今の技術を使いながら実現することで楽しみながら開発を行う
  18. © 2019, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Backup Platform
  19. © 2019, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Backup Platform 簡易的なイメージ DBRE プロダクト 稼働中本番DB 当日の Snapshot ①Snapshot の作成
  20. © 2019, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Backup Platform 簡易的なイメージ DBRE プロダクト 稼働中本番DB 当日の Snapshot ①Snapshot の作成 ②Snapshot の共有
  21. © 2019, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Backup Platform 簡易的なイメージ DBRE プロダクト 稼働中本番DB 当日の Snapshot ①Snapshot の作成 ②Snapshot の共有 ③Snapshot から復元
  22. © 2019, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Backup Platform 簡易的なイメージ DBRE プロダクト 稼働中本番DB 当日の Snapshot ①Snapshot の作成 ②Snapshot の共有 ④Backup の取得 ⑤Backup ファイルの アップロード ③Snapshot から復元
  23. © 2019, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Backup Platform 簡易的なイメージ DBRE プロダクト 稼働中本番DB 当日の Snapshot ①Snapshot の作成 ②Snapshot の共有 ④Backup の取得 ⑤Backup ファイルの アップロード ③Snapshot から復元 ⑥クリーンアップ
  24. © 2019, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Backup Platform 組織横断的に利用できる Backup Platform 開発 n 前提条件① n プロダクトそのものの稼働率に影響を与えない n 本番稼働中 DB に影響を及ぼさない Backup 処理 n プロダクトのエンジニアの工数の極小化
  25. © 2019, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Backup Platform プロダクトの稼働率に影響を与えない DBRE プロダクト 稼働中本番DB 当日の Snapshot ①Snapshot の作成 ②Snapshot の共有 ④Backup の取得 ③Snapshot から復元 ⑥クリーンアップ 本番稼働と別の環境で Backup を実行 どれだけ負荷を与えても問題ない ⑤Backup ファイルの アップロード
  26. © 2019, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Backup Platform プロダクトの稼働率に影響を与えない DBRE プロダクト 稼働中本番DB 当日の Snapshot ①Snapshot の作成 ②Snapshot の共有 ④Backup の取得 ③Snapshot から復元 ⑥クリーンアップ 本番稼働と別の環境で Backup を実行 どれだけ負荷を与えても問題ない Snapshot を参照・共有・削除するための IAM Role/Policy の設定のみで適用可能 ⑤Backup ファイルの アップロード
  27. © 2019, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Backup Platform 組織横断的に利用できる Backup Platform 開発 n 前提条件② n 会社としての要件を担保 n 要件は自分たちのコントロールできない場所で変わることがある n 事件、世論、政治などの外部要件 n 保持期間、保持方法、保存場所などの内部要件
  28. © 2019, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Backup Platform 会社としての要件を担保 DBRE プロダクト 稼働中本番DB 当日の Snapshot ①Snapshot の作成 ②Snapshot の共有 ④Backup の取得 ③Snapshot から復元 ⑥クリーンアップ Backup に伴う How の部分を DBRE グループで一元管理 • 要件変更にも一律で対応可能 ⑤Backup ファイルの アップロード
  29. © 2019, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Backup Platform 会社としての要件を担保 DBRE プロダクト 稼働中本番DB 当日の Snapshot ①Snapshot の作成 ②Snapshot の共有 ④Backup の取得 ③Snapshot から復元 ⑥クリーンアップ Backup に伴う How の部分を DBRE グループで一元管理 • 要件変更にも一律で対応可能 Backup を Statement Base に統一 • 世代を超えた Restore を保証し続けてくれるとは限らない • Restore する先のプラットフォームを選ばない ⑤Backup ファイルの アップロード
  30. © 2019, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Backup Platform 会社としての要件を担保 DBRE プロダクト 稼働中本番DB 当日の Snapshot ①Snapshot の作成 ②Snapshot の共有 ④Backup の取得 ③Snapshot から復元 ⑥クリーンアップ Backup に伴う How の部分を DBRE グループで一元管理 • 要件変更にも一律で対応可能 Backup を Statement Base に統一 • 世代を超えた Restore を保証し続けてくれるとは限らない • Restore する先のプラットフォームを選ばない ⑤Backup ファイルの アップロード 場合によっては専用の ストレージにするかも?
  31. © 2019, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Backup Platform 組織横断的に利用できる Backup Platform 開発 n 前提条件③ n Security 要件を満たすこと n データの持ち出しを防止
  32. © 2019, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Backup Platform Security 要件を満たすこと DBRE プロダクト 稼働中本番DB 当日の Snapshot ①Snapshot の作成 ②Snapshot の共有 ④Backup の取得 ③Snapshot から復元 ⑥クリーンアップ Restore するタイミングで毎回 ランダムなパスワードを設定 ⑤Backup ファイルの アップロード
  33. © 2019, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Backup Platform Security 要件を満たすこと DBRE プロダクト 稼働中本番DB 当日の Snapshot ①Snapshot の作成 ②Snapshot の共有 ④Backup の取得 ③Snapshot から復元 ⑥クリーンアップ Restore するタイミングで毎回 ランダムなパスワードを設定 監査ログを含め Database に対する 操作ログを全て保存 ⑤Backup ファイルの アップロード
  34. © 2019, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Backup Platform Security 要件を満たすこと DBRE プロダクト 稼働中本番DB 当日の Snapshot ①Snapshot の作成 ②Snapshot の共有 ④Backup の取得 ③Snapshot から復元 ⑥クリーンアップ Restore するタイミングで毎回 ランダムなパスワードを設定 監査ログを含め Database に対する 操作ログを全て保存 不要にリソースを保持し続けない 処理終了時に全て掃除 ⑤Backup ファイルの アップロード
  35. © 2019, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Backup Platform Security 要件を満たすこと DBRE プロダクト 稼働中本番DB 当日の Snapshot ①Snapshot の作成 ②Snapshot の共有 ④Backup の取得 ③Snapshot から復元 ⑥クリーンアップ Restore するタイミングで毎回 ランダムなパスワードを設定 監査ログを含め Database に対する 操作ログを全て保存 不要にリソースを保持し続けない 処理終了時に全て掃除 CloudTrail, GuardDuty, Security Hub, Trusted Advisor 等を組み合わせて アカウントそのものに対する監視、管理 ⑤Backup ファイルの アップロード GuardDuty Security Hub Trusted Advisor Cloud Trail
  36. © 2019, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. プロダクト RDS Database Backup Platform アーキテクチャ詳説(事前設定) プロダクト担当者にて IAM Role と Policy を設定 n Policy 内容 n 対象の RDS が存在することを確認 n Backup に必要な Snapshot を作成 n 作成した Snapshot を共有 n 作成した Snapshot を削除 Role Policy - RDS に対する Describe - Snapshot の作成、共有 - 作成した Snapshot の削除 Policy 例 (Aurora) - "rds:Describe*", - "rds:CreateDBClusterSnapshot", - "rds:ModifyDBClusterSnapshotAttribute", - "rds:DeleteDBClusterSnapshot" Policy 例 (RDS) - "rds:Describe*", - "rds:CreateDBSnapshot", - "rds:ModifyDBSnapshotAttribute", - "rds:DeleteDBSnapshot"
  37. © 2019, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. DBRE Parallel Backup Platform アーキテクチャ詳説 (DBRE) AWS Step Functions workflow CloudWatch Event(time-based) RDS Cleanup Snapshot Cleanup Snapshot Cleanup Store Audit Log 必要な情報の登録、作成 n Workflow に必要な処理 n CloudWatch Event の設定 n Step Functions, ECS Fargate, Lambda の設定 n DynamoDB へ Master 情報の書き込み n Terraform で構成管理 n 1つのバックアップ対象につき、1環境作成
  38. © 2019, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. DBRE Parallel プロダクト RDS Database Backup Platform アーキテクチャ詳説(処理実行前) AWS Step Functions workflow Role Policy - RDS に対する Describe - Snapshot の作成、共有 - 作成した Snapshot の削除 CloudWatch Event(time-based) RDS Cleanup Snapshot Cleanup Snapshot Cleanup Store Audit Log
  39. © 2019, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. DBRE プロダクト RDS Database Backup Platform アーキテクチャ詳説①: Snapshot Creation and Share AWS Step Functions workflow Role Policy - RDS に対する Describe - Snapshot の作成、共有 - 作成した Snapshot の削除 CloudWatch Event(time-based) Assume Role Credentials Create Snapshot Share Snapshot Get Master Data CloudWatch Event で発火 Lambda で Master Data を Dynamo から取得 ECS Fargate を起動 Snapshot の作成 -> 共有 プロダクトのアカウントに Snapshot を作成 作成した Snapshot を DBRE アカウントに Share
  40. © 2019, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. DBRE プロダクト RDS Database Backup Platform アーキテクチャ詳説②: Restore Snapshot AWS Step Functions workflow Role Policy - RDS に対する Describe - Snapshot の作成、共有 - 作成した Snapshot の削除 CloudWatch Event(time-based) Assume Role Credentials Create Snapshot RDS Database Share Snapshot Restore Snapshot Get Master Data Snapshot から Restore Master Password をランダム設定 監査ログ(general log) を有効化
  41. © 2019, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. DBRE プロダクト RDS Database Backup Platform アーキテクチャ詳説③: Backup and UPLOAD S3 AWS Step Functions workflow Role Policy - RDS に対する Describe - Snapshot の作成、共有 - 作成した Snapshot の削除 CloudWatch Event(time-based) Assume Role Credentials Create Snapshot RDS Database Share Snapshot Restore Snapshot Backup & UPLOAD S3 Get Master Data Backup and Store テーブル単位でパラレルに dump S3 へ Backup ファイルを UPLOAD
  42. © 2019, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. DBRE Parallel プロダクト RDS Database Backup Platform アーキテクチャ詳説④: Clean UP AWS Step Functions workflow Role Policy - RDS に対する Describe - Snapshot の作成、共有 - 作成した Snapshot の削除 CloudWatch Event(time-based) Assume Role Credentials Create Snapshot RDS Database Share Snapshot Restore Snapshot Backup & UPLOAD S3 RDS Cleanup Snapshot Cleanup Snapshot Cleanup Store Audit Log Get Master Data Cleanup Backup のために使ったリソースを削除 Restore した RDS Share された Snapshot プロダクトに作った Snapshot 監査ログ(or general log) の保存
  43. © 2019, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. DBRE Parallel プロダクト RDS Database Backup Platform アーキテクチャ詳説(処理実行後) AWS Step Functions workflow Role Policy - RDS に対する Describe - Snapshot の作成、共有 - 作成した Snapshot の削除 CloudWatch Event(time-based) RDS Cleanup Snapshot Cleanup Snapshot Cleanup Store Audit Log
  44. © 2019, Amazon Web Services, Inc. or its affiliates. All

    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 グループ以外の管轄のアカウントに対しても容易に構築可能
  45. © 2019, Amazon Web Services, Inc. or its affiliates. All

    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 そのものに時間がかかってしまうことは許容
  46. © 2019, Amazon Web Services, Inc. or its affiliates. All

    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 不正な操作を検知する仕組みを導入
  47. © 2019, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. 最大のメリットの1つ 様々な RDBMS に対応可能 DBRE プロダクト 稼働中本番DB 当日の Snapshot ①Snapshot の作成 ②Snapshot の共有 ④Backup の取得 ③Snapshot から復元 ⑥クリーンアップ MySQL なら mysqldump PostgreSQL なら pgdump など ⑤Backup ファイルの アップロード
  48. © 2019, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. 最大のメリットの1つ ベースを変えずに新しい Platform を構築 (ex: Masking Platform) DBRE プロダクト 稼働中本番DB 当日の Snapshot ①Snapshot の作成 ②Snapshot の共有 ④データマスキング ⑤マスキングファイル のアップロード ③Snapshot から復元 ⑥クリーンアップ
  49. © 2019, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. プロダクト検証 最大のメリットの1つ ベースを変えずに新しい Platform を構築 (ex: Masking Platform Next) DBRE プロダクト 稼働中本番DB 当日の Snapshot ①Snapshot の作成 ②Snapshot の共有 ④データマスキング ③Snapshot から復元 ⑥クリーンアップ ⑤Snapshot 作成 ⑦ Snapshot を共有 QA 利用 DB
  50. © 2019, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Backup Platform 横断組織的に利用できる Backup Platform 開発 No Ops, More Code の実現 n 本質的には各プロダクトに存在すべき機能 n DBRE グループとして、プロダクトのエンジニアがより機能要件に注力できる環境を作る n 非機能要件に対する品質の担保 n プラットフォームとして品質の高水準化
  51. © 2019, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Point In Time Recovery
  52. © 2019, Amazon Web Services, Inc. or its affiliates. All

    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)
  53. © 2019, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Point In Time Recovery Point In Time Recovery 時間 < それを利用するサービスのダウンタイム PITR は突然必要になる n 大抵の場合は最大級のトラブルと抱き合わせ n オペレーションミス n アプリケーションバグ n RDBMS そのもののバグ
  54. © 2019, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Point In Time Recovery Point In Time Recovery 時間 < それを利用するサービスのダウンタイム PITR は突然必要になる n どうやって心理的、オペレーション的安全性を担保するか n サービス停止を伴う作業 n どんな作業が必要なのか n それにかかる時間 平常心でやり続けるためには情報が必要
  55. © 2019, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Point In Time Recovery PITR: オンプレ編 大まかな必要オペレーション n (同一スペックのサーバ(箱)を探す) n (同一ネットワーク内に配置) n Backup から `どうにかして` Restore n 独自スクリプトなどの仕込み n アプリケーションエンジニアに引き渡して動作確認 DBA の職人芸
  56. © 2019, Amazon Web Services, Inc. or its affiliates. All

    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 アプリケーションエンジニアに引き渡して動作確認
  57. © 2019, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Point In Time Recovery PITR: BizReach DBRE グループとしてのアプローチ 必要なオペレーションをコード化 n 最低限の入力で確実に PITR n Restore 元の Cluster ID (Instance ID) n 新しいRDS の Cluster ID (Instance ID) n 戻したい時間
  58. © 2019, Amazon Web Services, Inc. or its affiliates. All

    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
  59. © 2019, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Point In Time Recovery PITR: BizReach DBRE グループとしてのアプローチ 完全に戻すためには この後に Binlog を充てる作業が必要 n SLA/SLO を決めておいて 場合によっては データを切り捨てる判断も重要 n Binlog からの PITR をやりきる為には DBA の経験が不可欠 n サービスの再開に時間がかかる n 更に悪い方向に進んでしまうこともある n 正常に戻せなかった場合のサービス断長期化リスク n Binlog の出力など設定そのものに対する制限 どこまで何をやるべきか、を見定めることをあらかじめ決めておく必要性
  60. © 2019, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Slow Query Analyze
  61. © 2019, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Slow Query Analyze Slow Query を分析することはアプリケーションの稼働率を上げる Slow Query が頻発していた場合どこから手をつけていいかわからない n 一番効果があるところから手をつけるためのアクション n Percona 社が提供している pt-query-digest というツールを使ってAnalyze n 対象の Slow Query Log を分析して n 同じ種類のクエリが何回流れているのか n どのテーブルを参照しているのか n 最大の時間や平均時間 などを出してくれる
  62. © 2019, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. pt-query-digest Output
  63. © 2019, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. pt-query-digest Output Example 上から順番に対応していくと全体的な効果が高い (対象のLogの中で 48回、合計で 260秒 程度影響を与えている)
  64. © 2019, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Slow Query Analyze AWS + pt-query-digest CloudWatch / Lambda / S3 との組み合わせ n Slow Query を CloudWatch Logs に出力 n 時間指定や ユーザー指定などをできるようにした上で Slow Query Log を生成 n pt-query-digest を使ってAnalyze RDS Database Slow Query Log を出力 期間/ユーザーなどを 指定 Slow Query Log Analyze Return S3 Path 対象データをCloudWatch から取り出し Put Analyzed File To S3
  65. © 2019, Amazon Web Services, Inc. or its affiliates. All

    rights reserved.
  66. © 2019, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. AWS + BizReach Database Reliability Engineering n 自社の全サービスの Reliability (稼働率)を守る n Database におけるモノゴトを Engineering で解決 n Database を聖域化しすぎない n DBA としての専門的な知識、技術を誰でも使えるようにするために n AWS を活用し Database を安全に操作できる仕組みを開発 n Platform へ昇華させ、各プロダクトへ展開することで事業の成長を支える
  67. © 2019, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. AWS + BizReach Database Reliability Engineering n 自社の全サービスの Reliability (稼働率)を守る n Database におけるモノゴトを Engineering で解決 n Database を聖域化しすぎない n DBA としての専門的な知識、技術を誰でも使えるようにするために n AWS を活用し Database を安全に操作できる仕組みを開発 n Platform へ昇華させ、各プロダクトへ展開することで事業の成長を支える Database Reliability Engineering というアプローチ
  68. © 2019, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. We are Hiring! DBRE グループはまだ出来て7ヶ月の組織 やらなければならないこと、やりたいことはたくさんある n 今はまだあるべきものを形にしているだけ n 新しいことにもどんどん手をつけていきたい n 興味がある方はお気軽にご連絡ください! https://hrmos.co/pages/hrmos/jobs/160009210100
  69. © 2019, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. mysql > SELECT 'questions' FROM you;
  70. © 2019, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. mysql > SELECT 'questions' FROM you; mysql > SELECT 'Thank you!' FROM me;
  71. Thank you! © 2019, Amazon Web Services, Inc. or its

    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)
  72. © 2019, Amazon Web Services, Inc. or its affiliates. All

    rights reserved.