IT・技術研修ならCTC教育サービス

サイト内検索 企業情報 サイトマップ

研修コース検索

コラム

クラウド時代のオープンソース実践活用

CTC 教育サービス

 [IT研修]注目キーワード   Python  UiPath(RPA)  最新技術動向  Microsoft Azure  Docker  Kubernetes 

第15回 オープンソースとOpenShiftで「変化に強いシステム」を目指す (中井悦司) 2013年3月

はじめに

 先日、米IBMから「IBM To Make Its Cloud Services and Software Open Sourced-based(IBMはクラウドサービスとソフトウェアをオープンソースベースにしていく)」と題したプレスリリースが発表されました。ここでは、IBMがオープンソースを選択するさまざまな理由がのべられていますが、特に興味深い1枚のチャートが公開されています。
 このチャートでは、Linuxの進化とOpenStackの進化を比較しており、端的にいうと「2012年のOpenStackは2000年のLinuxと同じ進化のステージ」にあり、「2013年のOpenStackは現在のLinuxと同じ進化のステージ」に到達すると主張しています。
 2000年ごろのLinuxと言えば、データベースサーバやアプリケーションサーバなど、一般企業の基幹系システムでの利用に向けて大きな変化を始めた頃です。そして、今では、金融機関の勘定系システムを担う存在にまで成長したわけですが、当時、このようなLinuxの将来性を予見できた企業はそれほど多くはなかったかも知れません。IBMは、OpenStackに対して、これと同じ将来性、そしてLinuxよりも驚くほど早い進化の速度を予見しているということでしょうか。

 ちなみに、私もいろいろな所でオープンソースの説明をするのですが、時には、「私達は、機能、性能、信頼性、価格を比較して、その時々で最適な製品を選択するから、オープンソースかどうかは関係ない。」というコメントをいただく事もあります。一見、もっともなご意見ですが、1つ大切な視点が抜けている気がします。「将来性」という視点です。
 一般的な企業システムでは、一度選択した技術を後から変更するのはそれほど容易ではありません。「その時々」で選択しようにも、そうはいかずに、いわゆるサイロ型の塩漬けシステムが乱立する結果になります。それぞれの技術の将来性を見通しながら、システム全体に同じ技術を統一的に適用していく ーーー その為には、技術の進化を取り込みながら、システムそのものを進化させていく戦略が必要になります。
 オープンソースというだけで、必ずしも将来性があるというわけではありませんが、少なくとも「変化に強いシステム」を実現するための強みがそこにはあるはずです。冒頭のプレスリリースから次の一文を引用しておきたいと思います。

"The winner here will be customers, who will not find themselves locked into any one vendor -- but be free to choose the best platform based on the best set of capabilities that meet that needs."

 さて、今回は、OpenShiftの紹介の続きです。前回、OpenShiftが実現するPaaS環境では、さまざまな開発言語や開発フレームワークが利用できることを説明しました。これは、今後、同じOpenShiftの仕組みの中で、新たな開発言語/フレームワークへの対応も実現できることを意味します。「変化に強いシステム」ーーー このような観点で、PaaSの利用価値を捉えてみるのも面白いかも知れません。

OpenShiftのアーキテクチャ

 前回紹介したように、OpenShiftでは、ロードバランサ/Webアプリケーションサーバ/DBサーバなどのサーバ機能を「ギア」という単位で提供します。それぞれのギアで実行するアプリケーションは、「カートリッジ」というモジュール形式で提供されます。ただし、ユーザ自身は、ギアやカートリッジの存在をそれほど意識する必要はありません。ユーザが利用したいアプリケーション環境を指定すると、それに必要なギアとカートリッジが自動で構成されるようになっています。
 たとえば、OpenShiftの機能をフル活用すると、図1のような環境が構成されます。これは、JBossによるJava EEの開発・実行環境で、バックエンドDBにはPostgreSQLを用いています。HA Proxyによるロードバランサを用いて、オートスケールが可能になっています。さらに、ビルドサーバとして、Jenkinsが用意されています。

fig01

図1 OpenShiftによるJBoss開発・実行環境の例

 OpenShiftであれば、このような複雑な環境をたった数個のコマンドで立ち上げることができます。具体的には、次の4つのコマンドになります。

# rhc app create jenkins jenkins-1.4
# rhc app create sample jbosseap-6.0 -s
# rhc cartridge add postgresql-8.4 -a sample
# rhc cartridge add jenkins-client-1.4 -a sample

 1つ目のコマンドは、Jenkinsが稼働するギアを立ち上げます。2つ目のコマンドは、JBoss EAPが稼働するギアを立ちあげます。「-s」オプションでオートスケール対応を指定しているので、これと同時に、ロードバランサであるHA Proxyのギアも同時に立ち上がります。
 最後の2つは、付加機能として、PostgreSQLとJenkins Clientのカートリッジを追加しています。オートスケールに対応するために、PostgreSQLには、専用のギアが用意されます。一方、Jenkins Clientは、JBoss EAPが稼働するギアに追加されて、JenkinsがビルドしたコードをJBoss EAPにデプロイするように自動設定されます。このようにカートリッジが提供する機能に応じて、適切なギアが構成されるようになっているわけです。
 (*1)では、Tomcatの環境を例として、より具体的に、Jenkinsと連携したCI(継続的インテグレーション)環境をセットアップする方法を説明しています。JenkinsなどのCIサーバに馴染みのない方も、これを機会に、CIの世界に触れてみてはいかがでしょうか。

SELinuxとcgroupsによるリソース分離

 ようやくOpenShiftの仕組みが見えてきましたが、図1のギアの「正体」が気になる読者もいるのではないでしょうか? OpenShiftでは、Red Hat Enterprise Linux(RHEL)が稼働する実行ノードの上で、複数のギアを立ち上げる、マルチテナント方式を採用しています。仮想化技術に詳しい読者であれば、LXC(Linuxコンテナ)を想像するかも知れませんが、OpenShiftのギアはLXCではありません。実は、ギアごとに専用のディレクトリを用意して、その中に各ギアが必要とする実行ファイルを配置しているだけです。
 このように書くと、セキュリティの問題を心配するかも知れませんが、もちろんその点は考慮されています。OpenShiftでは、実行ノードのRHELが提供するSELinuxのMCS(Multi Category Security)機能を用いて、ギアごとに異なる「セキュリティラベル」を付与します。これにより、異なるギアのプロセスやファイルをカーネルレベルで隔離しています。MCSは、Linux KVMによるサーバ仮想化環境において、仮想マシン間の隔離を実現する「sVirt」でも利用されている機能です。
 また、それぞれのギアが利用できるCPU、メモリなどのリソースは、同じくRHELが提供する、cgroups(Control Groups)の機能で制限をかけています。このように、RHELが提供するさまざまな機能を活用することで、オーバヘッドを抑えた効率的なマルチテナント環境を実現しているのです。クラウド環境に合わせて、OSの機能も進化していることがよく分かります。

次回予告

 今回は、ギアやカートリッジと言った、OpenShiftを構成するコンポーネントを紹介しました。次回は、インターネット上で無償利用できる「OpenShift Online」を用いて、実際にアプリケーション環境を構築してみたいと思います。単なる開発・テスト環境ではなく、実用的なアプリケーションの実行環境としても利用できることが分かります。
 前回説明したように、OpenShiftは、オンプレミスのデータセンタとインターネット上のクラウド環境、どちらでも利用することができます。OpenShiftによるPaaS環境は、オンプレミスとクラウドにまたがる「アプリケーション実行環境の標準化」を実現する可能性を秘めています。

参考資料

*1)「OpenShiftの内部構造についての覚書(3)
 OpenShift Onlineの環境で、TomcatとJenkinsによるCI環境を構築する手順を説明しています。

 

++ CTC教育サービスから一言 ++
このコラムでLinuxや周辺技術の技術概要や面白さが理解できたのではないかと思います。興味と面白さを仕事に変えるには、チューニングやトラブルシューティングの方法を実機を使用して多角的に学ぶことが有効であると考えます。CTC教育サービスでは、Linuxに関する実践力を鍛えられるコースを多数提供しています。興味がある方は以下のページもご覧ください。
 CTC教育サービス Linuxのページ
 http://www.school.ctc-g.co.jp/linux/
 

Linux研修トレーニングならCTC教育サービス


 

筆者書籍紹介

Software Design plusシリーズ
「独習Linux専科」サーバ構築/運用/管理
  ――あなたに伝えたい技と知恵と鉄則

本物の基礎を学ぶ!新定番のLinux独習書

中井悦司 著
B5変形判/384ページ
定価3,129円(本体2,980円)
ISBN 978-4-7741-5937-9
詳しくはこちら(出版社WEBサイト)
「独習Linux専科」サーバ構築/運用/管理

 [IT研修]注目キーワード   Python  UiPath(RPA)  最新技術動向  Microsoft Azure  Docker  Kubernetes