ページの先頭です
2011年12月13日
クラウド全盛時代において注目されている、アプリケーション開発基盤としてのPaaS。ここでは、Ruby on Railsの開発支援環境と実行環境を提供するサービスであるMOGOKについて紹介し、それにおけるリソース管理とメッセージングの仕組みについて解説します。
クラウド全盛の時代において、IaaS、SaaS等のビジネスが根付き始めた昨今、PaaS(Platform as a Service)も徐々に知名度があがってきました。
仮想マシン(VM)自体を貸し出すIaaSは昔から存在するレンタルサーバやVPSの代替であり、ASP(Application Service Provider)としてソフトウェアを提供していたものの進化系がSaaSとして一般的になってきています。
IaaSで提供されるVMは、サーバ管理能力のある人なら、その人が使いたい形にカスタマイズやチューニングをして利用できます。またSaaSは、Webブラウザを利用できる人なら誰でも、ブラウザ経由でアプリケーションを使うことができます。
では、IaaSとSaaSの間に属する人、例えばアプリケーション開発者にとって有益なクラウド環境はないのでしょうか?そこでここ数年、アプリケーション開発者向けにPaaSを基盤とするサービスが提供されるようになりました。
MOGOKは、Ruby on Railsの開発支援環境と実行環境を提供するサービスです。開発支援環境としては、Gitリポジトリ、リポジトリからの自動デプロイ等が可能なユーザポータル及びコマンドラインツールを提供します。また、実行環境としては、Ruby on Railsが稼働するWebプロセス、MySQLが稼働するDBプロセス、定時処理や非同期処理が可能なJobプロセスを提供します。
開発支援環境 |
|
---|---|
実行環境 |
|
MOGOKを利用することで、アプリケーション開発者はサーバ自体のチューニングやデータベースアプリケーションのケア等を気にすることなく、「アプリケーション自体の開発」に注力することが可能になります。
PaaSの環境を考えるときに、アプリケーション実行環境は、ユーザから見て独立している必要があります。アプリケーション実行環境ごとにVMを準備する方法もありますが、集約や管理という観点でオーバーヘッドが大きくなります。そこで、効率的集約とアプリケーションの独立性を高める方法を考える必要がでてきます。MOGOKはαバージョンで、環境独立の担保として「chroot」を用いました。これは古くからUNIXで利用される技術であるのですが、CPUやメモリ等の計算機資源をユーザ単位では管理しにくく、ユーザに見せる必要がない情報まで見えてしまうものでした。そこでβバージョンからは、Linuxのcgroupとnamespaceという機能を用いて、chrootではカバーできなかった制限を行いました。これにより、CPUとメモリ制限の自由度の拡張と、ユーザに見せる必要のない情報の隠ぺいが実現され、ユーザリソースの制御が容易な独立環境へと改良されました。
次に、MOGOK内部のメッセージ通信に関しての手法を説明します。MOGOKの内部ではPaaSを実現するために、色々な機能を持ったサーバが動作しています。先にあげたユーザアプリケーションを動作させる環境や、ユーザからのHTTPリクエストをルーティングするサーバ、データベースを作成・管理するサーバ群等です。PaaSを考える上で、それらサーバ群は将来的なサービスのスケールアウトに対応できるように、台数が増加しても管理しやすい機構になっていなければなりません。今回MOGOKを設計するにあたり、すべてのシステムをAPIで統合するという形でグランドデザインを描きましたが、各サーバが独自に特定サーバとのやり取りを行うと、将来的にサーバ数が増えた場合、メッシュに近い形でAPI呼び出しが行われてしまい、システムとして複雑でメンテナンスを行いにくくなってしまいます。そこで、このやり取りを簡素化するために、メッセージングルータを導入しました。これをMOGOKではPX(Procedure Exchange)と呼び、すべてのAPIリクエストはこのPXを経由してやり取りするようにしました。PXは特定のルーティング情報を保持し、入力されたAPIリクエストを解析して宛先サーバへと転送します。メッセージを送りたいプログラムは、IPアドレスやドメイン名等を気にせずに、APIリクエストを投げるデフォルトルータとしてPXを指定することになります。この機構により、将来的にサーバが増えたとしてもPXにリクエストさえ投げこめば、適切なサーバへとAPIリクエストがルーティングされることになります。PXは中央集権的な機構に見え、単一障害点に見えるかもしれません。しかし、PX自身が受け付けたリクエストに対する状態を保持しないので、複数サーバでVirtual IPを利用した冗長構成を組めるようにすることで、単一障害点にはなりにくい仕組みになりました。なお、PXで利用されるメッセージングの仕組みには、オープンソースソフトウェアのMessagePack-RPCを利用しています。
MOGOKは現在クローズドβという形で社内外に協力者を募り、更に発展させるために改良を行っています。
現状、利用できる機能は限られていますが、IIJの他のクラウドサービスとの結合を順次行い、利便性を高めて行く予定です。
また、MOGOKをインターネット、クラウド、Rubyという3つのキーワードをうまく絡めたアプリケーション開発基盤のPaaSとして、発展させていきたいと考えています。
執筆者プロフィール
阿部 博(あべ ひろし)
IIJ サービス本部 プラットフォームサービス部 プラットフォーム開発課
2003年IIJ入社。セキュリティサービスの開発業務を経て、分散処理システム等クラウドに関わるテクノロジーを調査。2009年より、IIJ GIOの基盤システムの開発に関わる。
関連リンク
ページの終わりです