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

基盤と環境の管理のための概観

1.はじめに

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

2.概要・目的

目標は、すべてのテスト環境を本番環境と同様の方法で扱うこと。
環境とは、アプリケーションの動作や設定に必要となるすべてのリソースのこと。
環境は、以下の特性を持つものである。

  • 環境を構成するサーバのハードウェア構成、およびサーバが接続するネットワーク基盤
  • OSやミドルウェアの設定が、アプリケーションの動作のために必要

包括的な手法ですべての基盤を管理するための原則は以下の3点である。

  • 基盤に要求される状態は、バージョン管理された設定で指定する
  • 基盤は要求された状態に自動的に持ち込む(自動化)
  • 基盤の状態を監視する

デプロイのリスクを軽減するために管理すべき項目は以下の通り。

  • OSおよびその設定
  • MW(ミドルウェア)スタックおよびその設定
  • 基盤管理用ソフトウェア
  • 外部の統合ポイント
  • ネットワーク基盤
  • アプリケーション開発チームと基盤管理チームの関係

また、基本原則として、テスト環境は本番環境にできるだけ近づけ、環境の問題を早期発見する。
これにより、あいまいで再現性の低い設定や統合時の問題を早期発見できる。

3.問題・要求

運用上の要求についての観点は以下の通り。

  • MTBF,MTTR,SLA
  • 文書化と監査
  • 異常発生警告
    • エラーは1か所にまとめてログを残す。深刻度も記録する
    • 監視方法もアプリケーションの機能として扱う
  • 業務継続性
  • デプロイメントシステムの技術の決定

4.対応概要

基盤のモデリング・管理についての観点は以下の通り。

  • 構成情報の準備や管理の自動化
  • 自動化しやすい技術の選択。以下は自動化のための観点
    • 基盤のプロビジョニング
    • 基盤を構成する様々なソフトウェアのデプロイメントや設定
    • プロビジョニングや設定を済ませた基盤の管理
  • 必要となるマルチユーザアプリケーションの設定
    • OS
    • ミドルウェア
    • DB
    • ユーザ
    • アプリケーションのデプロイメント
    • メッセージの登録
  • バージョン管理の対象。デプロイメントパイプラインへの入力
    • OSのインストール定義
    • データセンター自動化ツール
    • 基盤の設定
    • 基盤管理のためのスクリプト
  • 基盤の変更後のデプロイメントパイプライン
    • 依存の規則
    • 変更の共有と個別のパイプライン

5.対応詳細

(1)基盤へのアクセス制御

基盤へのアクセス制御の観点は以下の通り。

(2)サーバのプロビジョニングと設定の管理

サーバのプロビジョニングと設定の管理の観点は以下の通り。

  • プロビジョニングの手順
    • 自動化されたリモートインストール
      • UNIXにおけるPXE
        • 無人インストール
        • 基盤管理すステムのエージェントによる設定管理
      • Windows Deployment Service:WindowsにおけるPXE
        • ブートイメージ + インストールイメージ
        • Hyper-V
  • 進行中のサーバ管理
    • 構成変更の自動化
    • 宣言的かつ冪等な構成管理手順。以下の恩恵がある。
      • WindowsにおけるSystem Center Configuration Manager(SCCM)
      • UNIXにおけるLDAPでのアクセス制御
      • PuppetなどでのUNIXにおけるOSの構成管理
    • 宣言的かつ冪等な構成管理手順の恩恵
      • すべての環境での一貫性
      • 既存の環境と一致する新たな環境の作成が容易
      • ハードウェア障害発生時も、新しいマシンに対して、以前と同様に設定された環境を完全な自動化作業で作成できる
    • OSSの環境設定の情報をバージョン管理→基盤の構成についての情報自体の文書化→現在の状態が分かる
    • テストファーストで環境の変更を扱う
    • Puppetの使用例
      • apt updateの自動実行

(3)ミドルウェアの構成管理

ミドルウェアの構成管理の観点は以下の通り。

  • Webサーバ・メッセージングシステム・商用パッケージソフトウェアなどのミドルウェアは以下の3点で構成される
    • バイナリ
    • 設定
    • データ
  • 以下のいずれかの方法で設定を管理
    • PuppetやSCCMなどでOSと同様に管理
    • OSのパッケージ管理システムでパッケージを作成
  • 設定をスクリプトで管理できるミドルウェアを使い、デプロイメントや設定を自動化
  • 製品が持つ自動化された設定オプションの調査
  • 設定APIの使用
  • より良いソリューションを探す

(4)基盤サービスの管理

基盤サービスの管理の観点は以下の通り。

  • ネットワーク基盤の設定のバージョン管理
  • ネットワーク監視システムの使用
  • アプリケーションでのネットワークについてのログの記録
  • スモークテスト
  • ネットワークトポロジーを本番環境に合わせる
  • 問題の調査のためのフォレンジックツール
  • マルチホームシステムにおけるNICの分離と管理

(5)仮想化

仮想化の観点は以下の通り。

  • 仮想化の作用
    • 新しい環境の保守やプロビジョニングの容易さ
    • 非機能要件のテストの容易さ
    • テストの並列実行
  • 仮想環境管理の方法
    • データセンター自動化ツールの使用
  • 仮想化技術のデプロイメントパイプラインへの適用
    • ビルドシステム・リリース管理システムによる仮想マシンテンプレートセットの記録
    • ベースラインイメージの保持
  • 並列化したテスト
  • 仮想ネットワーク

(6)クラウドコンピューティング

クラウドコンピューティングの観点は以下の通り。

(7)基盤やアプリケーションの監視

基盤やアプリケーションの監視の観点は以下の通り。

  • 以下の項目への作用
    • ビジネス
    • 運用
    • プロジェクト
  • 以下の機能が必要となる
    • 収集
    • 保持
    • 可視化
    • 通知
  • 収集の対象とツール
  • ログの出力
    • 表示するレベルの設定
    • 運用チームのための機能
    • 網羅性と可読性
  • 可視化
  • テストファーストの監視

6.影響・作用・まとめ

コストの分析して戦略を適用することで、アプリケーションを使い続ける間ずっと手動で環境を管理するよりもコストを削減できる。
サードパーティ製品の評価には、自動化した構成管理への適応性を観点とする。

7.おわりに

以上が、継続的デリバリーの中での、コミットステージについての概観です。

8.参考文献

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