BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース AWSクラウド、Node.jsアプリケーションサービスを提供

AWSクラウド、Node.jsアプリケーションサービスを提供

原文(投稿日:2013/04/09)へのリンク

 

AWS(Amazon Web Services)チームはElastic BeanstalkサービスにNode.jsのサポートを追加し、業界最高レベルのプラットフォームサポートを実現した。AWS Elastic Beanstalkを使うことで、開発者はNode.jsだけでなく、Java、PHP、.NET、Ruby、Pythonで書かれたアプリケーションのパッケージング、デプロイ、管理が可能になる。AWSは競合ひしめくNode.jsフレンドリーなクラウドに参入したが、ほかのAWSサービスとの統合によって差異化をはかろうとしている。

AWS Elastic BeanstalkへのNode.jsサポート追加に関するブログ記事において、AWS CTOであるWerner Vogels氏は、この人気が高まっているプラットフォームを追加する理由をこう述べた。

かなりの時間をかけて、AWS開発者、ゲームやモバイル業界で仕事をしている人たちと話をしました。その大部分が、WebアプリケーションにはNode.jsが適している思っていました。Node.jsの非同期でイベント駆動なプログラミングモデルのおかげで、開発者は大量の並列コネクションを低遅延で処理できます。こうした開発者は通常、データ検索のためのWebサービスや動的なモバイルインターフェイスを作るのに、EC2インスタンスをデータベースサービスの1つと組み合わせて使っています。

AWSチームのJeff Barr氏は、Elastic BeanstalkのNode.jsサポートでお気に入りの機能をいくつか紹介した

    • Node.jsアプリへのリバースプロキシとして、NginxApacheを選べること。クライアントが直接接続する必要のあるアプリケーションの場合、プロキシを使わないことも可能だ。
    • アプリケーション要求に基づいたHTTPおよびTCPロードバランシング設定ができること。WebSocketを使うアプリケーションの場合、TCPロードバランシングが適切だろう。
    • アプリケーションが必要とするNode.jsの特定バージョンを指定できること、またNode.jsアプリケーションを起動するのに使うコマンドを指定することでNode.jsスタックを設定できること。npmを使って依存関係を管理することもできる。
    • NginxやApacheを使ったgzip圧縮や静的ファイルを設定することで、パフォーマンス改善を支援すること。gzip圧縮を使うことで、クライアントへの応答のサイズを削減し、より高速な転送速度を可能にする。静的ファイルを使うことで、Node.jsアプリケーションのデータ処理時間を奪うことなく、NginxやApacheによって静的アセット(画像やCSSなど)を高速に提供できる。
    • リレーショナルデータストアへのデータ格納および取得のためのAmazon RDSとシームレスに統合できること。
    • EC2インスタンスのカスタマイズおよびElastic Beanstalk設定ファイルを使ったアプリのAWSリソースへの接続(設定ファイルについて、詳しくはAWS Elastic Beanstalk Developer Guideを参照)ができること。
    • 追加ネットワーク制御のためのAmazon Virtual Private Cloud内でNode.jsアプリケーションが実行できること。

ここに挙げたもの以外にも、Elastic BeanstalkはGitの統合高可用性のためのクラスタリング環境固有変数の利用もサポートしている。AWSがNode.jsに進出したのは、Node.js開発者向けにSDKをローンチした2012年12月にさかのぼる。このSDKは、Amazon DynamoDB、Amazon Simple Storage Service (S3)、Amazon Relational Database Service (RDS)、Amazon Simple Queue Service (SQS)、Amazon Elastic Compute Cloud (EC2)など、利用可能なAWSサービスのほとんどにアクセスすることができる。

AWSはNode.jsアプリケーションサービスを提供している多数のクラウドの仲間入りをした。Google App Engineを除いて、主要なPaaSベンダーのほとんど(HerokuWindows Azure, Open ShiftEngine YardCloud Foundryプロバイダの多数)がNode.jsをサポートしている。これらのプロバイダはみな、思想的指導者で熱心なNode.jsプラットフォームプロバイダであるNodejitsuと競合している。では、こうしたベンダーはどのように差異化するのだろうか? その1つの方法がツールだ。Werner Vogels氏は、いかにElastic BeanstalkがトッププラットフォームであるAWSの多数の開発ツールと密に統合されているか説明した。

どんなAWSリージョン(GovCloudを除く)にあるアプリケーションもデプロイして管理できます。これにはたくさんのツールが利用でき、お好みで選べます。Javaアプリケーションを構築しているなら、AWS Toolkit for Eclipseが使えます。NETアプリケーションを構築しているなら、AWS Toolkit for Visual Studioが使えます。ターミナルが使いたければ、Gitと「eb」というコマンドラインツールが使えます。eXoCloud IDEのような、Elastic Beanstalkとの統合環境を提供しているパートナーもいます。

exoCloudは現在Codenvyとしてスピンオフし、開発者にNode.jsデプロイメント向けElastic Beanstalkがターゲットになるクラウドベースの開発環境を提供している。

Node.jsアプリケーションの構築およびデプロイのためのツールを開発者に提供することに加え、クラウドプロバイダは無償サービスとの統合や、アプリケーション管理の「難題」に対するソリューションを提供することにより、ほかとの差異化をはかっている。Elastic BeanstalkにおけるNode.js実行が魅力的なところは、AWSが提供する多数のアプリケーションサービスと簡単に統合できることだ。AWS環境で動くNode.jsアプリケーションは、データベース、ストレージ、計算、キューイング、キャッシングなどに低遅延でアクセスできる。Windows Azureのようなクラウドも同様に、Node.jsアプリケーションをデプロイする開発者に、 データベース、ストレージ、メッセージングなどさまざまなネイティブサービスにアクセスできるという価値を提案している。HerokuNodejitsuといったプロバイダには独自の無償サービスはないが、彼らのプラットフォームで動作するアプリケーションと統合可能なサービスのカタログを用意している。

差異化としての無償サービス提供に加えて、クラウドプロバイダはアプリケーションのデプロイメントと管理が簡単になると宣伝している。これは、Webベースのソースコード管理リポジトリのサポート(AWS、Windows Azure、Nodejitsuのようなクラウド)や、継続的デプロイメントサービス(NodejitsuのTravisCIサポートなど)を意味している。高品質なモニタリング・レスポンスシステムは、クラウド開発者および管理者のキャパシティ管理をシンプルにしてくれる。AWSには、クラウド利用をモニタリングし、アプリケーション環境を自動的にリサイズするプロダクトもある。Werner Vogels氏はこうした管理機能によって、Elastic Beanstalkがアプリケーションのプロビジョニングにどのように役立つかを説明した。

Elastic Beanstalkはプロビジョニング、モニタリング、Elastic Load Balancing、Auto Scaling、EC2などの多数の基本AWSリソースの設定を自動化します。また、アプリケーションのデプロイ、ログのローテーション、EC2インスタンスのカスタマイズも自動化できます。

この分野は要注目だ。クラウドプロバイダは、自身のプラットフォームで動くアプリケーションの有用性を高めるネイティブあるいは統合サービスを提供しつつ、自身のプラットフォームのアプリケーション管理機能を強化している。

 

この記事に星をつける

おすすめ度
スタイル

BT