Movatterモバイル変換


[0]ホーム

URL:


SlideShare a Scribd company logo

DevOps with Database on AWS

11 likes42,485 views
Amazon Web Services Japan
Amazon Web Services Japan

AWS Dev Day 資料: DevOps with Database on AWS

1 of 47
Downloaded 128 times
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Most read
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
Most read
41
42
43
Most read
44
45
46
47
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.DevOps with Database on AWSアマゾン ウェブ サービス ジャパン株式会社 技術統括本部2018年11月1日
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.自己紹介山内 晃 (やまうち あきら)アマゾン ウェブ サービス ジャパン株式会社ストラテジックアカウント本部ソリューションアーキテクト好きなAWSサービス• Amazon Relational Database Service (RDS)• Amazon Simple Storage Service (S3)
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.このセッションについてこんな方にオススメです• 開発サイクルの短縮や開発プロセスへの集中といった効果を狙ってDevOpsに取り組まれているアプリケーション開発者• 従来どおりの安定運用に加えて変化への対応スピードが求められているデータベース管理者こんなことをお話しします• DevOps with Database はなぜ難しいのか?• “銀の弾丸がない” この課題にアプリケーション、データベースの観点からどうアプローチできるか?
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.Agenda• 前半(山内)• DevOps with Database はなぜ難しいのか• スキーマ変更にかかる時間を短縮するには• 後半(大村)• スキーマ変更のバージョンを適切に管理するには• 停止時間を最小化するリリース方法の例
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.DevOpsとはDevOps =開発者 顧客releasetestbuildplan monitorデリバリのパイプラインフィードバックループ無駄やボトルネックを取り除くことで、ライフサイクルを効率化し、高速化することソフトウェア開発のライフサイクル
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.DevOps with Database はなぜ難しいのか
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.変更対象 が異なるアプリケーションソースコード スキーマ定義とデータデータベース
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.所要時間 が異なるアプリケーション秒 〜 分 秒〜日(操作やサイズ等に依存)データベース
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.担当者 が異なるアプリケーションDeveloper DBAデータベースpublic class HelloWorld{public static void main(String[] args){System.out.println("Hello World!!");}}CREATE TABLE t1 (year_col INT,some_data INT)PARTITION BY RANGE (year_col) (PARTITION p0 VALUES LESS THAN (2017),PARTITION p1 VALUES LESS THAN (2018),PARTITION p2 VALUES LESS THAN MAXVALUE);
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.変更管理 が異なるアプリケーションバージョン管理ツール プロジェクト独自データベース
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.DevOps with Database はなぜ難しい?1. スキーマ変更に時間がかかる2. バージョン管理が難しい3. スキーマ変更はアプリケーションの停止を伴う
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.DevOps with Database を実現するには?1. スキーマ変更に時間がかかる→ 短時間でスキーマを変更するには?2. バージョン管理が難しい→ 安全にバージョン管理するには?3. スキーマ変更はアプリケーションの停止を伴う→ リリース方法を工夫して停止時間を短縮するには?この3つの課題にフォーカスして考えてみましょう
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.スキーマ変更にかかる時間を短縮するには
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.データベースのスキーマ変更とは• テーブル の作成、削除、名前変更、最適化、圧縮、文字コード指定• カラム の追加、削除、名前変更、並び替え、データ型変更• キー(プライマリキー、外部キー)の追加、削除、削除&追加• インデックス の追加、削除、名前変更、タイプ変更• パーティション の作成、追加、削除• ビュー の作成、変更、削除etc...データ定義言語(DDL)によるオブジェクト定義の変更
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.スキーマ変更のパターン• メタデータだけを変更するDDLカラム名変更、インデックス削除、ビュー作成 など• 既存データのコピーを伴うDDLカラム追加・削除、インデックス追加、プライマリキー追加 など→ 通常、瞬時に終了するのであまり気にすることはない→ データ量に依存して時間がかかる(アプリケーションへの影響が懸念)
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.既存データのコピーを伴うDDL② 新しい定義で空の一時表を作る③ 元テーブルのデータをコピーTBL④ リネームしてテーブルを入れ替え① 元テーブルをロック(参照は許可、更新はブロック)更新 ×参照 ○参照 ○⑤ ブロックしていた更新をリダイレクトして反映更新TBL(例)MySQL5.7でのカラム追加
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.スキーマ変更を手堅くやるには• アプリケーション(更新もしくは全体)を停止• スナップショットを取得• DDLを実行• (問題が発生したらスナップショットから復旧)• アプリケーションを再開→ この方法だとDevOpsパイプラインに含めることは困難(実行時間やアプリケーション影響が読めず自動化しづらい)→ オンラインで(更新をブロックせずに)スキーマ変更したい
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.オンラインでのスキーマ変更(MySQL)• オンラインDDL(MySQL 5.6以降)DDLの例(MySQL 5.7) テーブル再構築 同時DML• テーブル名変更、カラム名変更• 外部キー制約追加、削除• インデックス削除不要 可能• カラム追加、削除、並び替え• プライマリキー追加、削除&追加• インデックス追加(*1)必要 可能• カラムデータ型変更• プライマリキー削除• パーティション作成、追加、削除 (*2)必要 不可*1 再構築ではないが、データ量依存で時間がかかる*2 パーティションのタイプや操作に依存(例:レンジ、リストのパーティション追加、削除はコピー不要など)ALTER TABLE item ADD COLUMN price INT, ALGORITHM=INPLACE, LOCK=NONE;
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.オンラインでのスキーマ変更(Oracle Database)• オンライン・データ再定義(Enterprise Edition)• DBMS_REDEFINITIONパッケージを利用• スキーマ変更中にDMLを実行できる• カラムの追加、削除、名前変更、表領域の移動、圧縮属性の変更など様々な操作に対応• カラム追加時のデフォルト値の最適化• 既存レコードがすべて更新される(10gR2以前)• デフォルト値をメタデータだけに格納• NOT NULL制約が必要(11g)/ 不要(12c)-- 元テーブル(original)を作成CREATE TABLE original (col1 NUMBER PRIMARY KEY,col2 VARCHAR2(100)) TABLESPACE users;-- 仮テーブル(interim)を作成CREATE TABLE interim (col1 NUMBER PRIMARY KEY,col2 VARCHAR2(100), col3 VARCHAR2(100))TABLESPACE users;-- オンライン再定義を開始BEGINDBMS_REDEFINITION.START_REDEF_TABLE(uname => 'master',orig_table => 'original',int_table => 'interim',col_mapping => 'col1 col1, col2 col2',options_flag =>DBMS_REDEFINITION.CONS_USE_PK);END;/-- オンライン再定義を終了execDBMS_REDEFINITION.FINISH_REDEF_TABLE('master','original','interim');【実行例】テーブル(original)にカラム(col3)を追加
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.オンラインでのスキーマ変更(SQL Server)• ONLINE ALTER COLUMN(Enterprise Edition)• SQL Server 2016以降のTransact-SQLでオンラインでの列変更をサポート• 制限事項についてはドキュメントで要確認 (*)• 複数列を同時に変更することはできない• チェック制約で参照されている列は変更できない• 変更される既存の列には2倍の領域割り当てが必要 etc..* ALTER TABLE (Transact-SQL)https://docs.microsoft.com/ja-jp/sql/t-sql/statements/alter-table-transact-sqlALTER TABLE item ADD price INT WITH (ONLINE = ON);
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.新テーブルにカラム追加して結合する参照参照参照③ 参照はビューを見せるTBL ① 追加カラムを持つ新テーブルを作成TBL_1 TBL_N・・・② 新旧テーブルを結合してビューを作成(変更)VIEW更新④ 更新はテーブルに行うHow?• カラム追加をテーブル作成とビュー作成(変更)に置き換えるPROS CONS• 停止時間を短縮できる(更新を長時間ブロックしない)• キー値のコピーが必要(テーブル作成時)• 結合ビューは複数テーブルを更新できない• 繰り返すと結合が多くなる
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.予備カラムを定義するtitle pages更新参照参照③ 参照、更新共にビュー経由で行うyobi1 yobi2② ビューを作成(変更)し、カラム名を変更VIEW① 予備カラムを定義してテーブルを作成TBLHow?• カラム追加をビュー変更で置き換えるPROS CONS• 停止時間を短縮できる(更新を長時間ブロックしない)• 必要数分の予備カラムを予め定義• データ型、キー、制約、インデックスの変更には対応できない(ALTER TABLEが必要)
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.JSON型を使う-- JSON型のカラムを定義してテーブル作成CREATE TABLE item (id INT, name VARCHAR(20), tags JSON);-- 異なる属性を持つJSON型のデータを挿入INSERT INTO item (id, name, tags) VALUES (1, 'Book', JSON_OBJECT(‘title', ‘The Four', 'pages', '245'));INSERT INTO item (id, name, tags) VALUES (2, 'PC', JSON_OBJECT(‘type’, ‘laptop', 'weight', '1.37'));-- 属性を指定してJSON型のデータを検索SELECT id, name FROM item WHERE JSON_EXTRACT(tags, "$.weight") = "1.37";How?• JSON型のカラムを定義して、単一のカラムで属性が異なる複数の値を格納するPROS CONS• RDBMSの特性を残したまま、NoSQLの柔軟性(スキーマレス)を使える• 検索が遅い(インデックスが使えない)• 検索や更新の実装が複雑になる• 値の妥当性検証(データ型)や参照整合性(外部キー制約)の担保が困難になる
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.前半のまとめ(DevOps with Database を実現するには?)1. スキーマ変更に時間がかかる→ 短時間でスキーマを変更するには?• オンラインでのスキーマ変更• 新テーブルにカラム追加して結合する• 予備カラムを定義する• JSON型を使う2. バージョン管理が難しい→ 安全にバージョン管理するには?3. スキーマ変更はアプリケーションの停止を伴う→ リリース方法を工夫して停止時間を短縮するには?
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.自己紹介大村 幸敬 (おおむら ゆきたか)アマゾン ウェブ サービス ジャパン株式会社インダストリソリューション部ソリューションアーキテクト好きなAWSサービス• AWS CLI (Command Line Interface)
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.Evolutionally Database Designアジャイル開発でデータベースの Continuous Integration とリファクタリングを行うための 11のプラクティスを紹介https://www.martinfowler.com/articles/evodb.htmlby Martin Fowler & Pramod Sadalage (2016)1. DBAとデベロッパがコラボレートする2. DB成果物をアプリとともにバージョン管理する3. 全てのDB変更はマイグレーションで管理する4. 全ての開発者に自分のDBを提供する5. 開発者はDBの変更を継続的に統合する6. DBはスキーマとデータで構成される7. 全てのDBの変更はリファクタリングである• DBの移行中フェーズの扱い8. リファクタリングを自動化する9. 開発者が自分のDBをOnDemandで更新できる10. DBへのアクセスコードを明確に分離する11. 頻繁にリリースする
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.DevOps with Database を実現するには?1. スキーマ変更に時間がかかる→ 短時間でスキーマを変更するには?2. バージョン管理が難しい→ 安全にバージョン管理するには?3. スキーマ変更はアプリケーションの停止を伴う→ リリース方法を工夫して停止時間を短縮するには?
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.スキーマ変更のバージョンを適切に管理するには
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.アプリ開発に伴うDBの変更スキーマ定義(DDL)マスタデータ変更後データ(DML)
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.DBの変更作業DBへの変更要求をコード変更に合わせて適用するには?コード DB変更要求開発者Production DBコード DB変更要求Integration DBDBAStaging DBDev DB開発者v1 v1v2 v2
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.全てのDB変更をマイグレーションで管理• ツールによるマイグレーションの管理と自動化• スキーマの変更をDDL/DMLのセットで定義• 適用時およびロールバック時の処理をコードで記述IntegrationDBStagingDBProductionDBDBAv1 v2v3v4v5v6v7Dev DBDev DBDev DBDev DBv7 v6 v5
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.マイグレーションの実装例Ruby on Rails の Active Records• マイグレーションファイル• DBスキーマをDSLで定義• ver up/down時の処理を記述• 任意のSQL記述も可能• マイグレーションファイル構成• db/migrate ディレクトリに配置• ファイル名形式はYYYYMMDDHHMMSS_add_products.rb
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.マイグレーションの実行例指定したバージョンのマイグレーションまでを実行ロールバックしてひとつ前のバージョンに戻る$ rails db:setup$ rails db:rollback$ rails db:migrate VERSION=20181101120000DBの初期化特定バージョンのマイグレーション処理のみを実行$ rails db:migrate:up VERSION=20181101120000異なる環境のマイグレーションを実行$ rails db:migrate RAILS_ENV=devv0v2v5ProductionDevv1v2v3v4v5v5v5
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.さまざまなDBマイグレーションツールフレームワークに付属• Ruby on Rails (Ruby)• Laravel (PHP)• Entity Framework (.NET)• Django (Python)• etc...専用ツール• Flyway• Liquibase• MyBatis• Phinx• sql-migrate• etc...
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.DevOps with Database を実現するには?1. スキーマ変更に時間がかかる→ 短時間でスキーマを変更するには?2. バージョン管理が難しい→ 安全にバージョン管理するには?3. スキーマ変更はアプリケーションの停止を伴う→ リリース方法を工夫して停止時間を短縮するには?
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.停止時間を最小化するリリース方法の例
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.DevOpsと無停止リリース• 外部調停なくリリースできることはDevOpsに必須• リリースに伴う停止時間がなければ外部調停不要• 無停止リリースの課題: 移行フェーズ• アプリ変更、DBスキーマ変更に伴う停止時間• 新旧アプリと新旧スキーマの組み合わせのハンドリングDatabase refactorings, being applied to legacy database and the phases it needs to take before being implemented from Evolutionally Database Design
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.リリースへの影響:ステートレスとステートフル• ステートレスなアプリケーションの変更• 複数のサーバやコンテナ• 順に停止&起動することで無停止入れ替え可能• ステートフルなデータストアの変更• 多くは単一のデータストアを共有• 単純に更新すると停止時間が発生• 構造化データストアはスキーマ変更が課題• 非構造化データストアはスキーマ変更不要v1 v1v1v2v2StatelessStateful
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.無停止リリースのパターン A: DBを共有DBとアプリの変更を個別に実施• DBとアプリケーションが疎結合であること• 新旧アプリでDBを共有• 一般的にはこの方法を推奨リリースのパターン1. DBスキーマ変更→アプリ変更2. アプリ変更→DBスキーマ変更ChangeschemaStart appdeploymentFinish appdeploymentStart appdeploymentFinish appdeploymentChangeschema
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.パターンA-1: DBスキーマ変更を先行旧アプリが新スキーマで稼働できる場合 (カラム追加など)• 例)新アプリで不要なカラムが残る可能性があるが無視• 例)旧アプリが追加したデータをTriggerで新スキーマへ投入v1 v1 v1v1v1 v1 v1v2v2 v2 v1v2v2 v2 v2v2• 旧アプリ• 新スキーマ• 新旧アプリ混在• 新スキーマスキーマ変更に伴う処理停止の最小化アプリデプロイに伴う処理停止の最小化(Draining)移行フェーズ
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.パターンA-2: アプリリリースを先行新アプリが旧スキーマで稼働できる場合(カラム削除など)• 例)リリース完了後は旧アプリを稼働できない• 例)削除されたカラムへの依存が新アプリに残っているとエラーが発生(要テスト)v1 v1 v1v1v2 v2 v1 v2 v2 v2v2• 新旧アプリ混在• 旧スキーマ• 新アプリ• 旧スキーマスキーマ変更に伴う処理停止の最小化アプリデプロイに伴う処理停止の最小化(Draining)v1 v1v2 v2 v2移行フェーズ
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.閑話休題:アプリバージョンの混在新機能はいつから有効か?• デプロイされ次第• フィーチャーフラグが変更され次第フィーチャーフラグはどこに配置するか?1. アプリサーバ上のファイル• CodeDeploy や SSM* RunCommandで設定2. 設定格納用のデータストア• SSM* ParameterStoreに格納3. データと同じDB• マイグレーションで管理機能A: ◯機能B: ×SSM Parameter Store*SSM = AWS Systems ManagerSSM RunCommandDBv2 v2 v1
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.無停止リリースのパターン B: 異なるDBの使用DB自体を切り替える• 変更が大きくスキーマ変更処理やデータコピーによる停止が許容できない場合• アプリとDBが密結合で個別リリースできない場合課題:新旧DBのデータを一致させること• 基本的に難しい問題リリースのパターン1. 主系DBのデータをレプリケーション2. 新旧両方のDBをDouble Writeで更新
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.パターンB-1: レプリケーションPros: トランザクション管理の複雑さを回避可能(DBが管理)Cons:切替え時にデータ同期完了まで待つ必要があるRDBMSにより異スキーマ間のレプリ可否が異なるW R R W R W R事前にGreen環境のスキーマを変更新旧スキーマ間でレプリ書き込み停止レプリ完了待ち読み込みは可能アクセス先切り替え書き込み再開切り戻しに備えた逆レプリ(または別DBへのレプリ)移行フェーズ
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.パターンB-2: Double WritePros: DBによらずアプリケーションの制御で無停止切り替え、切り戻しが可能Cons: データ整合性をアプリケーションで管理する必要がある書き込み速度の低下(2-phase-commitの実施など)W R RWR W R両系DBに書き込み開始アクセス先切り替え切り替えの完了移行フェーズW新スキーマで準備
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.まとめ - DevOps with Database を実現するには?1. スキーマ変更に時間がかかる→ 短時間でスキーマを変更するには?2. バージョン管理が難しい→ 安全にバージョン管理するには?• DBマイグレーションツールの使用3. スキーマ変更はアプリケーションの停止を伴う→ リリース方法を工夫して停止時間を短縮するには?• 銀の弾丸はない• A: DBを共有: スキーマ変更とアプリ変更の組み合わせ• B: 異なるDBを使用: レプリケーションやDoubleWrite
© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.Thank you!
Ad

Recommended

PDF
The Twelve-Factor Appで考えるAWSのサービス開発
Amazon Web Services Japan
 
PDF
20210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #13
Amazon Web Services Japan
 
PDF
20210216 AWS Black Belt Online Seminar AWS Database Migration Service
Amazon Web Services Japan
 
PDF
AWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design Pattern
Amazon Web Services Japan
 
PDF
[AWS EXpert Online for JAWS-UG 18] 見せてやるよ、Step Functions の本気ってやつをな
Amazon Web Services Japan
 
PDF
Serverless時代のJavaについて
Amazon Web Services Japan
 
PDF
20180425 AWS Black Belt Online Seminar Amazon Relational Database Service (Am...
Amazon Web Services Japan
 
PDF
マルチテナントのアプリケーション実装〜実践編〜
Yoshiki Nakagawa
 
PDF
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
Trainocate Japan, Ltd.
 
PDF
20200826 AWS Black Belt Online Seminar AWS CloudFormation
Amazon Web Services Japan
 
PDF
AWS Black Belt Online Seminar AWS Direct Connect
Amazon Web Services Japan
 
PDF
20190828 AWS Black Belt Online Seminar Amazon Aurora with PostgreSQL Compatib...
Amazon Web Services Japan
 
PDF
20190521 AWS Black Belt Online Seminar Amazon Simple Email Service (Amazon SES)
Amazon Web Services Japan
 
PDF
20200422 AWS Black Belt Online Seminar Amazon Elastic Container Service (Amaz...
Amazon Web Services Japan
 
PDF
AWS Black Belt Online Seminar 2017 AWS Elastic Beanstalk
Amazon Web Services Japan
 
PPTX
AWS Organizations連携サービスの罠(Security JAWS 第26回 発表資料)
NTT DATA Technology & Innovation
 
PDF
20200303 AWS Black Belt Online Seminar AWS Cloud Development Kit (CDK)
Amazon Web Services Japan
 
PDF
20200526 AWS Black Belt Online Seminar AWS X-Ray
Amazon Web Services Japan
 
PDF
20200708サーバーレスでのAPI管理の考え方
Amazon Web Services Japan
 
PDF
202110 AWS Black Belt Online Seminar AWS Site-to-Site VPN
Amazon Web Services Japan
 
PDF
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
Amazon Web Services Japan
 
PDF
20190911 AWS Black Belt Online Seminar AWS Batch
Amazon Web Services Japan
 
PDF
AWS Black Belt Online Seminar - Amazon Lightsail
Amazon Web Services Japan
 
PDF
AWS Black Belt Online Seminar 2017 AWS Storage Gateway
Amazon Web Services Japan
 
PDF
20200219 AWS Black Belt Online Seminar オンプレミスとAWS間の冗長化接続
Amazon Web Services Japan
 
PDF
AWSのログ管理ベストプラクティス
Akihiro Kuwano
 
PDF
わたくし、やっぱりCDKを使いたいですわ〜CDK import編〜.pdf
ssuser868e2d
 
PDF
AWS Black Belt Online Seminar AWS Key Management Service (KMS)
Amazon Web Services Japan
 
PPT
20170329 D3 DBAが夜間メンテをしなくなった日 発表資料
dcubeio
 
PDF
[CTC Forum 2019/10/25] 事例から学ぶ!AWS 移行でデータベースの管理・コストを削減する方法
Takanori Ohba
 

More Related Content

What's hot(20)

PDF
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
Trainocate Japan, Ltd.
 
PDF
20200826 AWS Black Belt Online Seminar AWS CloudFormation
Amazon Web Services Japan
 
PDF
AWS Black Belt Online Seminar AWS Direct Connect
Amazon Web Services Japan
 
PDF
20190828 AWS Black Belt Online Seminar Amazon Aurora with PostgreSQL Compatib...
Amazon Web Services Japan
 
PDF
20190521 AWS Black Belt Online Seminar Amazon Simple Email Service (Amazon SES)
Amazon Web Services Japan
 
PDF
20200422 AWS Black Belt Online Seminar Amazon Elastic Container Service (Amaz...
Amazon Web Services Japan
 
PDF
AWS Black Belt Online Seminar 2017 AWS Elastic Beanstalk
Amazon Web Services Japan
 
PPTX
AWS Organizations連携サービスの罠(Security JAWS 第26回 発表資料)
NTT DATA Technology & Innovation
 
PDF
20200303 AWS Black Belt Online Seminar AWS Cloud Development Kit (CDK)
Amazon Web Services Japan
 
PDF
20200526 AWS Black Belt Online Seminar AWS X-Ray
Amazon Web Services Japan
 
PDF
20200708サーバーレスでのAPI管理の考え方
Amazon Web Services Japan
 
PDF
202110 AWS Black Belt Online Seminar AWS Site-to-Site VPN
Amazon Web Services Japan
 
PDF
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
Amazon Web Services Japan
 
PDF
20190911 AWS Black Belt Online Seminar AWS Batch
Amazon Web Services Japan
 
PDF
AWS Black Belt Online Seminar - Amazon Lightsail
Amazon Web Services Japan
 
PDF
AWS Black Belt Online Seminar 2017 AWS Storage Gateway
Amazon Web Services Japan
 
PDF
20200219 AWS Black Belt Online Seminar オンプレミスとAWS間の冗長化接続
Amazon Web Services Japan
 
PDF
AWSのログ管理ベストプラクティス
Akihiro Kuwano
 
PDF
わたくし、やっぱりCDKを使いたいですわ〜CDK import編〜.pdf
ssuser868e2d
 
PDF
AWS Black Belt Online Seminar AWS Key Management Service (KMS)
Amazon Web Services Japan
 
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
Trainocate Japan, Ltd.
 
20200826 AWS Black Belt Online Seminar AWS CloudFormation
Amazon Web Services Japan
 
AWS Black Belt Online Seminar AWS Direct Connect
Amazon Web Services Japan
 
20190828 AWS Black Belt Online Seminar Amazon Aurora with PostgreSQL Compatib...
Amazon Web Services Japan
 
20190521 AWS Black Belt Online Seminar Amazon Simple Email Service (Amazon SES)
Amazon Web Services Japan
 
20200422 AWS Black Belt Online Seminar Amazon Elastic Container Service (Amaz...
Amazon Web Services Japan
 
AWS Black Belt Online Seminar 2017 AWS Elastic Beanstalk
Amazon Web Services Japan
 
AWS Organizations連携サービスの罠(Security JAWS 第26回 発表資料)
NTT DATA Technology & Innovation
 
20200303 AWS Black Belt Online Seminar AWS Cloud Development Kit (CDK)
Amazon Web Services Japan
 
20200526 AWS Black Belt Online Seminar AWS X-Ray
Amazon Web Services Japan
 
20200708サーバーレスでのAPI管理の考え方
Amazon Web Services Japan
 
202110 AWS Black Belt Online Seminar AWS Site-to-Site VPN
Amazon Web Services Japan
 
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
Amazon Web Services Japan
 
20190911 AWS Black Belt Online Seminar AWS Batch
Amazon Web Services Japan
 
AWS Black Belt Online Seminar - Amazon Lightsail
Amazon Web Services Japan
 
AWS Black Belt Online Seminar 2017 AWS Storage Gateway
Amazon Web Services Japan
 
20200219 AWS Black Belt Online Seminar オンプレミスとAWS間の冗長化接続
Amazon Web Services Japan
 
AWSのログ管理ベストプラクティス
Akihiro Kuwano
 
わたくし、やっぱりCDKを使いたいですわ〜CDK import編〜.pdf
ssuser868e2d
 
AWS Black Belt Online Seminar AWS Key Management Service (KMS)
Amazon Web Services Japan
 

Similar to DevOps with Database on AWS(20)

PPT
20170329 D3 DBAが夜間メンテをしなくなった日 発表資料
dcubeio
 
PDF
[CTC Forum 2019/10/25] 事例から学ぶ!AWS 移行でデータベースの管理・コストを削減する方法
Takanori Ohba
 
PDF
Webアプリを並行開発する際のマイグレーション戦略
Takayuki Shimizukawa
 
PDF
20170329 D3 DBAが夜間メンテをしなくなった日 発表資料
dcubeio
 
PDF
DBP-009_クラウドで実現するスケーラブルなデータ ウェアハウス Azure SQL Data Warehouse 解説
decode2016
 
PDF
DBワークロードのAWS化とデータベースサービス関連最新情報
Amazon Web Services Japan
 
PDF
20151120_ビッグデータ/クラウドにデータ連携自由自在 “オンプレミス ↔ クラウド ↔ クラウド” by 株式会社インサイトテクノロジー 森田俊哉
Insight Technology, Inc.
 
PDF
[db tech showcase Sapporo 2015] B15:ビッグデータ/クラウドにデータ連携自由自在 (オンプレミス ↔ クラウド ↔ クラ...
Insight Technology, Inc.
 
PDF
DDD 2016 DB 12c クエリー・オプティマイザ新機能活用と統計情報運用の戦略
歩 柴田
 
PDF
Bind Peek をもっと使おうぜ!(柴田 歩) - JPOUG Advent Calendar 2014(Day 5) -
歩 柴田
 
PDF
[CTO Night & Day 2019] AWS Database Overview -データベースの選択指針- #ctonight
Amazon Web Services Japan
 
PDF
Database smells
Mikiya Okuno
 
PDF
TAM 新人ディレクター システムスキルアップ プログラム 第6回 「データベース」
(株)TAM
 
PDF
Oracle Databaseを用いて学ぶ RDBMSの基本 (抜粋版) - JPOUG Oracle Database入学式 2016
Ryota Watabe
 
PDF
Lunch & Learn, AWS NoSQL Services
Insight Technology, Inc.
 
PDF
【ウェブ セミナー】AI 時代のクラウド データ ウェアハウス Azure SQL Data Warehouse [実践編]
Hideo Takagi
 
PDF
JJUG Bizreach DBFlute 2014
Masahiko Kubo
 
PDF
iOS/Androidにも対応した SQL Anywhere 12の魅力
nisobe58
 
PPTX
Lv1から始めるWebサービスのインフラ構築
伊藤 祐策
 
PDF
20120409 aws meister-reloaded-dynamo-db
Amazon Web Services Japan
 
20170329 D3 DBAが夜間メンテをしなくなった日 発表資料
dcubeio
 
[CTC Forum 2019/10/25] 事例から学ぶ!AWS 移行でデータベースの管理・コストを削減する方法
Takanori Ohba
 
Webアプリを並行開発する際のマイグレーション戦略
Takayuki Shimizukawa
 
20170329 D3 DBAが夜間メンテをしなくなった日 発表資料
dcubeio
 
DBP-009_クラウドで実現するスケーラブルなデータ ウェアハウス Azure SQL Data Warehouse 解説
decode2016
 
DBワークロードのAWS化とデータベースサービス関連最新情報
Amazon Web Services Japan
 
20151120_ビッグデータ/クラウドにデータ連携自由自在 “オンプレミス ↔ クラウド ↔ クラウド” by 株式会社インサイトテクノロジー 森田俊哉
Insight Technology, Inc.
 
[db tech showcase Sapporo 2015] B15:ビッグデータ/クラウドにデータ連携自由自在 (オンプレミス ↔ クラウド ↔ クラ...
Insight Technology, Inc.
 
DDD 2016 DB 12c クエリー・オプティマイザ新機能活用と統計情報運用の戦略
歩 柴田
 
Bind Peek をもっと使おうぜ!(柴田 歩) - JPOUG Advent Calendar 2014(Day 5) -
歩 柴田
 
[CTO Night & Day 2019] AWS Database Overview -データベースの選択指針- #ctonight
Amazon Web Services Japan
 
Database smells
Mikiya Okuno
 
TAM 新人ディレクター システムスキルアップ プログラム 第6回 「データベース」
(株)TAM
 
Oracle Databaseを用いて学ぶ RDBMSの基本 (抜粋版) - JPOUG Oracle Database入学式 2016
Ryota Watabe
 
Lunch & Learn, AWS NoSQL Services
Insight Technology, Inc.
 
【ウェブ セミナー】AI 時代のクラウド データ ウェアハウス Azure SQL Data Warehouse [実践編]
Hideo Takagi
 
JJUG Bizreach DBFlute 2014
Masahiko Kubo
 
iOS/Androidにも対応した SQL Anywhere 12の魅力
nisobe58
 
Lv1から始めるWebサービスのインフラ構築
伊藤 祐策
 
20120409 aws meister-reloaded-dynamo-db
Amazon Web Services Japan
 
Ad

More from Amazon Web Services Japan(20)

PDF
202205 AWS Black Belt Online Seminar Amazon VPC IP Address Manager (IPAM)
Amazon Web Services Japan
 
PDF
202205 AWS Black Belt Online Seminar Amazon FSx for OpenZFS
Amazon Web Services Japan
 
PDF
202204 AWS Black Belt Online Seminar AWS IoT Device Defender
Amazon Web Services Japan
 
PDF
Infrastructure as Code (IaC) 談義 2022
Amazon Web Services Japan
 
PDF
202204 AWS Black Belt Online Seminar Amazon Connect を活用したオンコール対応の実現
Amazon Web Services Japan
 
PDF
202204 AWS Black Belt Online Seminar Amazon Connect Salesforce連携(第1回 CTI Adap...
Amazon Web Services Japan
 
PDF
Amazon Game Tech Night #25 ゲーム業界向け機械学習最新状況アップデート
Amazon Web Services Japan
 
PPTX
20220409 AWS BLEA 開発にあたって検討したこと
Amazon Web Services Japan
 
PDF
202202 AWS Black Belt Online Seminar AWS Managed Rules for AWS WAF の活用
Amazon Web Services Japan
 
PDF
202203 AWS Black Belt Online Seminar Amazon Connect Tasks.pdf
Amazon Web Services Japan
 
PDF
SaaS テナント毎のコストを把握するための「AWS Application Cost Profiler」のご紹介
Amazon Web Services Japan
 
PDF
Amazon QuickSight の組み込み方法をちょっぴりDD
Amazon Web Services Japan
 
PDF
マルチテナント化で知っておきたいデータベースのこと
Amazon Web Services Japan
 
PDF
機密データとSaaSは共存しうるのか!?セキュリティー重視のユーザー層を取り込む為のネットワーク通信のアプローチ
Amazon Web Services Japan
 
PDF
パッケージソフトウェアを簡単にSaaS化!?既存の資産を使ったSaaS化手法のご紹介
Amazon Web Services Japan
 
PDF
202202 AWS Black Belt Online Seminar Amazon Connect Customer Profiles
Amazon Web Services Japan
 
PDF
Amazon Game Tech Night #24 KPIダッシュボードを最速で用意するために
Amazon Web Services Japan
 
PDF
202202 AWS Black Belt Online Seminar AWS SaaS Boost で始めるSaaS開発⼊⾨
Amazon Web Services Japan
 
PPTX
[20220126] JAWS-UG 2022初頭までに葬ったAWSアンチパターン大紹介
Amazon Web Services Japan
 
PDF
202111 AWS Black Belt Online Seminar AWSで構築するSmart Mirrorのご紹介
Amazon Web Services Japan
 
202205 AWS Black Belt Online Seminar Amazon VPC IP Address Manager (IPAM)
Amazon Web Services Japan
 
202205 AWS Black Belt Online Seminar Amazon FSx for OpenZFS
Amazon Web Services Japan
 
202204 AWS Black Belt Online Seminar AWS IoT Device Defender
Amazon Web Services Japan
 
Infrastructure as Code (IaC) 談義 2022
Amazon Web Services Japan
 
202204 AWS Black Belt Online Seminar Amazon Connect を活用したオンコール対応の実現
Amazon Web Services Japan
 
202204 AWS Black Belt Online Seminar Amazon Connect Salesforce連携(第1回 CTI Adap...
Amazon Web Services Japan
 
Amazon Game Tech Night #25 ゲーム業界向け機械学習最新状況アップデート
Amazon Web Services Japan
 
20220409 AWS BLEA 開発にあたって検討したこと
Amazon Web Services Japan
 
202202 AWS Black Belt Online Seminar AWS Managed Rules for AWS WAF の活用
Amazon Web Services Japan
 
202203 AWS Black Belt Online Seminar Amazon Connect Tasks.pdf
Amazon Web Services Japan
 
SaaS テナント毎のコストを把握するための「AWS Application Cost Profiler」のご紹介
Amazon Web Services Japan
 
Amazon QuickSight の組み込み方法をちょっぴりDD
Amazon Web Services Japan
 
マルチテナント化で知っておきたいデータベースのこと
Amazon Web Services Japan
 
機密データとSaaSは共存しうるのか!?セキュリティー重視のユーザー層を取り込む為のネットワーク通信のアプローチ
Amazon Web Services Japan
 
パッケージソフトウェアを簡単にSaaS化!?既存の資産を使ったSaaS化手法のご紹介
Amazon Web Services Japan
 
202202 AWS Black Belt Online Seminar Amazon Connect Customer Profiles
Amazon Web Services Japan
 
Amazon Game Tech Night #24 KPIダッシュボードを最速で用意するために
Amazon Web Services Japan
 
202202 AWS Black Belt Online Seminar AWS SaaS Boost で始めるSaaS開発⼊⾨
Amazon Web Services Japan
 
[20220126] JAWS-UG 2022初頭までに葬ったAWSアンチパターン大紹介
Amazon Web Services Japan
 
202111 AWS Black Belt Online Seminar AWSで構築するSmart Mirrorのご紹介
Amazon Web Services Japan
 
Ad

Recently uploaded(8)

PDF
[Hardening Designers Confernece 2025]ランサムウェアでの見えざるログ・見えるログ
kataware
 
PDF
PostgreSQL18新機能紹介(db tech showcase 2025 発表資料)
NTT DATA Technology & Innovation
 
PDF
20250710_Devinで切り拓くDB革命_〜価値創出に集中せよ〜.pdf
Masaki Yamakawa
 
PDF
Hyperledger Fabric最新v3.x系での機能強化、変更点にキャッチアップ!
LFDT Tokyo Meetup
 
PDF
20250711_日本IBM ミドルウエア・ユーザー研究会(JIMUC)総会_中村会長資料.pdf
ChikakoInami1
 
PDF
プライバシ保護のためのインターネットアーキテクチャの進化 (2025-07-11)
Jun Kurihara
 
PDF
人気ブロックチェーン基盤「Hyperledger Fabric」最新版を動かしてみた!
LFDT Tokyo Meetup
 
PDF
Hyperledger Fabric公式サンプル fabric-samples徹底解説
LFDT Tokyo Meetup
 
[Hardening Designers Confernece 2025]ランサムウェアでの見えざるログ・見えるログ
kataware
 
PostgreSQL18新機能紹介(db tech showcase 2025 発表資料)
NTT DATA Technology & Innovation
 
20250710_Devinで切り拓くDB革命_〜価値創出に集中せよ〜.pdf
Masaki Yamakawa
 
Hyperledger Fabric最新v3.x系での機能強化、変更点にキャッチアップ!
LFDT Tokyo Meetup
 
20250711_日本IBM ミドルウエア・ユーザー研究会(JIMUC)総会_中村会長資料.pdf
ChikakoInami1
 
プライバシ保護のためのインターネットアーキテクチャの進化 (2025-07-11)
Jun Kurihara
 
人気ブロックチェーン基盤「Hyperledger Fabric」最新版を動かしてみた!
LFDT Tokyo Meetup
 
Hyperledger Fabric公式サンプル fabric-samples徹底解説
LFDT Tokyo Meetup
 

DevOps with Database on AWS

  • 1.© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.DevOps with Database on AWSアマゾン ウェブ サービス ジャパン株式会社 技術統括本部2018年11月1日
  • 2.© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.自己紹介山内 晃 (やまうち あきら)アマゾン ウェブ サービス ジャパン株式会社ストラテジックアカウント本部ソリューションアーキテクト好きなAWSサービス• Amazon Relational Database Service (RDS)• Amazon Simple Storage Service (S3)
  • 3.© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.このセッションについてこんな方にオススメです• 開発サイクルの短縮や開発プロセスへの集中といった効果を狙ってDevOpsに取り組まれているアプリケーション開発者• 従来どおりの安定運用に加えて変化への対応スピードが求められているデータベース管理者こんなことをお話しします• DevOps with Database はなぜ難しいのか?• “銀の弾丸がない” この課題にアプリケーション、データベースの観点からどうアプローチできるか?
  • 4.© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.Agenda• 前半(山内)• DevOps with Database はなぜ難しいのか• スキーマ変更にかかる時間を短縮するには• 後半(大村)• スキーマ変更のバージョンを適切に管理するには• 停止時間を最小化するリリース方法の例
  • 5.© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.DevOpsとはDevOps =開発者 顧客releasetestbuildplan monitorデリバリのパイプラインフィードバックループ無駄やボトルネックを取り除くことで、ライフサイクルを効率化し、高速化することソフトウェア開発のライフサイクル
  • 6.© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.DevOps with Database はなぜ難しいのか
  • 7.© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.変更対象 が異なるアプリケーションソースコード スキーマ定義とデータデータベース
  • 8.© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.所要時間 が異なるアプリケーション秒 〜 分 秒〜日(操作やサイズ等に依存)データベース
  • 9.© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.担当者 が異なるアプリケーションDeveloper DBAデータベースpublic class HelloWorld{public static void main(String[] args){System.out.println("Hello World!!");}}CREATE TABLE t1 (year_col INT,some_data INT)PARTITION BY RANGE (year_col) (PARTITION p0 VALUES LESS THAN (2017),PARTITION p1 VALUES LESS THAN (2018),PARTITION p2 VALUES LESS THAN MAXVALUE);
  • 10.© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.変更管理 が異なるアプリケーションバージョン管理ツール プロジェクト独自データベース
  • 11.© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.DevOps with Database はなぜ難しい?1. スキーマ変更に時間がかかる2. バージョン管理が難しい3. スキーマ変更はアプリケーションの停止を伴う
  • 12.© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.DevOps with Database を実現するには?1. スキーマ変更に時間がかかる→ 短時間でスキーマを変更するには?2. バージョン管理が難しい→ 安全にバージョン管理するには?3. スキーマ変更はアプリケーションの停止を伴う→ リリース方法を工夫して停止時間を短縮するには?この3つの課題にフォーカスして考えてみましょう
  • 13.© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.スキーマ変更にかかる時間を短縮するには
  • 14.© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.データベースのスキーマ変更とは• テーブル の作成、削除、名前変更、最適化、圧縮、文字コード指定• カラム の追加、削除、名前変更、並び替え、データ型変更• キー(プライマリキー、外部キー)の追加、削除、削除&追加• インデックス の追加、削除、名前変更、タイプ変更• パーティション の作成、追加、削除• ビュー の作成、変更、削除etc...データ定義言語(DDL)によるオブジェクト定義の変更
  • 15.© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.スキーマ変更のパターン• メタデータだけを変更するDDLカラム名変更、インデックス削除、ビュー作成 など• 既存データのコピーを伴うDDLカラム追加・削除、インデックス追加、プライマリキー追加 など→ 通常、瞬時に終了するのであまり気にすることはない→ データ量に依存して時間がかかる(アプリケーションへの影響が懸念)
  • 16.© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.既存データのコピーを伴うDDL② 新しい定義で空の一時表を作る③ 元テーブルのデータをコピーTBL④ リネームしてテーブルを入れ替え① 元テーブルをロック(参照は許可、更新はブロック)更新 ×参照 ○参照 ○⑤ ブロックしていた更新をリダイレクトして反映更新TBL(例)MySQL5.7でのカラム追加
  • 17.© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.スキーマ変更を手堅くやるには• アプリケーション(更新もしくは全体)を停止• スナップショットを取得• DDLを実行• (問題が発生したらスナップショットから復旧)• アプリケーションを再開→ この方法だとDevOpsパイプラインに含めることは困難(実行時間やアプリケーション影響が読めず自動化しづらい)→ オンラインで(更新をブロックせずに)スキーマ変更したい
  • 18.© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.オンラインでのスキーマ変更(MySQL)• オンラインDDL(MySQL 5.6以降)DDLの例(MySQL 5.7) テーブル再構築 同時DML• テーブル名変更、カラム名変更• 外部キー制約追加、削除• インデックス削除不要 可能• カラム追加、削除、並び替え• プライマリキー追加、削除&追加• インデックス追加(*1)必要 可能• カラムデータ型変更• プライマリキー削除• パーティション作成、追加、削除 (*2)必要 不可*1 再構築ではないが、データ量依存で時間がかかる*2 パーティションのタイプや操作に依存(例:レンジ、リストのパーティション追加、削除はコピー不要など)ALTER TABLE item ADD COLUMN price INT, ALGORITHM=INPLACE, LOCK=NONE;
  • 19.© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.オンラインでのスキーマ変更(Oracle Database)• オンライン・データ再定義(Enterprise Edition)• DBMS_REDEFINITIONパッケージを利用• スキーマ変更中にDMLを実行できる• カラムの追加、削除、名前変更、表領域の移動、圧縮属性の変更など様々な操作に対応• カラム追加時のデフォルト値の最適化• 既存レコードがすべて更新される(10gR2以前)• デフォルト値をメタデータだけに格納• NOT NULL制約が必要(11g)/ 不要(12c)-- 元テーブル(original)を作成CREATE TABLE original (col1 NUMBER PRIMARY KEY,col2 VARCHAR2(100)) TABLESPACE users;-- 仮テーブル(interim)を作成CREATE TABLE interim (col1 NUMBER PRIMARY KEY,col2 VARCHAR2(100), col3 VARCHAR2(100))TABLESPACE users;-- オンライン再定義を開始BEGINDBMS_REDEFINITION.START_REDEF_TABLE(uname => 'master',orig_table => 'original',int_table => 'interim',col_mapping => 'col1 col1, col2 col2',options_flag =>DBMS_REDEFINITION.CONS_USE_PK);END;/-- オンライン再定義を終了execDBMS_REDEFINITION.FINISH_REDEF_TABLE('master','original','interim');【実行例】テーブル(original)にカラム(col3)を追加
  • 20.© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.オンラインでのスキーマ変更(SQL Server)• ONLINE ALTER COLUMN(Enterprise Edition)• SQL Server 2016以降のTransact-SQLでオンラインでの列変更をサポート• 制限事項についてはドキュメントで要確認 (*)• 複数列を同時に変更することはできない• チェック制約で参照されている列は変更できない• 変更される既存の列には2倍の領域割り当てが必要 etc..* ALTER TABLE (Transact-SQL)https://docs.microsoft.com/ja-jp/sql/t-sql/statements/alter-table-transact-sqlALTER TABLE item ADD price INT WITH (ONLINE = ON);
  • 21.© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.新テーブルにカラム追加して結合する参照参照参照③ 参照はビューを見せるTBL ① 追加カラムを持つ新テーブルを作成TBL_1 TBL_N・・・② 新旧テーブルを結合してビューを作成(変更)VIEW更新④ 更新はテーブルに行うHow?• カラム追加をテーブル作成とビュー作成(変更)に置き換えるPROS CONS• 停止時間を短縮できる(更新を長時間ブロックしない)• キー値のコピーが必要(テーブル作成時)• 結合ビューは複数テーブルを更新できない• 繰り返すと結合が多くなる
  • 22.© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.予備カラムを定義するtitle pages更新参照参照③ 参照、更新共にビュー経由で行うyobi1 yobi2② ビューを作成(変更)し、カラム名を変更VIEW① 予備カラムを定義してテーブルを作成TBLHow?• カラム追加をビュー変更で置き換えるPROS CONS• 停止時間を短縮できる(更新を長時間ブロックしない)• 必要数分の予備カラムを予め定義• データ型、キー、制約、インデックスの変更には対応できない(ALTER TABLEが必要)
  • 23.© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.JSON型を使う-- JSON型のカラムを定義してテーブル作成CREATE TABLE item (id INT, name VARCHAR(20), tags JSON);-- 異なる属性を持つJSON型のデータを挿入INSERT INTO item (id, name, tags) VALUES (1, 'Book', JSON_OBJECT(‘title', ‘The Four', 'pages', '245'));INSERT INTO item (id, name, tags) VALUES (2, 'PC', JSON_OBJECT(‘type’, ‘laptop', 'weight', '1.37'));-- 属性を指定してJSON型のデータを検索SELECT id, name FROM item WHERE JSON_EXTRACT(tags, "$.weight") = "1.37";How?• JSON型のカラムを定義して、単一のカラムで属性が異なる複数の値を格納するPROS CONS• RDBMSの特性を残したまま、NoSQLの柔軟性(スキーマレス)を使える• 検索が遅い(インデックスが使えない)• 検索や更新の実装が複雑になる• 値の妥当性検証(データ型)や参照整合性(外部キー制約)の担保が困難になる
  • 24.© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.前半のまとめ(DevOps with Database を実現するには?)1. スキーマ変更に時間がかかる→ 短時間でスキーマを変更するには?• オンラインでのスキーマ変更• 新テーブルにカラム追加して結合する• 予備カラムを定義する• JSON型を使う2. バージョン管理が難しい→ 安全にバージョン管理するには?3. スキーマ変更はアプリケーションの停止を伴う→ リリース方法を工夫して停止時間を短縮するには?
  • 25.© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.自己紹介大村 幸敬 (おおむら ゆきたか)アマゾン ウェブ サービス ジャパン株式会社インダストリソリューション部ソリューションアーキテクト好きなAWSサービス• AWS CLI (Command Line Interface)
  • 26.© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.Evolutionally Database Designアジャイル開発でデータベースの Continuous Integration とリファクタリングを行うための 11のプラクティスを紹介https://www.martinfowler.com/articles/evodb.htmlby Martin Fowler & Pramod Sadalage (2016)1. DBAとデベロッパがコラボレートする2. DB成果物をアプリとともにバージョン管理する3. 全てのDB変更はマイグレーションで管理する4. 全ての開発者に自分のDBを提供する5. 開発者はDBの変更を継続的に統合する6. DBはスキーマとデータで構成される7. 全てのDBの変更はリファクタリングである• DBの移行中フェーズの扱い8. リファクタリングを自動化する9. 開発者が自分のDBをOnDemandで更新できる10. DBへのアクセスコードを明確に分離する11. 頻繁にリリースする
  • 27.© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.DevOps with Database を実現するには?1. スキーマ変更に時間がかかる→ 短時間でスキーマを変更するには?2. バージョン管理が難しい→ 安全にバージョン管理するには?3. スキーマ変更はアプリケーションの停止を伴う→ リリース方法を工夫して停止時間を短縮するには?
  • 28.© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.スキーマ変更のバージョンを適切に管理するには
  • 29.© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.アプリ開発に伴うDBの変更スキーマ定義(DDL)マスタデータ変更後データ(DML)
  • 30.© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.DBの変更作業DBへの変更要求をコード変更に合わせて適用するには?コード DB変更要求開発者Production DBコード DB変更要求Integration DBDBAStaging DBDev DB開発者v1 v1v2 v2
  • 31.© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.全てのDB変更をマイグレーションで管理• ツールによるマイグレーションの管理と自動化• スキーマの変更をDDL/DMLのセットで定義• 適用時およびロールバック時の処理をコードで記述IntegrationDBStagingDBProductionDBDBAv1 v2v3v4v5v6v7Dev DBDev DBDev DBDev DBv7 v6 v5
  • 32.© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.マイグレーションの実装例Ruby on Rails の Active Records• マイグレーションファイル• DBスキーマをDSLで定義• ver up/down時の処理を記述• 任意のSQL記述も可能• マイグレーションファイル構成• db/migrate ディレクトリに配置• ファイル名形式はYYYYMMDDHHMMSS_add_products.rb
  • 33.© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.マイグレーションの実行例指定したバージョンのマイグレーションまでを実行ロールバックしてひとつ前のバージョンに戻る$ rails db:setup$ rails db:rollback$ rails db:migrate VERSION=20181101120000DBの初期化特定バージョンのマイグレーション処理のみを実行$ rails db:migrate:up VERSION=20181101120000異なる環境のマイグレーションを実行$ rails db:migrate RAILS_ENV=devv0v2v5ProductionDevv1v2v3v4v5v5v5
  • 34.© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.さまざまなDBマイグレーションツールフレームワークに付属• Ruby on Rails (Ruby)• Laravel (PHP)• Entity Framework (.NET)• Django (Python)• etc...専用ツール• Flyway• Liquibase• MyBatis• Phinx• sql-migrate• etc...
  • 35.© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.DevOps with Database を実現するには?1. スキーマ変更に時間がかかる→ 短時間でスキーマを変更するには?2. バージョン管理が難しい→ 安全にバージョン管理するには?3. スキーマ変更はアプリケーションの停止を伴う→ リリース方法を工夫して停止時間を短縮するには?
  • 36.© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.停止時間を最小化するリリース方法の例
  • 37.© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.DevOpsと無停止リリース• 外部調停なくリリースできることはDevOpsに必須• リリースに伴う停止時間がなければ外部調停不要• 無停止リリースの課題: 移行フェーズ• アプリ変更、DBスキーマ変更に伴う停止時間• 新旧アプリと新旧スキーマの組み合わせのハンドリングDatabase refactorings, being applied to legacy database and the phases it needs to take before being implemented from Evolutionally Database Design
  • 38.© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.リリースへの影響:ステートレスとステートフル• ステートレスなアプリケーションの変更• 複数のサーバやコンテナ• 順に停止&起動することで無停止入れ替え可能• ステートフルなデータストアの変更• 多くは単一のデータストアを共有• 単純に更新すると停止時間が発生• 構造化データストアはスキーマ変更が課題• 非構造化データストアはスキーマ変更不要v1 v1v1v2v2StatelessStateful
  • 39.© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.無停止リリースのパターン A: DBを共有DBとアプリの変更を個別に実施• DBとアプリケーションが疎結合であること• 新旧アプリでDBを共有• 一般的にはこの方法を推奨リリースのパターン1. DBスキーマ変更→アプリ変更2. アプリ変更→DBスキーマ変更ChangeschemaStart appdeploymentFinish appdeploymentStart appdeploymentFinish appdeploymentChangeschema
  • 40.© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.パターンA-1: DBスキーマ変更を先行旧アプリが新スキーマで稼働できる場合 (カラム追加など)• 例)新アプリで不要なカラムが残る可能性があるが無視• 例)旧アプリが追加したデータをTriggerで新スキーマへ投入v1 v1 v1v1v1 v1 v1v2v2 v2 v1v2v2 v2 v2v2• 旧アプリ• 新スキーマ• 新旧アプリ混在• 新スキーマスキーマ変更に伴う処理停止の最小化アプリデプロイに伴う処理停止の最小化(Draining)移行フェーズ
  • 41.© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.パターンA-2: アプリリリースを先行新アプリが旧スキーマで稼働できる場合(カラム削除など)• 例)リリース完了後は旧アプリを稼働できない• 例)削除されたカラムへの依存が新アプリに残っているとエラーが発生(要テスト)v1 v1 v1v1v2 v2 v1 v2 v2 v2v2• 新旧アプリ混在• 旧スキーマ• 新アプリ• 旧スキーマスキーマ変更に伴う処理停止の最小化アプリデプロイに伴う処理停止の最小化(Draining)v1 v1v2 v2 v2移行フェーズ
  • 42.© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.閑話休題:アプリバージョンの混在新機能はいつから有効か?• デプロイされ次第• フィーチャーフラグが変更され次第フィーチャーフラグはどこに配置するか?1. アプリサーバ上のファイル• CodeDeploy や SSM* RunCommandで設定2. 設定格納用のデータストア• SSM* ParameterStoreに格納3. データと同じDB• マイグレーションで管理機能A: ◯機能B: ×SSM Parameter Store*SSM = AWS Systems ManagerSSM RunCommandDBv2 v2 v1
  • 43.© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.無停止リリースのパターン B: 異なるDBの使用DB自体を切り替える• 変更が大きくスキーマ変更処理やデータコピーによる停止が許容できない場合• アプリとDBが密結合で個別リリースできない場合課題:新旧DBのデータを一致させること• 基本的に難しい問題リリースのパターン1. 主系DBのデータをレプリケーション2. 新旧両方のDBをDouble Writeで更新
  • 44.© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.パターンB-1: レプリケーションPros: トランザクション管理の複雑さを回避可能(DBが管理)Cons:切替え時にデータ同期完了まで待つ必要があるRDBMSにより異スキーマ間のレプリ可否が異なるW R R W R W R事前にGreen環境のスキーマを変更新旧スキーマ間でレプリ書き込み停止レプリ完了待ち読み込みは可能アクセス先切り替え書き込み再開切り戻しに備えた逆レプリ(または別DBへのレプリ)移行フェーズ
  • 45.© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.パターンB-2: Double WritePros: DBによらずアプリケーションの制御で無停止切り替え、切り戻しが可能Cons: データ整合性をアプリケーションで管理する必要がある書き込み速度の低下(2-phase-commitの実施など)W R RWR W R両系DBに書き込み開始アクセス先切り替え切り替えの完了移行フェーズW新スキーマで準備
  • 46.© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.まとめ - DevOps with Database を実現するには?1. スキーマ変更に時間がかかる→ 短時間でスキーマを変更するには?2. バージョン管理が難しい→ 安全にバージョン管理するには?• DBマイグレーションツールの使用3. スキーマ変更はアプリケーションの停止を伴う→ リリース方法を工夫して停止時間を短縮するには?• 銀の弾丸はない• A: DBを共有: スキーマ変更とアプリ変更の組み合わせ• B: 異なるDBを使用: レプリケーションやDoubleWrite
  • 47.© 2018, Amazon Web Services, Inc. or its Affiliates. All rights reserved.Thank you!

[8]ページ先頭

©2009-2025 Movatter.jp