変わり続けるITサービスに対応するために
近年のITサービスでは、日々刻一刻と変化するビジネス環境や市場環境に迅速に対応し、継続的に価値を届け続けることが重要になっています。価値を届け続けるには、ITサービスを頻繁にリリースし、常にITサービスを変化に対応させる必要があります。ソフトウェアを更新することはもちろんのこと、ITサービスを支えるITインフラストラクチャー(ハードウェアやオペレーションシステム・ミドルウェアなど)にも常に手を加えて変更させなければなりません。そこで登場するのが、継続的デリバリー参考1やDevOps参考2といった技術、及びInfrastructure as Codeという考え方です。Infrastructure as Codeは、インフラストラクチャーの構築・運用をコード化、つまりプログラミングにより、変わり続けるITサービスを実現しようとするものです。
Infrastructure as Codeのメリット
常にリリースを行うようなITサービスの運用では、以下のような課題・問題に直面します。
- 構築手順書がメンテナンスされておらず、構築手順書通りに構築したのに動作しない
- 設計書と実際のインフラの設定値が違う
- 扱うマシンが多すぎて構築に時間がかかる
- 構築したインフラのテストが大変
特に昨今、コンピュータの低価格化やクラウドの普及により、多くのコンピュータを扱うことが多いため、ヒューマンエラーによるミスが発生する可能性は高まってきています。
これらの課題・問題は、人の手と頭ではなくコードでインフラを構築するInfrastructure as Codeを適用することで解決されると考えています。以下では、Infrastructure as Codeの適用ステップを解説します。
Step1:マシン構築のコード化
仮想化技術を使うことでマシン構築をコード化します。VMwareを中心に、既に多くの仮想化基盤はRESTful API注で仮想マシンを構築することができます。また、Vagrant参考3のようにコマンドラインで仮想マシンを構築する技術も登場しています。仮想化技術を使わない場合は、KickstartやWindows自動インストールキットを使い自動的にインストールするという選択もあります。
- 注HTTPでパラメータを指定して特定のURLにアクセスする方法
Step2:OSやミドルウェアの設定・構成管理のコード化
OSやミドルウェアの設定をコード化するには、Puppet参考4やChef参考5といった構成管理自動化ツールが利用できます。Ruby言語を用いたDSL(Domain Specific Language)により、あるべき姿をmanifestやRecipeに記載することで構成管理するツールです。また、Capistrano参考6やFabric参考7といったデプロイツールも利用することができます。
Step3:インフラテストのコード化
最近では、インフラテストをコード化して、正しい状態に設定されているかを確認するツールも登場しています。例えばServerspec参考8は、RSpec(Rubyの単体テストフレームワーク)ライクな記述ができるインフラのテストツールです。
図:Infrastructure as Codeの流れと適用例
まとめ
インフラのテストまでInfrastructure as Codeを取り入れることで、インフラ面まで含めたトータルで高度な継続的デリバリーを実現し、ITサービス利用者に常に価値を提供し続けることができるでしょう。