“使用”より“構築”で学ぶオープンPaaS「OpenShift」DevOps時代のJavaプログラマのためのオープンクラウド入門(1)(1/5 ページ)

オープンなクラウドで重要性を増すJava。DevOps時代のJavaプログラマはアプリケーション開発者(Dev)もデプロイや運用(Ops)面におけるクラウド/インフラ技術への幅広い理解が必要となる。本連載では、さまざまなオープンクラウド技術を紹介していく。初回は、オープンソースのPaaSであるOpenShiftを紹介。どんな技術を使ってPaaSが実装されているのかを理解しよう

» 2013年04月25日 18時00分 公開
[小山博史SSS(G)/ガリレオ]

オープンなクラウドで重要性を増すJava

 最近、これからは「DevOps時代」だといわれるようになっていますが、DevOps時代のJavaプログラマにとってクラウドサービスを使った開発は、どのようにアプローチしていくのが良いのでしょうか。

 Javaは、これまでオンプレミスなエンタープライズ向けWebアプリケーション開発で多く使われてきたこともあり、現在多くのパブリッククラウドのPaaSに対応プログラミング言語として採用されています(参考:Java開発者が知らないと損するPaaSクラウド8選)。パブリッククラウドPaaSへの採用例が多く、オンプレミス環境でも既存資産が多いことから、最近ではハイブリッドクラウド環境でJavaのシステムを構築する事例も見られるようになりました。こういった流れを受け、Java EE 8では、マルチテナンシー対応が予定されており、Javaはオープンで柔軟性のあるクラウド環境での重要性を増しています。

 このため、オープンなクラウド環境を扱ううえでは、アプリケーション開発者(Dev)もデプロイや運用(Ops)面におけるクラウド/インフラ技術への幅広い理解が必要となってくると考えます。

 そこで本連載では、DevOps時代のJavaプログラマのためのオープンクラウド開発という視点から、さまざまなクラウド技術を紹介します。

 まずは、IaaSなどよりも開発者との接点が多いPaaSから取り上げていきます。今回はオープンソースのPaaSであるOpenShiftを紹介します。PaaSを単純に使うのではなく、PaaSの基盤も理解できるように手元に環境を用意してみましょう。

OpenShiftとは、そもそもPaaSとは

 まず、OpenShiftについて説明します。OpenShiftはレッドハットが提供するPaaS(Platform as a Service)環境と、それを構築するためのオープンソースソフトウェアです。オープンソースソフトウェアは「OpenShift Origin」といいます(後述)。

 PaaSとは、Webサービスを提供するに当たって必要なハードウェア、OS、データベースサーバ、アプリケーションサーバ、ロードバランサといったシステム一式をプラットフォームとして提供するサービスのことです。アプリケーション実行に必要な環境の管理については、プラットフォームであるOpenShiftに任せて、開発者はユーザーへ提供するサービスのためのアプリケーション開発の作業に集中できるようになります。

 OpenShift向けのアプリケーションを開発するには、Java、Ruby、JavaScript(Node.js)、Python、PHP、Perlといった開発者に人気のプログラミング言語を利用できます。

 また、各プログラミング言語向けのWebアプリケーションフレームワークの多くも利用可能ですし、JBoss、MongoDB、MySQL、PostgreSQLといった一般的なミドルウェアコンポーネントもサポートされています。Maven、Jenkins、Eclipseといった開発ツールのサポートもされています。

 OpenShiftを使うと、開発環境を用意する手間や、運用に必要なサーバのセットアップの手間を、従来ほど掛けなくても、やりたいサービスの実装に取り掛かれます。

 なおOpenShiftは、オープンな技術を採用してサービスが構築されているので、“特定企業によるロックイン”の心配はありません。OpenShift向けに開発したアプリケーションをインターネット上のクラウド環境ではなく、自社のローカルネットワーク内の環境で稼働させることもできます。

OpenShiftの構成

 OpenShiftには、「Broker」「Node」という2種類のホストが必要です。サービスを提供するための最小構成としては1つのBrokerホストと1つのNodeホストから構成されます。

 インストール構成は、要求される機能(冗長性など)によって変わります。開発環境を用意したい場合は1台で済ますこともあるでしょうし、1台のマシンにBroker、データストア、メッセージングコンポーネントをインストールし、Nodeは別マシンにインストールするといった構成も可能です(図1)。

 なおOpenShiftのアーキテクチャについては、ここでは簡単な説明で済ませますので、詳細について知りたい方は、「Architecture Overview」をご覧ください。

図1 OpenShiftの構成例

 Brokerのホストでは、ユーザーアプリケーションの新規作成、管理といった機能を提供します。これには、ユーザー認証機能や、ノード間の通信機能なども含まれます。

 Nodeのホストでは、ユーザーアプリケーションを実行します。ユーザーアプリケーションには「Gear」と呼ばれる実行環境が割り当てられて、その環境上で動作します。Brokerのホストは、メッセージングサービス経由でNodeのホストへ問い合わせをしたり、Nodeのホストをコントロールします。

 また、OpenShiftで稼働するアプリケーションをコントロールできるように、「RHC Client Tools」やWebコンソールなどクライアントアプリが提供されています。これらからの要求はBrokerのホストで提供されるREST API経由で実行できます。Brokerのホストはメッセージングサービスのコンポーネントを通してNodeのホストと通信をします。

 ちなみにOpenShiftでは、各Nodeホストが独立して安全に通信ができるようにするために、サーバのオーケストレーション(デプロイや設定、管理の自動化)または並列ジョブ実行システムを構築するオープンソースフレームワーク「Marionette Collective」(旧、MCollective)が利用されています。

 BrokerはPaaSが提供するサービスを稼働するためにさまざまな永続化データを管理する必要があります。次の3種類の情報を管理しています。

  1. 状態:通常アプリケーションの状態に関する情報は、デフォルトではMongoDBに保存
  2. DNS:ダイナミックDNSの情報は、デフォルトではBINDで管理される
  3. 認証:ユーザーの認証と権限付与は、デフォルトではLDAPもしくはKerberos KDCに保存される

 OpenShiftは冗長性を考慮した設計となっています。Broker自体はステートレスであり、単純なHTTPロードバランサの後方に設置できます。メッセージング層もステートレスで、MCollectiveは複数のメッセージキューのエンドポイントとして利用可能です。

Gear(ギア)

 OpenShiftでは、ホストするアプリケーションに必要なリソースを提供するに当たり、量が決まっています。OpenShiftのサービスでは、次のよう「Small」「Medium」の2種類のGearが提供されています。

Gearの種類
種類 RAMサイズ ディスク容量
Small 512Mbytes RAM 1Gbytes disk
Medium 1Gbytes RAM 1Gbytes disk

 GearはNodeホスト上に用意されます。1つのNodeホスト上では複数のGearが実行できるようになっています。アプリケーションで利用するGearの数が多いほど、アプリケーションの処理が高速になり、利用できるディスク容量も増えます。アクセスが多い人気のWebサービスほど、Gearの割り当てを増やす必要が出てきます。

図2 アプリケーションとGear

 ちなみに、OpenShiftのサービスでは、「FreeShift」という無償のプランでは3つのGearを利用できます。「MegaShift」という有償のプランでは3〜16個のGearを利用できます。このように、プランによって利用可能なGear数に差があります。

Cartridge(カートリッジ)

 OpenShiftでは、「Cartridge」という単位で、利用するミドルウェアを指定します。Cartridgeの種類は、Webフレームワーク、データベース関係、その他に分類できます。ロードバランサのHAProxyやCIサーバのJenkinsも手軽に利用できます。

  • Webフレームワーク用カートリッジ
    • JBossAS Cartridge
    • Node.js Cartridge
    • PHP Cartridge
    • Perl Cartridge
    • Python Cartridge
    • Ruby Cartridge
  • データベース関係のカートリッジ
    • 10Gen MMS Cartridge
    • MongoDB Cartridge
    • MySQL Cartridge
    • PHPMyAdmin Cartridge
    • PostgreSQL Cartridge
  • その他のカートリッジ
    • HAProxy Cartridge
    • Cron Cartridge
    • Jenkins Server Cartridge
    • Jenkins Client Cartridge

 Cartridgeを動かす環境はGearが提供します。また、Cartridgeに割り当てるGearの数を増やすこともできます。

図3 CartridgeとGear
       1|2|3|4|5 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。