『継続的デリバリー』 第12章 学習メモ

データ管理の概観

1.はじめに

継続的デリバリーにおける、データ管理についての調査記録です。
継続的デリバリーの中での、データ管理についての概観を記載します。
『継続的デリバリー 信頼できるソフトウェアリリースのためのビルド・テスト・デプロイメントの自動化』の第12章に対応します。

2.概要・目的

データを管理するとき、テストやデプロイメントのプロセスでいくつか問題が生じる。その理由は以下の2点である。

  • データの量
  • アプリケーションのデータとシステムの他の部分とではライフサイクルが異なる

データの構造や内容を変更する必要がある場合の問題に対応する。
混乱を最小化し、アプリケーションやデプロイメント処理の信頼性を最大化する仕組みのために、DBの移行プロセスを自動化する。
自動化した内容はスクリプトにして自動デプロイメントプロセスに組み込む

3.対応概要

(1)DBのスクリプト処理

DBのスクリプト処理の観点は以下の通り。

  • 初期化スクリプト、初期化の手順
  • DBのバージョン管理
    • アプリケーションとDBのバージョンをひもづける
    • ロールフォワード・ロールバックスクリプト
      • 制約の追加や削除の困難さ
    • 共有DBの変更への対応
      • アプリケーションがDBの複数のバージョンを許容

(2)データの管理とデプロイメントパイプライン

各テストステージにおけるデータの観点は以下の通り。

  • コミットテストステージ
    • テストヘルパーやフィクスチャによるデータ作成の再利用
  • 受入テストステージ
    • データの分類
    • テストケース作成の再利用
    • データへの依存の最小化
    • アプリケーションのAPIの使用の作用
  • キャパシティテストステージなど
    • 受入テストのインタラクションを記録し、キャパシティテストなど以後のテストに使用する
  • 手動テスト
    • 空の状態で立ち上げるか、カスタマイズしたデータ群の使用がよい

4.対応詳細

(1)DBのロールバックとゼロダウンタイムリリース

DBのロールバックとゼロダウンタイムリリースの観点は以下の通り。

  • ロールバック時のデータ保持の方法
    • キャッシュの取得
    • ブルーグリーンデプロイメント
  • アプリケーションのデプロイをDBのマイグレーションから分離
    • アプリケーションがDBのバージョンに互換性を持つ

(2)テストデータ管理

テストデータの管理の観点は以下の通り。

  • テストデータ管理の要件・機能
    • パフォーマンス
    • テストの分離
  • ユニットテストにおけるDB
  • テストとデータの関連の整理
    • テストの分離:テストデータを他のテストから隠す
    • 準備と後始末
    • 疎結合なテスト/×一貫したテストシナリオ

5.影響・作用

以上の対応により、完全に自動化したプロセスでDBの作成やマイグレーションを行えるようにする。

6.おわりに

以上が、継続的デリバリーの中での、データの管理についての概観です。

7.参考文献

『継続的デリバリー 信頼できるソフトウェアリリースのためのビルド・テスト・デプロイメントの自動化』 第12章 データを管理する