開発作業環境の整備
「スケーラブルWebサイト」を読んでいて考えました。
とりあえず一人単独で開発を進めるにしても、Subversionなどのバージョン管理システムを利用した方が良いらしいです。
これから先、複数人での開発に入る時にも有用であることは明らかですし。ということで、サーバ環境の整備を考えました。
現在、クライアントマシン(作業マシン)としてはWindowsマシン1台を使用し、各種サーバ機能(Web鯖やDB鯖)をLinuxマシン1台で担っている環境です。
しかし、Subversionやテスト環境(上記の本の中でステージングと表現されていた環境)は本番環境と分けて構築すべきです。また、将来サービスの規模が大きくなった時には Webサーバ・Tomcatサーバ・DBサーバを、それぞれ別のハードウェアに分割する必要も出てくると思います。
現在の環境(1台のマシンに全てのサーバ機能を混在)のまま開発を進めてしまうと、後の分割が困難になってくることが予想できますね。
しかし、最初から数台のマシンを動かして開発を進めるのも現実的ではない。というかそんなにハードウェア持ってないですし。
というわけで、サーバ仮想化技術というものに手を出してみようかと思います。雑誌等で目にした事がある程度で、「1台のサーバを複数台のサーバに見せる技術」という程度しか知らないんですが。これならば、現実には1台のサーバマシンを複数に分割して、それぞれに各サーバソフトをインストールすれば良いんですよね?
- 共通サーバ群
- DNSサーバ (BIND)
- メールサーバ (Postfix)
- DBサーバ (PostgreSQL)
- 本番用サーバ群
- Webサーバ (Apache)
- アプリケーションサーバ (Tomcat)
- ステージング用サーバ群
- Webサーバ (Apache)
- アプリケーションサーバ (Tomcat)
- 開発作業環境用サーバ
- ソース管理サーバ (Subversion + Apache)
この位に分ければ良いかな?(分けすぎ?)
というわけで、たった1台に上記8台をぶち込んでみようと思います。
目的が見えたところで、これからサーバ仮想化技術について勉強開始〜。(まだ具体的な事は何も知りませんゆえ)
参考資料
- WEB+DB PRESS vol.33〜 巻頭COLUMN「Xenのココロ」
- Think IT オープンソースXenによるサーバ仮想化
- IT Pro Xenによる仮想化システム構築術
- IT Pro CentOSとXenでサーバーを統合する
- @IT 仮想化技術の大本命「Xen」を使ってみよう