はじめに
これまで3回にわたってNode.jsの魅力に触れてきた本特集も、今回をもって最終回となります。第4回目の本記事では、Node.jsと関連性のあるホスティングサービスについて紹介します。
概況
昨年までは、Node.jsに対応したホスティングサービスが大量にリリースされ、それはまさに雨後の筍のようでした。今年もいくつかのホスティングサービスがNode.jsの対応を表明し、買収や提携が行われています。Microsoftは、Node.js 0.5.x系より行われているWindows対応の開発を支援しており、Windows AzureでもNode.jsが提供される予定です。Node.jsの本格的な普及を前に、各社がこぞって注目していることがわかります。
Ryan Dahl氏とともにNode.jsの開発を進めているJoyent社のGithubページに、ホスティングサービスの一覧がまとめられています。この一覧の中から特徴的なサービスをピックアップして紹介していきます。ここでは「Managed」「Self-Managed」「DIY Platforms」の3つのカテゴリに分けられています。
Managed
「Managed」はその名の通りサービス提供者がNode.jsの実行環境を提供し運用管理をする、いわゆるPaaSと呼ばれるレイヤのサービスです。実行環境の構築や運用の手間が省けるうえ、開発に便利な機能なども提供されるため、利用者はアプリケーションの開発により専念することができます。その反面、与えられた環境の範囲で開発・運用する必要があり、できることに制限があります。
また、Node.js自体が言語としても発展途上であることもあり、多くのサービスがまだベータ版として無償で提供されています。個人でNode.jsを試してみる場合や、高い可用性よりも早く簡単にスタートアップしたいWEBサービスでの利用に向いているでしょう。
さきほどご紹介したJoyent社によるNode.js専用ホスティングです。同社が開発しているSmartOSと呼ばれるSolarisベースのOS上にNode.jsの環境が構築されています。今年のNode.js Knockout直前からversion 2になり、以前のように登録時にクーポンコードの発行を待つ必要はなくなりましたが、Proxyが間に入るなど一部仕様が変わっています。今まで利用されていた方は、Machineを作りなおすと新しいバージョンになりますが、先にドキュメントに目を通すことをお勧めします。
利用方法はごく一般的で、ローカルで開発したソースコードをgit pushします。サーバにデプロイされるとNode.jsのプロセスが再起動され、自動で反映されます。特徴としては、SSH接続が可能でMongoDBなどがインストールでき、SmartOSのDTrace機能を活かしたAnalyticsという画面でサーバ状態の可視性を高めています。
1ユーザごとに1環境まで無料で提供され、複数台やroot権限が欲しい場合はJoyentCloudで有料の仮想マシンを購入することになります。Joyent社は、次世代のリアルタイムWebや高負荷サービスにフォーカスしたサービスを提供し、その技術をオープンソースで公開しており、今後の動きが注目されています。
元々はブラウザ上でRuby(Rack)アプリケーションを簡単に開発できるうえに、Amazon EC2上に複数デプロイすることで可用性や拡張性も確保されると話題を呼びました。今ではブラウザよりもコマンドラインベースでの開発にターゲットを変更し、APIやCLI(コマンドラインインターフェース。コマンドラインベースのツール)を提供しています。Salesforce.comに買収され動向が注目されていましたが、大きな方向性の変化もなく、Node.jsやJava、Pythonなどマルチ言語対応を進めています。
Add-onによる周辺機能も豊富で、様々な作業が簡単にできる仕組みが揃っており、PaaSとしての完成度は高いです。その反面、インフラが抽象化されているため多少のベンダロックイン感があり、自由度の低い部分もあります。
こちらも最小構成は無料で、処理能力(Dyno、workerの数)や周辺機能(DatabasesやAdd-on)の追加に対して課金しています。
Heroku(ヘロク)は「hero(ヒーロー)」と「haiku(俳句)」を組み合わせた造語で、Databaseの名称も「Ronin」や「Fugu」など日本にまつわるネーミングが多いです。
VMWareが提供する、こちらもマルチ言語(Java、Ruby、Node.js)に対応したPaaSです。
マルチ言語であるだけでなく、提供形態もマルチであるという特徴を持っています。公式に提供されるパブリッククラウドサービスに加えて、その仕組みをオープンソースで公開しているためプライベートクラウドとして構築することもでき、Micro Cloud Foundryを使えばローカルマシン内でも同様の環境が構築できてしまいます。
今はまだ価格設定が明らかになっていませんが、無償版でも複数のアプリを公開できるようになっています。対抗馬とされるRed HatのOpenShiftとともに今後の展開が期待されるサービスです。
Self-Managed
「Self-Managed」は利用者が自分で実行環境を構築・運用する、いわゆるVPSやIaaSと呼ばれるレイヤのサービスです。最初からある程度の環境が構築されているサービスもありますが、サーバの構築、セキュリティ対策や監視など、利用者がサーバの構築・運用をする必要があります。基本的に有償であるためサービスレベルが保証されておりサーバ内の制限はないため、個人で自分の好きな環境を構築したい場合や、Webサービスの本番運営に向いているでしょう。
Joyent社の提供するJoyentCloudにはNode.js専用マシンがあり、Amazon EC2のUS EASTリージョンではNode.jsのAMIがあるようです。そのほかの面では、とくにNode.jsに特化した特徴はないため各サービスの紹介は省きます。グローバルでサービスを展開しない限り、最近は国内のVPSやIaaSも安いのでそれで十分でしょう。
AWSが東京リージョンを開始したことは皆さんご存知だと思いますが、Linodeも進出しているようですね。
DIY Platforms
「DIY Platforms」は、上記「Managed」のようなNode.jsの実行環境を運用管理する仕組みがオープンソースで公開されているものです。本来はサービス提供者向けのプラットフォームですが、他のオープンソースの開発管理ソフトウェアと組み合わせること(OpenSource Provisioning Toolchain)で、自分たちの組織、自分たちのサービスに最適なプライベートクラウドの構築(DevOps)も可能でしょう。
パブリックサービス自体はまだベータ版で、ほとんど利用した話を聞いたことがありませんが、WebSocketに対応したリバースProxyのnode-http-proxyを開発するなどNode.jsに関する活動は活発で、Nodejitsuのサービスの仕組みも公開しています。
かわいい忍者のキャラクターはどこかへ行ってしまいましたが、Heroku同様こちらも日本語にまつわるネーミングが多く見られます。
その他
一覧には載っていませんが、Nodesterを採用したcloudnodeやbejes.us、Cloud Foundryを採用したStackatoなど、徐々に「DIY Platforms」が利用されはじめていますが、この流れがこの先どうなるのか、見所です。
まとめ
どのサービスもAPIとCLIの提供と、フリーミアムモデルが原則となっています。
とくに「Managed」のPaaSは動向の変化が激しくバリエーションが多種多様です。以前は大手のクラウドプレイヤーが開発者を囲い込むような戦略が目につきましたが、新興勢力によるオープン化が進みベンダロックインから解放されはじめています。APIに加えてCLIも提供することが主流になる中、Cloud9 IDEやJSApp.USのようにブラウザでの開発に再度注目するサービスもあります。
また、Heroku、CloudFoundry、DotCloudのようにマルチ言語で多種多様の周辺サービスを揃えるサービスもあれば、WebSocket専用ホスティングのPusherや、MongoDB専用ホスティングのMongoHQ、ロゴキャラクターの目がぶっ飛んでるログ専用ホスティングのLogglyなど、何かに特化したサービスも存在感を増しています。
まだまだベンダ側の先行投資が目立つクラウド業界ですが、集約と分散を繰り返すコンピューティングの歴史の中で今後どのようなサービスがデファクトとなっていくのでしょうか。
なお、Node.js関連のホスティングサービスは日々仕様が変わっており、この記事では公表されている情報以外の記載はなるべく避けました。当学園祭の実行委員長を務める@meso氏のブログではもう少し詳細な内容がまとめられているのでこちらもご参照ください。
最後に
無償の「Managed」サービスは、とくに記載がなくともネットワークの接続時間や接続数に制限があることが多いため注意が必要です。Node.jsに触れているとWebSocketを使いたくなるのが人情!ですが、ほとんどのサービスでは何らかの制限があり、まともにWebSocketが動くサービスは少ないのが現状です。また、Amazon EC2が大規模障害に見舞われた際に、可用性をうたっていたHeroku上のサービスもサービス停止を余儀なくされたことからも、今はまだ「インフラは落ちる」ということを前提としたシステム構築が本番サービスでは求められるでしょう。
今回紹介したサービスは海外のものばかりでした。海外のサービスを使う際には、タイムゾーンなど思いも寄らないところでどハマりすることがあります。また、Node.jsが目指しているリアルタイムWebの世界観では、ネットワークのレイテンシを考慮すると海外のサービスが使えない場合もあるでしょう。日本の技術者がもっと英語圏で活躍してほしい気持ちもありますが、ドキュメントやサポートが英語で手間取るリスクは避けられません。
東京Node学園祭2011では、後援企業であるJoyentとFirstserverのタッグにより実現した日本発のNode.js専用ホスティングサービスを無償で提供します。日本のデータセンターを利用しているためレイテンシも小さくWebSocketの利用も可能で、Github連携などの便利な機能も搭載しています。この環境をどんどん活用し、あなたの素敵なアイデアで次世代のリアルタイムWebを実現させていきましょう。
まだまだご紹介したいことは尽きませんが、この続きは東京Node学園祭2011で、素晴らしい講演を聞き、積極的に交流をはかり、文章を読むだけでは得られない貴重な体験をして頂ければ幸いです。この学園祭は実行委員長をはじめ、いろんな人の縁が織りなして実現することとなりました。影の立役者でもある本特集第1回の著者@Jxck氏のスライドを予習しておくと、学園祭をより楽しめると思います。
それでは、スタッフ一同、皆さんのご来場を楽しみにしていますので、ぜひ現地でお会いしましょう!