これからは、コレ!旬なIT技術やこれから主流となりつつあるIT技術に関する情報をご紹介します。

2014年03月01日

いつもピカピカ
Immutable Infrastructure

「Immutable Infrastructure」とは

通常のシステム運用では、本番稼働するサーバーを構築した後、修正が必要になると、そのサーバーに対して直接変更を加えます。ところが近年、クラウドの利用が進むにつれて新しい運用の考え方が注目を集めています。一度サーバーを構築したらその後は変更を加えない「Immutable Infrastructure」という考え方です。なお、Immutable(イミュータブル)は「不変の」という意味の英単語です。

では、変更を加えないのであれば、修正が必要になった時にどうするのでしょうか?古いサーバーは捨ててしまい、新しくサーバーを構築しなおすのです(図1)。

k1403.jpg
図1.従来のシステム運用とImmutable Infrastructureによる運用

当然、物理サーバーでこのようなことをしては、手間がかかりすぎる上に停止時間が長くなり、現実的ではありません。クラウドの活用に加え、コンテナ型仮想化(※)と呼ばれる、より軽量な仮想化技術の発展により、Immutable Infrastructureという新しい考え方が実現できるようになりました。

ただし、データベースサーバーのように“状態を保持しているサーバー”では、Immutable Infrastructureの手法による運用は難しいので、Webサーバーやアプリケーションサーバーなどの“状態を持たないサーバー”に向いた考え方であることに注意が必要です。

※コンテナ型仮想化:
ホストOS上にゲストOS専用の空間を作って動作させる仮想化技術。ゲストOSはホストと同系統のOSに限られるものの、仮想化のオーバーヘッドが少ない点がメリット。

「Immutable Infrastructure」のメリット

1.システムを常にクリーンな状態に

システムを長年運用していると、“つぎはぎ”だらけになってしまいがちです。ドキュメント化されないその場しのぎの変更もあり、システムがどうなっているのか誰にもわからなくなってしまうことがあります。

Immutable Infrastructureでは、変更を加えず毎回新しく作り直すので、常にクリーンな状態を保てます。このため、予期せぬ問題の発生を抑えられます。

2. サーバー構築の自動化が容易に

Immutable Infrastructureでは、システムに加える修正が明文化されないと、次回サーバーを破棄した時に修正内容が失われてしまいます。また、修正が必要になる度にサーバーを構築するため、自動化は必須となり、サーバーに加える修正は必然的に自動化スクリプトの形で明文化されます。このため、システムがどうなっているかわからないという状態を防ぐことができます。

従来のシステム運用でも、サーバー構築を自動化するためのスクリプトを作成することがありますが、システムの状態によって場合分けをすると複雑さが増してしまいます。結果として、新規に作成したテスト環境では正常に動作するスクリプトが、本番環境では失敗することがあります。Immutable Infrastructureでは、毎回新しく作り直すので、サーバーが常にまっさらな状態になります。これにより自動化スクリプトの条件分岐が減り、動作の確実性が高まります。

「Immutable Infrastructure」のこれから

Immutable Infrastructureの考え方は生まれたばかりですので、実際のシステムで利用されるのはまだ先になるでしょう。今後、Immutableなサーバーをホスティングできるクラウドサービスも多く登場するものと思われます。

また、Immutable Infrastructureでの“変更をスクリプトの形で明文化する考え方”は、従来のシステムにも取り入れることができます。サーバーを使い捨てにするのが当たり前になる時代に向けて、今のうちから検討を始めてみてはいかがでしょうか。

2014年3月

ITの可能性が満載のメルマガを、お客様への想いと共にお届けします!

Kobelco Systems Letter を購読