PASS Summit 2017の初日、RedgateエバンジェリストのSteve Jones氏が、DevOpsアプローチをデータベース管理に適用するためのヒントを公開した。氏の アプローチには、あらゆる規模のインストールに役立つヒントが含まれている。プレゼンテーションは2016年、Amazonがプロダクションレベルの変更を12秒間隔で導入した、という話題の紹介から始まった。これを取り上げた理由のひとつは、変更管理の効果的なアプローチによって、どの程度の変更を効果的に提供可能かを具体的に示すことだ。
データベースが持つデータ量とその役割の大きさを考えれば、運用中のデータベースの変更を成功させることは極めて重要だ。データベースに格納されているデータ量の例としてJones氏は、MicrosoftがAzureユーザから毎日収集するテレメトリデータの量が700テラバイトに達することを紹介した。(そう、テラバイトだ。)
Jones氏はここで、Gene Kim氏の挙げたDevOpsの3つの原則に注目する。
- システム思考
- フィードバックループの強化
- 実験と学習の文化
これらを基にJones氏は、DevOpsをデータベースに持ち込むためのテクニックについて論じた。 最初の基盤となるのは、バージョン管理システム(Git、SVNなど)を導入して活用することだ。次には、データベースコードをアプリケーションコードとまったく同じように扱うことが重要となる。第3は、そのVCS内に組織化されたシステムのセットアップし、メンテナンスすることだ – アプリケーションコードの格納に使用しているものと同じリポジトリでも可能だが、独自のリポジトリを使用してもよい。最後に、変更のコードレビューを使用して、それを重視することだ。
デプロイ前に開発環境以外でテストをする場合に、Jones氏が推奨するのは、運用データの一部ではなく、特別に用意したデータセットを使用することだ。最初は空のデータベース(DEV / UAT / STG / その他)から始めて、運用環境のユースケースを模した10~40行を追加しよう。
運用環境へのコードのデプロイは、すべてが一貫した方法で実施されなければならない。 手作業によるステップが必要ならば、詳細に文書化しておく必要がある。一貫性は重要だ。ユニットテストやプライマリキーの定義された適切なテーブルなど、重要な考慮事項が見落とされることなく、デプロイメント毎に同じ方法で実施されなければならない。
変更が失敗した場合のロールバックは難しい、とJones氏は考えている。データベースが関わる変更では特にそうだ。Jones氏は、ロールバックコードを記述して、デプロイメントに先立って(DEV/STG/その他で)テストしておくことを推奨する。これにより、必要な場合に実行可能なスクリプトが用意される。もうひとつの考慮すべきテクニックは、運用環境に変更をデプロイするが、その利用を機能フラグによってトリガするという、ダークデプロイ(dark deploy)の採用だ。一般公開する準備が整ったと見なされるまで、その機能をアクティブにはしない。Jones氏によると、Facebookは、Facebook Messengerのロールアウトに際してこのアプローチを採用し、同社のシステムが予想されるユーザロードを処理可能であることを確認したという。
この記事を評価
- 編集者評
- 編集長アクション