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

アプリケーションのデプロイ・リリースの概観

1.はじめに

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

2.概要・目的

デプロイメントとリリースの差異は、設定ファイルなどにカプセル化する必要がある。
デプロイメントとリリースの主な違いは、ロールバックの方法である。
すべての環境に対するあらゆる変更の適用のために唯一使える仕組みを提供する。

3.対応概要

(1)リリース戦略の作成

リリース戦略の作成の観点は以下の通り。

  • プロジェクト開始時での決定事項
  • リリース計画時での決定事項
  • 商品化のための決定事項

(2)デプロイ

デプロイのための観点は以下の通り。

  • 最初のデプロイ
    • 下準備用のイテレーション
    • 疑似本番環境のための仮想化・チキンカウント
      • 疑似本番環境の特徴
  • リリースプロセス(自動ステージ後のビルドの扱い)のモデル化
  • ビルドの反映
  • テストステージのワークフロー
  • 設定の反映の検証のためのスモークテスト・監視ツール
  • オーケストレーション
  • ステージング環境へのデプロイメント

4.対応詳細

ロールバックの制約は以下の2つ。

  • データ
  • 複数システムの統合

ロールバックの原則は以下の2つ。

  • 本番システムをバックアップしてからリリース作業に入る
  • 作成した計画に基づいてロールバックを試行する

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

  • 直近の正常動作するバージョンの再デプロイによるロールバックの是非
  • ゼロダウンタイムリリースにおけるリリースプロセスの疎結合
  • ブルーグリーンデプロイメント
    • DBとコストへの対応が必要
  • カナリアリリースの機能と作用
  • 緊急修正時の規範
  • 継続的デプロイメントを可能にするデプロイメントパイプライン
  • ユーザがインストールするソフトウェアの継続的リリース
    • 自動更新がよい
    • バックアップ
    • 移行スクリプト
    • クラッシュレポート

デプロイメントのためのヒントや裏技は以下の通り。

  • 自動化できていない部分のデプロイメント作業の記録
  • 古いファイルは削除せず移動する
  • システムのウォームアップ
  • スモークテスト
  • 本番環境へのアクセス制限

5.影響・作用

リリースはプロジェクト全体で初期から継続的な改善が必要。
共同作業で、より効率的なデリバリープロセスを構築する。

6.おわりに

以上が、継続的デリバリーの中での、アプリケーションのデプロイ・リリースについての概観です。

7.参考文献

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