Weitere ähnliche Inhalte
Ähnlich wie DBREから始めるデータベースプラットフォーム (20)
Mehr von Insight Technology, Inc. (20)
DBREから始めるデータベースプラットフォーム
- 1. Copyright (C) 2019 BizReach, Inc.
DBREから始める
データベースプラットフォーム
2019/9/25
株式会社ビズリーチ システム本部 プラットフォーム基盤推進室
⼭我 晟潤
- 3. 創業 ︓2009年4⽉
代表者 ︓南 壮⼀郎
従業員数︓1,326名(2019年8⽉現在)
拠点 ︓東京/⼤阪/名古屋/福岡/シンガポール
事業内容︓インターネットを活⽤したサービス事業
株式会社ビズリーチ / BizReach, Inc.
- 11. Database Reliability Engineering (DBRE): データベース信頼性エンジニアリング
• Database におけるモノゴトを `Reliability Engineering` という側⾯から解決
主な役割
• 開発チームに対する教育
• プラットフォーム構築
• ⾃律化、⾃動化推進による⽣産性向上
• データストア運⽤のスペシャリスト
• 他分野のスペシャリストと分野を超えてコラボレーション
10
DBREとは?
- 12. Database Reliability Engineering (DBRE): データベース信頼性エンジニアリング
• Database におけるモノゴトを `Reliability Engineering` という側⾯から解決
主な役割
• 開発チームに対する教育
• プラットフォーム構築
• ⾃律化、⾃動化推進による⽣産性向上
• データストア運⽤のスペシャリスト
• 他分野のスペシャリストと分野を超えてコラボレーション
11
DBREとは?
権限を絞ったりするのではなく、
正しくデータベースを操作できるよう
開発チームに寄り添っていきましょう。
- 13. Database Reliability Engineering (DBRE): データベース信頼性エンジニアリング
• Database におけるモノゴトを `Reliability Engineering` という側⾯から解決
主な役割
• 開発チームに対する教育
• プラットフォーム構築
• ⾃律化、⾃動化推進による⽣産性向上
• データストア運⽤のスペシャリスト
• 他分野のスペシャリストと分野を超えてコラボレーション
12
DBREとは?
基本は「データベース数 > DBA数」
本質的な作業に集中できるような
環境をつくりましょう。
- 14. Database Reliability Engineering (DBRE): データベース信頼性エンジニアリング
• Database におけるモノゴトを `Reliability Engineering` という側⾯から解決
主な役割
• 開発チームに対する教育
• プラットフォーム構築
• ⾃律化、⾃動化推進による⽣産性向上
• データストア運⽤のスペシャリスト
• 他分野のスペシャリストと分野を超えてコラボレーション
13
DBREとは?
DBREは設計段階からバリューを発揮し、
最適なセルフサービスプラットフォームを
提供しましょう。
- 15. 14
ビズリーチ流の Database Reliability Engineering
プラットフォーム基盤推進室
組織理念
エンジニアが成⻑でき、居続けたいと思う会社にする
優秀なエンジニアが集まり、育て、居続けられる環境を作ることで世の中に多くの価値を提供できる
Mission
全サイトの信頼性を担保することで、
自社のサービス価値を最大化する
Vision
Make it Visible
品質、生産性を可視化することで
課題発見と健全な成長を促す
No Ops, More Code
エンジニアに対して開発と事業成長に
注力できる環境を提供する
- 16. Platform を提供することで組織の Mission/Vision を具現化
• Database の 3⼤⾮機能要件の共通化を⾏い各事業に提供 (Cross-Functional Platform)
• Backup
• Provisioning
• Monitoring
• DBA としてのナレッジを Engineering でサポート (Operation Platform)
• Masking Operation
• Point In Time Recovery
• 命名規則・設計ルールの共通化
• Release Operation 仕組み化
• Slow Query Analyze
15
ビズリーチ流の Database Reliability Engineering
- 17. 16
DBREから考えるビズリーチ流のDBREチームの役割とアクション
DBREチーム
DBRE 推進
・ DBRE 認知
・ 全社DBA DBRE化推進
Cross-FunctionalPlatforms
・ Backup
・ Provisioning
・ Monitoring , etc.
全社 SLA/SLO/SLI の策定
Database 知⾒共有、教育
Operation Platforms
・Masking Operation
・Point In Time Recovery
・ Release Operation 仕組み化
・ 命名規則/設計ルール
・ Slow Query Analyze , etc.
各事業部
Database を安⼼安全に誰でも扱うことができる状態
属⼈化の排除
Toil の削減
事業部 SLA/SLO/SLI の策定
- 18. 17
DBREから考えるビズリーチ流のDBREチームの役割とアクション
DBREチーム
DBRE 推進
・ DBRE 認知
・ 全社DBA DBRE化推進
Cross-FunctionalPlatforms
・ Backup
・ Provisioning
・ Monitoring , etc.
全社 SLA/SLO/SLI の策定
Database 知⾒共有、教育
Operation Platforms
・Masking Operation
・Point In Time Recovery
・ Release Operation 仕組み化
・ 命名規則/設計ルール
・ Slow Query Analyze , etc.
各事業部
Database を安⼼安全に誰でも扱うことができる状態
属⼈化の排除
Toil の削減
事業部 SLA/SLO/SLI の策定
開発チームに対する教育
- 19. DBREチーム
DBRE 推進
・ DBRE 認知
・ 全社DBA DBRE化推進
Cross-FunctionalPlatforms
・ Backup
・ Provisioning
・ Monitoring , etc.
全社 SLA/SLO/SLI の策定
Database 知⾒共有、教育
Operation Platforms
・Masking Operation
・Point In Time Recovery
・ Release Operation 仕組み化
・ 命名規則/設計ルール
・ Slow Query Analyze , etc.
各事業部
Database を安⼼安全に誰でも扱うことができる状態
属⼈化の排除
Toil の削減
事業部 SLA/SLO/SLI の策定
18
DBREから考えるビズリーチ流のDBREチームの役割とアクション
プラットフォーム構築
⾃律化、⾃動化推進による⽣産性向上
- 20. DBREチーム
DBRE 推進
・ DBRE 認知
・ 全社DBA DBRE化推進
Cross-FunctionalPlatforms
・ Backup
・ Provisioning
・ Monitoring , etc.
全社 SLA/SLO/SLI の策定
Database 知⾒共有、教育
Operation Platforms
・Masking Operation
・Point In Time Recovery
・ Release Operation 仕組み化
・ 命名規則/設計ルール
・ Slow Query Analyze , etc.
各事業部
Database を安⼼安全に誰でも扱うことができる状態
属⼈化の排除
Toil の削減
事業部 SLA/SLO/SLI の策定
19
DBREから考えるビズリーチ流のDBREチームの役割とアクション
データストア運⽤のスペシャリ
スト
データストア運⽤のスペシャリ
スト
- 23. 22
DBREから考えるビズリーチ流のDBREチームの役割とアクション
DBREチーム
DBRE 推進
・ DBRE 認知
・ 全社DBA DBRE化推進
Cross-FunctionalPlatforms
・ Backup
・ Provisioning
・ Monitoring , etc.
全社 SLA/SLO/SLI の策定
Database 知⾒共有、教育
Operation Platforms
・Masking Operation
・Point In Time Recovery
・ Release Operation 仕組み化
・ 命名規則/設計ルール
・ Slow Query Analyze , etc.
各事業部
Database を安⼼安全に誰でも扱うことができる状態
属⼈化の排除
Toil の削減
事業部 SLA/SLO/SLI の策定
ここについての
お話
- 25. • プラットフォームの⽬的
• スローガン
• データベースプラットフォームの前提条件
• データベースプラットフォームについて
• 基本設計
• バックアッププラットフォーム
• マスキングプラットフォーム(データ連携⽤)
• 構築、運⽤していてのメリットデメリット
24
データベースプラットフォームについて
- 26. • プラットフォームの⽬的
• スローガン
• データベースプラットフォームの前提条件
• データベースプラットフォームについて
• 基本設計
• バックアッププラットフォーム
• マスキングプラットフォーム(データ連携⽤)
• 構築、運⽤していてのメリットデメリット
25
データベースプラットフォームについて
- 27. プラットフォームの⽬的
No Ops, More Code の実現
• プロダクトのエンジニアがより機能要件に注⼒できる環境を作る
• ⾮機能要件に対する品質の担保
• 会社横断的なプラットフォームとして品質の⾼⽔準化を図る
26
データベースプラットフォームについて
- 28. • プラットフォームの⽬的
• スローガン
• データベースプラットフォームの前提条件
• データベースプラットフォームについて
• 基本設計
• バックアッププラットフォーム
• マスキングプラットフォーム(データ連携⽤)
• 構築、運⽤していてのメリットデメリット
27
データベースプラットフォームについて
- 30. • プラットフォームの⽬的
• スローガン
• データベースプラットフォームの前提条件
• データベースプラットフォームについて
• 基本設計
• バックアッププラットフォーム
• マスキングプラットフォーム(データ連携⽤)
• 構築、運⽤していてのメリットデメリット
29
データベースプラットフォームについて
- 34. • プラットフォームの⽬的
• スローガン
• データベースプラットフォームの前提条件
• データベースプラットフォームについて
• 基本設計
• バックアッププラットフォーム
• マスキングプラットフォーム(データ連携⽤)
• 構築、運⽤していてのメリットデメリット
33
データベースプラットフォームについて
- 50. 使⽤している主なAWS製品
• Step Functions
• CloudWatch Events, Lambda, ECS, EC2など様々な製品連携を可能にするため利⽤
• CloudWatch Events
• 時間指定でStep Functionsを実⾏、⼊⼒値によって環境変更を可能にするため利⽤
• ECS(Fargate, EC2)/Lambda/EC2
• プログラム実⾏
• 必要に応じて適切な使い分けが可能
49
データベースプラットフォームについて
- 54. • プラットフォームの⽬的
• スローガン
• データベースプラットフォームの前提条件
• データベースプラットフォームについて
• 基本設計
• バックアッププラットフォーム
• マスキングプラットフォーム(データ連携⽤)
• 構築、運⽤していてのメリットデメリット
53
データベースプラットフォームについて
- 55. バックアッププラットフォーム
• ⽬的
• データの信頼性
• 要件
• 指定された過去の情報を閲覧可能な状態にする。
• 期間(1年半 :daily, それ以降:Monthly )
• バックアップは各エンジンの標準バックアップ
• 取得したバックアップは復元場所を意識しなくて良いようにするため
• MySQL:mysqldump , PostgreSQL:pg_dump
※ サービス継続に必要なもの(PITR等)はマネージドサービスに任せる。
54
データベースプラットフォームについて
- 56. 55
データベースプラットフォームについて
バックアッププラットフォーム
Parallel
事業部
DBREチーム
Lambda
[initialize]
AWS Step Functions workflow
DynamoDB
[Master table]
[Step table]
Fargate
[GetSnapshot]
Get Item
Role
AsuumeRole
Sts
credentials
CreateSnapshot
Policy
-"rds:Describe*",
-"rds:ModifyDBClusterSnapshotAttribute",
-"rds:CreateDBClusterSnapshot",
-"rds:DeleteDBClusterSnapshot",
-"rds:CreateDBSnapshot",
-"rds:ModifyDBSnapshotAttribute",
-"rds:DeleteDBSnapshot"
RDS
RDS or Aurora
SnapShot
RDS
SnapShot RDS or Aurora
Fargate
[RestoreSnapshot]
SharedSnapshot
Fargate
[Database Backup]
Restore
SnapShot
Backup for s3
S3
Fargate
[CleanUp …]
Delete SnapShot
Delete RDS
DynamoDB
[Step table]
Lambda
[StepStatus…]
Fargate
[Restore Test]
Resotre test
Fargate
[Store Info]
Store Info
Get
Store Info
- 57. ワークフローの流れ
1. Initialize
DynamoDBに格納している情報から実⾏に必要なパラメーターの読み込み・組み⽴て
2. Get SnapShot
事業内の RDS で SnapShot を作成、コピー、DBRE チームアカウントに共有
3. Restore SnapShot
DBRE チーム内のアカウントに共有されたスナップショットを展開
4. Backup for s3
テーブル単位でパラレルにバックアップしS3に保存
4. Store Info
テーブルの件数、チェックサムを取得
5. Restore Test
Drop & Restore
テーブルの件数、チェックサムを⽐較する。
6. Cleanup
後処理
56
データベースプラットフォームについて
バックアッププラットフォーム
- 64. • プラットフォームの⽬的
• スローガン
• データベースプラットフォームの前提条件
• データベースプラットフォームについて
• 基本設計
• バックアッププラットフォーム
• マスキングプラットフォーム(データ連携⽤)
• 構築、運⽤していてのメリットデメリット
63
データベースプラットフォームについて
- 65. マスキングプラットフォーム(データ連携)
• ⽬的
• データ連携の簡略化
• 要件
• TSVのマスキングファイルの作成
• 定義ファイルに指定された通りのマスキング
• 全件抽出
• マスキングファイルとセットでDDLを⽤意
• DDLはInformation schemaからテーブル定義を参照し、MySQLとBigQuery⽤のDDLを⽣成
64
データベースプラットフォームについて
- 66. DBREチーム
65
データベースプラットフォームについて
事業部
Lambda
[initialize]
AWS Step Functions workflow
DynamoDB
[Master table]
[Step table]
Fargate
[GetSnapshot]
Get Item
Role
AsuumeRole
Sts
credentials
CreateSnapshot
Policy
-"rds:Describe*",
-"rds:ModifyDBClusterSnapshotAttribute",
-"rds:CreateDBClusterSnapshot",
-"rds:DeleteDBClusterSnapshot",
-"rds:CreateDBSnapshot",
-"rds:ModifyDBSnapshotAttribute",
-"rds:DeleteDBSnapshot"
RDS
RDS or Aurora
SnapShot
RDS
SnapShot RDS or Aurora
Fargate
[RestoreSnapshot]
SharedSnapshot
Restore
SnapShot
Masking Extraction
S3
Fargate
[CleanUp …]
Delete SnapShot
Delete RDS
DynamoDB
[Step table]
Lambda
[StepStatus…]
File Upload
マスキングプラットフォーム(データ連携)
- 73. • プラットフォームの⽬的
• スローガン
• データベースプラットフォームの前提条件
• データベースプラットフォームについて
• 基本設計
• バックアッププラットフォーム
• マスキングプラットフォーム(データ連携⽤)
• 構築、運⽤していてのメリットデメリット
72
データベースプラットフォームについて
- 74. 構築、運⽤していてのメリットデメリット
メリット
• 様々な RDBMS に対応可能なプラットフォームの構築が可能
• スナップショットの取得、展開、RDBMSの種類についてなどAPIで操作可能
• APIの情報を元にプログラムの切り替えができる。
• プラットフォームとして拡張性が⾼い
• リソース(インスタンスサイズ)の調整が容易
• Step Functionsを利⽤してのプラグラムをパーツとして⾃由に扱える
73
データベースプラットフォームについて