“使用”より“構築”で学ぶオープンPaaS「OpenShift」:DevOps時代のJavaプログラマのためのオープンクラウド入門(1)(1/5 ページ)
オープンなクラウドで重要性を増すJava。DevOps時代のJavaプログラマはアプリケーション開発者(Dev)もデプロイや運用(Ops)面におけるクラウド/インフラ技術への幅広い理解が必要となる。本連載では、さまざまなオープンクラウド技術を紹介していく。初回は、オープンソースのPaaSであるOpenShiftを紹介。どんな技術を使ってPaaSが実装されているのかを理解しよう
オープンなクラウドで重要性を増す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」をご覧ください。
Brokerのホストでは、ユーザーアプリケーションの新規作成、管理といった機能を提供します。これには、ユーザー認証機能や、ノード間の通信機能なども含まれます。
Nodeのホストでは、ユーザーアプリケーションを実行します。ユーザーアプリケーションには「Gear」と呼ばれる実行環境が割り当てられて、その環境上で動作します。Brokerのホストは、メッセージングサービス経由でNodeのホストへ問い合わせをしたり、Nodeのホストをコントロールします。
また、OpenShiftで稼働するアプリケーションをコントロールできるように、「RHC Client Tools」やWebコンソールなどクライアントアプリが提供されています。これらからの要求はBrokerのホストで提供されるREST API経由で実行できます。Brokerのホストはメッセージングサービスのコンポーネントを通してNodeのホストと通信をします。
ちなみにOpenShiftでは、各Nodeホストが独立して安全に通信ができるようにするために、サーバのオーケストレーション(デプロイや設定、管理の自動化)または並列ジョブ実行システムを構築するオープンソースフレームワーク「Marionette Collective」(旧、MCollective)が利用されています。
BrokerはPaaSが提供するサービスを稼働するためにさまざまな永続化データを管理する必要があります。次の3種類の情報を管理しています。
- 状態:通常アプリケーションの状態に関する情報は、デフォルトではMongoDBに保存
- DNS:ダイナミックDNSの情報は、デフォルトではBINDで管理される
- 認証:ユーザーの認証と権限付与は、デフォルトではLDAPもしくはKerberos KDCに保存される
OpenShiftは冗長性を考慮した設計となっています。Broker自体はステートレスであり、単純なHTTPロードバランサの後方に設置できます。メッセージング層もステートレスで、MCollectiveは複数のメッセージキューのエンドポイントとして利用可能です。
Gear(ギア)
OpenShiftでは、ホストするアプリケーションに必要なリソースを提供するに当たり、量が決まっています。OpenShiftのサービスでは、次のよう「Small」「Medium」の2種類のGearが提供されています。
種類 | RAMサイズ | ディスク容量 |
---|---|---|
Small | 512Mbytes RAM | 1Gbytes disk |
Medium | 1Gbytes RAM | 1Gbytes disk |
GearはNodeホスト上に用意されます。1つのNodeホスト上では複数のGearが実行できるようになっています。アプリケーションで利用するGearの数が多いほど、アプリケーションの処理が高速になり、利用できるディスク容量も増えます。アクセスが多い人気のWebサービスほど、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の数を増やすこともできます。
Copyright © ITmedia, Inc. All Rights Reserved.