さて、より大きな範囲で自動化と標準化を適用していくことで効果を最大化できるという説明をしましたが、適用できる部分はこれだけではありません。それはシステム環境のライフサイクルを最適化していくことです。従来は多くのシステムにおいて開発環境、本番環境など案件のフェーズによってシステム構成が分かれているのが一般的でした。これは、本番と同じだけのリソースを持った開発環境を用意するためにはサーバなどの機器のみならず、それを設定し、維持していくための人件費が多大になってしまうためです。
しかし、リソース単価が下がり、かつテンプレートによってシステム構築が簡単に行えるようになった現在では、全てのフェーズにおいて同じ環境を使うことが現実的なコストで可能となります。以下はHeatを使って、3layer_standard_template.yaml というテンプレートの環境を5つ作っている例です。「いきなり具体的なコマンドが出てきてなんだ!?」と思われるかもしれませんが、細かなコマンドの意味やオプションをここで理解する必要ありません。development や test というのは作成した環境に付けられる名前で、その中身は全て同じ環境が構築されます。
そして重要なのが、この5行だけで、開発、テスト、本番、本番後のバージョンアップ検証、そしてバージョンアップ後の環境が作成できるということです(もちろん、Heatのテンプレートをしっかりと作り込んであることが前提となります)。
$ heat stack-create -f 3layper_standard_template.yaml development $ heat stack-create -f 3layper_standard_template.yaml test $ heat stack-create -f 3layper_standard_template.yaml production-v1 $ heat stack-create -f 3layper_standard_template.yaml pre-version-up $ heat stack-create -f 3layper_standard_template.yaml production-v2
このような運用が可能になると、インフラ側からシステム開発の品質に大きく貢献することが可能です。例えば、本番と開発環境が同一構成なので、環境差異によるパフォーマンスなどの問題や、環境ごとに別の手順を適用することによる設定ミスが発生しなくなります。いわゆる「テスト環境では動いていたんですが……」というミスの要素を排除できます。
またテスト環境をつど新規に生成することで、開発環境で試行錯誤されたゴミデータなどのない綺麗で均一な環境でのテストが可能となり、これも想定外のミスを排除することに貢献できます。
このようにシステムだけを対象として適用するだけではなく、個々のシステムのライフサイクルにも自動化を適用していくことで、全体の仕事量を減らせるとともに、システム開発の品質向上にもつながっていきます。このような「インフラとアプリ開発を融合した最適化の取り組み」は事例としてもよく取り上げられ、最近の例では「OpenStack Summit 2015 Tokyo」 のセッション中で、BMWが発表を行っていました。
参考リンク:BMWの事例に学ぶ、OpenStack導入とは事業に貢献する「シャドーIT」を拾うこと(@IT)
さて、最後にOpenStackを使って効率的なインフラ環境を作っていく上でどこから始めるべきなのか、という点についてお話ししていきます。前回の記事からの繰り返しの引用になりますが、
自社のシステムパターンを把握した上で、何をデータ化して何をしないのか、という見極めが重要なポイントになります。
ということです。つまり実際の機能を理解した上で、「自社のシステムから何をテンプレート化したら有効なのか」を見極める必要があります。闇雲に自動化を行っても、効率化どころか自動化を行うためのテンプレートの作り込みや、作成したテンプレートの管理に時間が費やされてしまい、単にコスト増を招くだけになってしまいます。
自分の力だけで挑戦する場合には、月並みですが、まずOpenStackやクラウド、そして各種自動化ツールを使った小さな成功体験を得ることが重要です。その方法として、まずはパブリッククラウドや小さなOpenStack環境を構築して、その上で小さな自動化を実現してみてください。パブリッククラウドであればAWSの「CloudFormation」というオーケストレーション機能があります。
参考リンク:CloudFormationで環境構築を自動化する(@IT)
これはOpenStackのHeatとほぼ同等の機能を持ち、かつテンプレート構造も完全ではありませんが互換性があります。小さく始められる領域で「何ができるのか」を理解し、従来との「差」をきちんと理解することが最も近道となります。
なぜならば、OpenStackを構成している個々の要素技術を見ると、従来機能の延長線上に位置していますが、OpenStackが提供する機能を活用するには新しいパラダイムが必要となるからです。これは、過去の歴史から学ぶことが可能です。それは、メインフレームからオープン系にシステムが移り変わった時にも同じことが発生しているからです。オープン系のシステムには、メインフレームでも使われていた「ハードディスク」や「タイムシェアリング」というオープン系にも存在する技術が多数あります。
しかしだからといって、メインフレームの「常識」を当てはめて、オープン系のシステムを構築しようとしてもうまくいかないことは、読者の皆さまも容易に想像できるかと思います。つまり、従来の「オープン系の常識」しか知らない状態で、OpenStackやクラウドの活用を試みても絶対にうまくいかないのです。
またOpenStackを使ってみようと考えたときに、最初に「OpenStackをどうやって作ろう?」と悩む必要はありません。OpenStackはどのように使うかが最重要のポイントなのですが、「オープン系の常識」によく精通したエンジニアほど、OpenStackを構成するさまざまな従来技術の要素に目が行ってしまい、「どのドライバを採用しようか?」「どのプラグインが優れているのか?」と悩んでしまいがちです。確かに、OpenStackはさまざまなドライバを組み合わせて柔軟な環境が作れますが、この段階でドライバの優劣や組み合わせを比較検討するのは有効ではありません。なぜなら「何をやるのか」「どんなシステムを動かすか」が分かっていない状態で、「OpenStackをどう作るか」を悩んだとしても答えは出て来ないからです。
最初の一歩としては、OpenStackの標準構成(リファレンスドライバを採用した構成)で環境を作ってください。OpenStackはどのドライバを採用しても利用方法は変わりません。繰り返しですが、重要なのは「どう使うのか?」を理解して、「どこに使えるか?」を見極めることです。
個人的にお勧めなOpenStack環境の導入方法を2つ紹介しておきます。この2つは便利なインストーラーを備えており、マニュアルに従って環境を準備すれば、数回のコマンド実行で環境が構築できます。OpenStackは仮想環境上でも動きますが、できればメモリが32GB程度、ディスクが1TBくらいのサーバが1台あると快適に動かせます。
ある程度理解が進んだのならば、次のステップで小さなシステムへ自動化を適用したり、1つのシステムのライフサイクルの最適化に挑戦するのがいいでしょう。そして成功イメージがつかめた段階で、大規模に活用するテンプレート構成やテンプレート適用範囲を定め、その環境で有効なOpenStackのドライバ構成を検討していきます。最初のフェーズを飛ばしたい方は、経験のあるベンダーに協力してもらうのも良い手です。
どのような道のりをたどるにせよ、重要となるのは「OpenStackを使って何を解決するのか?」というポイントをしっかりと理解することです。ここさえ揺らがなければ、クラウド活用を成功させることができるでしょう。しかし、ここで間違ったアプローチをしてしまうと、全体のコスト削減にも貢献できない、開発側からの要望にも応えられない、そして仕事をクラウドに奪われていき、それを防ぐのに奔走するという無駄な労力ばかり費やして、組織の中で空回りばかりすることになってしまうでしょう。
ITインフラエンジニアの仕事がなくなるわけではなく、やり方が変わっていくだけなのです。
次回以降は、「OpenStack上で実際に開発環境を構築して開発サイクルを回す実例」や、「Heatを使ったテンプレートの記述方法」といった内容について紹介していければと思います。
中島 倫明(なかじま ともあき)
日本OpenStackユーザ会会長(2012〜)
一般社団法人クラウド利用促進機構 技術アドバイザーを務めつつ、国内でのOpenStack/クラウドの普及・啓蒙・人材育成を行う。普段は伊藤忠テクノソリューションズに勤務し、オープンソースソフトウェア(OSS)を中心としたクラウド技術の企画・開発を主な業務としている。2014年5月『オープンソース・クラウド基盤 OpenStack入門』(共著/監修:中井悦司、KADOKAWA/アスキー・メディアワークス刊)を執筆。
スピーディなビジネス展開が収益向上の鍵となっている今、ITシステム整備にも一層のスピードと柔軟性が求められている。こうした中、オープンソースで自社内にクラウド環境を構築できるOpenStackが注目を集めている。「迅速・柔軟なリソース調達・廃棄」「アプリケーションのポータビリティ」「ベンダー・既存資産にとらわれないオープン性」といった「ビジネスにリニアに連動するシステム整備」を実現し得る技術であるためだ。 ただユーザー企業が増えつつある一方で、さまざまな疑問も噴出している。本特集では日本OpenStackユーザ会の協力も得て、コンセプトから機能セット、使い方、最新情報まで、その全貌を明らかにし、今必要なITインフラの在り方を占う。
Copyright © ITmedia, Inc. All Rights Reserved.