「テスト環境を用意する費用がなかった」「緊急性が高いので開発者に本番環境のプログラムを直接変更させた方が早いと思った」「本番環境のデータと同等のデータを用意するのが難しかった」「ベンダーがテスト済みというので信頼した」――。

 これらはすべて,本番環境でいきなりテストすることを“必要悪”として認めた担当者の言葉だ。だが,どのケースも結果的に障害に至った。

 開発したばかりのプログラムは,誤作動する危険がある。ほかのプログラムに悪影響を及ぼしたり,データやファイルを破壊したりすることもある。OSやミドルウエアのベンダーが提供するセキュリティ・パッチのように,ベンダーがテストしてリリースしている場合でも,個別の環境では動作しなかったり,思わぬ悪影響が出たりする。事故を防ぐためにも,稼働中の本番環境でいきなり未検証のプログラムをテストしてはいけない。

 システムを停止していればいいわけでもない。計画停止の場合,改修とテストに手間取り,予定通りにシステムを再開できないリスクがある。計画外停止(障害)の場合は「緊急性が高い」などの理由で日常的な運用ルールを崩しがちだが,そうするとかえって手順の漏れや誤りなどの人的ミスが発生しやすくなる。必ずテスト環境を用意してテストを実行し,検証済みのプログラムだけを本番環境に移行したい。

 では,いかにして安価に,本番環境に近いテスト環境を用意するのか。最近では,サーバー仮想化技術を利用する手法が普及しつつある()。サーバー仮想化とは,1台の物理サーバーを複数台の仮想サーバーとして扱えるようにするといった技術である。一つの仮想サーバー環境は,一つのイメージ・ファイルとして扱える。

図●サーバー仮想化ソフトで,本番と同等環境でのテストが可能に
図●サーバー仮想化ソフトで,本番と同等環境でのテストが可能に
「VMware Server」や「Microsoft Virtual Server」などのサーバー仮想化ソフトを使うと,本番環境と同等の仮想サーバーを手軽に再現できる
[画像のクリックで拡大表示]

 SIベンダーであるブリッジ・メタウェアの熊野大介氏は,サーバー仮想化ソフト「VMware」を使ってテスト環境と本番環境を構築している。「本番環境のイメージ・ファイルをテスト用サーバーにコピーするだけで,テスト環境を構築できる。読み込むイメージ・ファイルを変えるだけで,1台のテスト用サーバーを複数のテスト環境として使えるので効率がよい。テストが済んだらイメージ・ファイルを本番環境にコピーするだけで移行作業は終わるため,移行ミスも減る」(熊野氏)――と,メリットを実感している。

 開発中はクリーンなテスト環境を何度も用意したくなるが,サーバー仮想化技術を使えば簡単にできる。イメージ・ファイルをコピーしてクローンを作るか,イメージ・ファイルのあるファイル・システムに対してスナップショットを取得しておけばよい。サーバー仮想化ソフトによっては,動作画面を動画に記録できるので,バグの再現手順を録画しておく,といった使い方も可能だ。