テスト環境を構築する
【連載コラム:Linuxでサーバーを構築してみよう(4)】
構築が終わったらもう壊してもいい?テスト環境って簡単に作れる?など、テスト環境構築でよく言われていることを鵜呑みにする前にちょっと考えてみましょう。
ソフトウェア選び〜ハードウェア選びと解説してきた次は、テスト環境の構築についてお話していきます。
目次
どうしてテスト環境か?
テスト環境はとても重要
テスト環境は、通常VirtualBoxやVMwareなどを使って仮想マシンを作成し、その仮想マシンにOSをインストールして目標となるサーバーを構築していくという形で構築されます。テスト環境は、ぶっつけ本番でサーバーを構築する形を回避することのほかに、サーバーを運用していく上で直面するさまざまな問題に対処する環境を用意する意味があります。
「テスト環境は構築が終わったらもう壊していい」と考えている方が多いかもしれませんが、むしろテスト環境はサーバー運用時にも必須のものなのです。わかりやすい例では、たとえばOSに大幅なアップデートが提供された際に、アップデート後にシステムが正しく動作するかどうかをテスト環境で試してみる、というものがあります。アップデートによってシステムの互換性が損なわれて正しく動作しなくなることはよくあります。
仮想化ソフトウェアの利点を活用
VirtualBoxなどの仮想化ソフトウェアには、ある時点のシステムの状態を保存しておき、必要に応じて復元することができる「スナップショット」機能や、仮想マシンをそのままそっくり複製し、同じものを複数作成する「複製」機能があります。これらを駆使して、新しい機能や追加したい機能を試すということもできます。セキュリティ上危険なことも、ネットワークを隔離するなどして試してみることもできます。
複数の仮想マシンを同時に実行させることができるので、複数のサーバ間での連携をテストすることもできます。ホストとなるコンピュータにはメモリやストレージの容量などが求められますが、最近のコンピュータであれば、さほど問題にはならないでしょう。
本稿では、VirtualBoxを利用してテスト環境を構築することを想定していますが、他のソフトウェアでも大枠で同じことができますので、そのまま読み進めてください。
テスト環境の構築
Virtualboxのセットアップ
Virtualboxは、Windows、Mac OS(Intel Mac)、Linux、SolarisなどのOS上にインストールすることができます。インストール自体は基本的には非常に簡単で、公式WebサイトからVirtualBoxをダウンロードし、インストーラーの指示に従うだけです。
仮想マシンの作成
VirtualBoxをインストールしたら、仮想マシンを作成します。基本的にはOSのISOイメージなどをダウンロードしておき、仮想マシンを作成し、ISOイメージを使って仮想マシンにOSをインストールするという流れになります。仮想マシンの作成は、作成するだけであれば比較的簡単に行うことができますが、本番環境(主にハードウェア関連)に合わせるためにさまざまな設定(カスタマイズ)を行うと多少の苦労を伴う可能性もあります。
VirtualBoxについては、別の連載コラムでも紹介していますので、そちらも是非参考にしてみてください。
【連載コラム第4回】手軽に利用できるホストOS型の仮想マシンソフトウェア「VirtualBox」のインストールの仕方を解説
実際にテスト環境を構築していく
仮想マシンにOSがインストールできたら、ここにテスト環境を構築していきます。Apache WebサーバやPostgreSQL、WordPressなどのソフトウェアをインストールし、設定を行い、うまく動作するかを確認するのです。このとき、テスト環境はインターネットのグローバルIPアドレスに直接接続する必要は、特段の事情がない限りありません。というよりも、テストですからむしろプライベートIPアドレスを利用し、ルーター経由でインターネットに接続するようにしておくことが一般的です。
初心者の場合、ここでいろいろとつまづくことがあるでしょう。思ったように動作しないことは珍しくありません。というよりも、1回で想定通りに完璧な動作をする可能性のほうが低いと思います。これは、設定ミスだけではなく、セキュリティ施策のための仕組み、たとえばnftablesの動作が自分の意図したものになっていないということも考えられます。
すぐに諦めない
テスト環境の構築の時点でうまくいかないことは「普通のこと」だと考えてください。ここで思い通りにならないからと挫折してしまうのは、「テスト環境くらいすぐに作れるさ」という思い込みがあるせいです。むしろテスト環境で色々失敗して、その教訓を本番環境で生かす、と考えましょう。逆に、ここでさんざん苦労しておくと、本番で失敗するリスクが減るのです。
テスト環境構築のテストをしておく
これは話が前後するのですが、テスト環境を構築する前に、VirtualBoxの動作に慣れておいたほうがよいでしょう。VirtualBoxにはさまざまな機能があります。前述のスナップショット、複製といった機能は、サーバー運用を行う技術者であれば使いこなせるようになっておけるようになっておきたい機能ですし、仮想マシンのカスタマイズもある程度できるようになっておくことが好ましいと言えます。
サーバ運用時のテスト環境の活用
テスト環境は、サーバー構築の事前確認だけでなく、実際にサーバーの運用が始まってからも活用されます。
テスト環境の役目
構築したサーバーが正常に動作するのか。本連載であれば、WordPressが動作して、他のクライアントからきちんとWordPressによるWebサイトが参照できるようになっているか、を確認することがまず1点です。当然といえば当然ですね。しかし、それだけがテスト環境の役割ではないのです。
システムに変更を加える必要が生じることは日常茶飯事です。このとき、システム変更作業中にWebサイトを一旦停止する必要があるのか、停止するとしてどれくらいの時間がかかるのか、これをぶっつけ本番で行うわけにはいきません。このようなとき、テスト環境が役に立つのです。「変更しても思い通りに動作するか?」の検証は言わずもがなですね。ですから、繰り返しになりますが、「テスト環境は、構築が終わったらお役御免」にはならないのです。
少し進んだテスト環境の活用
テスト環境の活用方法はこれだけではありません。たとえば、ハードウェアの故障やRDBMS(PostgreSQLなど)のダウンを想定して、擬似的に障害を発生させ、障害発生時にシステムを復旧させる、いわば訓練のようなこともできます。初心者にはなかなか難しいと思いますが、本番環境で障害が起こったときに慌てるよりははるかに良いので、チャレンジしてみる価値は十分にあります。
また、サーバーに故意に過負荷をかけ、その際にもシステムが問題なく動作するかどうかを検証するテストもあります。過負荷条件下で発生する競合条件や排他制御、メモリリークなど、普段は見えないバグをあぶり出すというテストもあります。これは、大きな負荷がかかる可能性がある場合に行っておきたいテストではありますが、いつ想定外の過負荷がかからないとも限らないですから、優先順位は低いといえどもぜひ行っておきたいテストです。
次回は、セキュリティポリシーについて見ていきます。
- 筆者紹介
川原 龍人 氏
1975年生まれ。
著書に「BIND9によるDNSサーバ構築」、「シェルスクリプト ポケットリファレンス Bash編(技術評論社)」など。
予備校講師としても活躍中。Linuxとのつきあいは20年を超える。
バックナンバー
第14回:バックアップ
第13回:異常発生時の対応
第12回:サーバー構築という仕事
第11回:ユーザー教育の重要性
第10回:テスト環境を構築する
第9回:ログローテーションとは
第8回:ログの取得と管理
第7回:アクセス制限
第6回:OpenSSHの活用
第5回:ユーザーアカウントとアクセス制限
第4回:テスト環境を構築する
第1回:Linuxでサーバーを構築しよう