Vagrantで手軽に構築してオープンPaaS「Cloud Foundry」を理解する:DevOps時代のJavaプログラマのためのオープンクラウド入門(2)(1/4 ページ)
オープンなクラウドで重要性を増すJava。DevOps時代のJavaプログラマはアプリケーション開発者(Dev)もデプロイや運用(Ops)面におけるクラウド/インフラ技術への幅広い理解が必要となる。本連載では、さまざまなオープンクラウド技術を紹介していく。今回は、オープンソースのPaaSである「Cloud Foundry」を紹介。また、環境構築が手軽にできる「Vagrant」を使ってローカルにCloud Foundryの開発用稼働環境を用意してみよう。
Cloud Foundryとは
Cloud Foundryはヴイエムウェアが中心となって開発をしているオープンソースのPaaS構築用ソフトウェアです。ソースコードはGitHubでApache License 2.0でライセンス公開されています。
試しに使ってみたい場合は、GoPivotal社がCloud Foundry Hosted Developer Editionを試用できるサービスを提供しているので、ここでCloud Foundryを使ったPaaSを利用できます。Cloud Foundry Hosted Developer Editionは2013年6月にv1からv2へアップデートされました。今回は基本的にv2を対象として説明をします。
Cloud Foundryは、できるだけ特別な実行環境がなくても動くように開発されているため、1台のサーバマシンでも稼働できます。もちろん、AWSやCloudStackといったIaaS上でも稼働可能です。Webアプリ開発用のプログラミング言語やフレームワークのメジャーなものをサポートしているため、Webアプリ開発者ならすぐに利用できるようになります。
Cloud Foundry向けのWebアプリを開発すれば、特定のベンダにロックインされることなく、PaaSプロバイダを利用するなり、自分で構築したローカルのPaaSで稼働させるなり、実行環境を好きなように選択できるといわれています。
2011年4月に公開されたCloud Foundryは、すでに実際にいくつかのサービスで採用されているという実績があります。有名なところでは「AppFog」「Stackato」「Iron Foundry」があります。
日本でも、NTTコミュニケーションズの「Cloudn(PaaS)」というサービスではCloud Foundryが使われています。CloudnはCloud Foundryのサイトでも「NTT Communications, World’s Leading Telecom, Joins Cloud Foundry Core | Cloud Foundry Blog」と紹介されています。
開発者としては、具体的に利用できるプログラミング言語とフレームワークが気になるところでしょう。Cloud Foundryでは、JavaやRuby、Node.jsを主にサポートしています。また、GroovyやScalaといったJVM上でプログラムを実行できるプログラミング言語もサポートしています。人気のある「Spring」「Grails」「Play framework」「Lift」といったフレームワークも使えます。Rubyでは、「Rails」「Sinatra」「Rack」といったフレームワークを使ったWebアプリをサポートしています。Node.jsを使ったJavaScriptによるWebアプリケーションも動かすことができます。Node.jsは「Express」などのWebフレームワークも利用ができます。
他にもPHP、Pythonなども利用できますし、ここに挙がっていないフレームワークも「custom buildpacks」を使えば利用できます。custom buildpacksとは、プログラム実行環境を構築するために必要な情報をまとめたもので、これを使うことで柔軟なWebアプリの実行環境を提供できるようになっています。
筆者は「Heroku」というPaaSでbuildpacksを初めて知りました。なお、Cloud FoundryがサポートするbuildpacksはHerokuのものと互換性を持たせる方向で実装しているようです。Heroku向けのサードパーティ製buildpacksのいくつかは動くそうなので、興味があれば試してみるといいでしょう。
データベースなどはアドオンのサービスとして提供されています。「PostgreSQL」「MySQL」「RabbitMQ」「MongoDB」「Redis」といったサービスが提供されているので、Cloud Foundry Marketplace経由で有効化すると使えるようになります。
「Cloud Foundry Core」にはサポートするプログラミング言語やサービスが分かる一覧があります。まだv1のものしか記載されていないようですが、v2のものも同様にして公開されていくと思われます。
Cloud Foundryの構造
Cloud Foundryの概要を理解したところで、仕組みについても簡単に説明をしておきましょう。Cloud Foundryの構造はスタックになっています(図1)。
「Cloud Foundry Kernel」(「CF Kernel」ともいわれる)がPaaSであるCloud Foundryの主機能を提供する部分で、実装は「vcap」と呼ばれており、GitHubで公開されています。
Cloud Foundryのプロジェクトでは、Clients部分のレイヤに属する「cf」という専用コマンドラインツールも開発をしています。Clients部分には「Spring Tool Suite(STS)」のような開発環境やWebブラウザも含まれます。
Orchestratorは、Cloud Foundry KernelとIaaS(AWS、vSphere、OpenStackなど)をつなぐ部分です。2012年9月のVMwareの資料によると「cloudfoundry/bosh」がこのレイヤに該当していて、これによりCloud Foundryを稼働させるIaaSをPaaS提供者が手軽に選択できるようになっています。
次にCloud Foundry Kernelを構成するコンポーネントについて説明をします。「cloudfoundry/cf-release」によると、Cloud Foundry v2 には次のようなコンポーネントが含まれていることが分かります。
- Cloud Controller(ccng):Cloud Foundryのエントリポイント
- gorouter:Cloud Foundryにデプロイされたアプリケーションへのトラフィックを振り分ける機能でプログラミング言語Goで実装されている
- Droplet Execution Agent(dea_next):ユーザーアプリケーションインスタンスのライフサイクルを管理し、ステージングからホスティングまで対応する。DEAと略されることもある
- Health Manager:ユーザーアプリケーションの状態を監視する機能
かなり大ざっぱですが、Cloud Foundryの構造やコンポーネントについては、これぐらいを把握しておけばいいでしょう。
次ページからは、Cloud Foundryを使ってみましょう。
Copyright © ITmedia, Inc. All Rights Reserved.