オープンソースとマイクロソフトの良い関係 ~ Node.js の Azure 対応 ~

33

description

オープンソースとマイクロソフトの良い関係 ~ Node.js の Azure 対応 ~. 株式会社野村総合研究所 共通基盤推進部 勇大地. D5-302. セッションの目的 Node.js の アプリ開発手法を学習する Azure 上で Node.js アプリを動作させる方法を学習する セッションのゴール Node.js で簡単なアプリが開発できる Azure 上で Node.js アプリを運用できる. セッションの目的とゴール. 本日の内容. サーバサイド JavaScript の実装 - PowerPoint PPT Presentation

Transcript of オープンソースとマイクロソフトの良い関係 ~ Node.js の Azure 対応 ~

Page 1: オープンソースとマイクロソフトの良い関係  ~  Node.js  の  Azure  対応 ~
Page 2: オープンソースとマイクロソフトの良い関係  ~  Node.js  の  Azure  対応 ~

オープンソースとマイクロソフトの良い関係

~ Node.js の Azure 対応 ~

株式会社野村総合研究所

共通基盤推進部

勇大地D5-302

Page 3: オープンソースとマイクロソフトの良い関係  ~  Node.js  の  Azure  対応 ~

セッションの目的とゴールセッションの目的

Node.js のアプリ開発手法を学習するAzure 上で Node.js アプリを動作させる方法を学習する

セッションのゴールNode.js で簡単なアプリが開発できるAzure 上で Node.js アプリを運用できる

Page 4: オープンソースとマイクロソフトの良い関係  ~  Node.js  の  Azure  対応 ~

本日の内容

はじめに

Node.js とは

Node.js でアプリを作成する

Azure 上で動作させるには

まとめ

Page 5: オープンソースとマイクロソフトの良い関係  ~  Node.js  の  Azure  対応 ~

Node.js とはサーバサイド JavaScript の実装

他に Rhino や Aptana Jaxer 等がある

JavaScript を利用してシングルスレッドベースの非同期処理が可能

ノンブロッキング I/O が無いマルチスレッドが無い

Page 6: オープンソースとマイクロソフトの良い関係  ~  Node.js  の  Azure  対応 ~

Windows Azure とはマイクロソフトのクラウドプラットフォーム

Worker Role が外部プログラムの実行に適しているWindows Azure SDK 1.5 から外部プログラムの実行が容易化

OSS での開発にも多数対応Python 、 Ruby 、 Erlang 等での開発が可能JavaScript ( Node.js )向けのライブラリも提供

Page 7: オープンソースとマイクロソフトの良い関係  ~  Node.js  の  Azure  対応 ~

Windows Azure 上で Node.js

非同期 IO と ブロブ・ストレージの相性が良い非同期的に処理が可能アップロード等重い処理の対応に適している

運用の対応は不要Windows Azure 上で稼働するため、 OS レベルの運用はお任せ可能CDN を利用することで、パフォーマンスの改善も可能

Page 8: オープンソースとマイクロソフトの良い関係  ~  Node.js  の  Azure  対応 ~

本日の内容

はじめに

Node.js とは

Node.js でアプリを作成する

Azure 上で動作させるには

まとめ

Page 9: オープンソースとマイクロソフトの良い関係  ~  Node.js  の  Azure  対応 ~

Node.js についてWindows 版のバイナリが提供開始

node.exe が入手可能 最新版は v0.57

Windows 版だとパッケージ管理機構( npm )が存在しない点には注意

以下のサイトで色々な情報が取得可能Node.js 日本ユーザグループ http://nodejs.jp/

Page 10: オープンソースとマイクロソフトの良い関係  ~  Node.js  の  Azure  対応 ~

Node.js の機能(一部)ブラウザ上での実行でないため、色々出来る

標準入出力ファイルシステムモジュールNet

C / C++ アドオンプロセス暗号化TLS / SSL

  等々・・・

Page 11: オープンソースとマイクロソフトの良い関係  ~  Node.js  の  Azure  対応 ~

簡単な起動方法コード例( example.js )var http = require('http');http.createServer(function (request, response) {

response.writeHead(200, { 'Content-Type': 'text/plain; charset=utf-

8;' });response.end(‘Node.js on Windows Azure \n');

}).listen(8080);

アプリケーションを起動

> node.exe example.js

Page 12: オープンソースとマイクロソフトの良い関係  ~  Node.js  の  Azure  対応 ~

ファイルを操作するFile I/O は全メソッド同期/非同期が存在し、使い分けが可能(以下の例非同期メソッド)// ファイルストリームのインスタンスを作成var fs = require('fs');var read = fs.createReadStream('./read.txt');

// ファイルを読み込み、ファイルの内容を表示read.on('data', function (data) { console.log(data.toString());});

Page 13: オープンソースとマイクロソフトの良い関係  ~  Node.js  の  Azure  対応 ~

外部ライブラリを読み込む組み込みライブラリは require(XXX) のみで利用可能外部ライブラリは環境変数の設定が必要

>set NODE_PATH=.;c:\\node\\lib>node.exe example_path.js

環境変数の設定が必要

Page 14: オープンソースとマイクロソフトの良い関係  ~  Node.js  の  Azure  対応 ~

本日の内容

はじめに

Node.js とは

Node.js でアプリを作成する

Azure 上で動作させるには

まとめ

Page 15: オープンソースとマイクロソフトの良い関係  ~  Node.js  の  Azure  対応 ~

今回利用するライブラリ主要なライブラリは以下

※ 上記に依存したライブラリも必要

ライブラリ名 概要express Node.js で主流なテンプレート

エンジン

waz-storage.js

Windows Azure の ストレージサービスを操作可能なライブラリ

Page 16: オープンソースとマイクロソフトの良い関係  ~  Node.js  の  Azure  対応 ~

express の利用( 1/2 )起動には以下のライブラリが必要

※ formidable は POST を利用する場合に必要

ライブラリ名 バージョン express 3.0.0alpha1

mine 1.2.4

qs 0.3.1

mkdirp 0.0.7

connect 1.7.0

ejs 0.4.3

commander 0.1.0

formidable 1.0.6

Page 17: オープンソースとマイクロソフトの良い関係  ~  Node.js  の  Azure  対応 ~

express の利用( 2/2 )ロジックとビューの分離

var users = [ { name: 'tj', email: '[email protected]' }];//GET リクエストの処理app.get('/', function(req, res){

console.log('/');

res.render('users', { users: users });});

<h3> アカウント情報</h3><ul id="users"> <%- partial('user', users) %></ul>

<li><%= user.name %> &lt;<%= user.email %>&gt;</li>

index.html

user.html app.js

Page 18: オープンソースとマイクロソフトの良い関係  ~  Node.js  の  Azure  対応 ~

waz-storage.js の利用( 1/2 )

起動には以下のライブラリが必要

※ 注 Compute Storage は未サポート

ライブラリ名 バージョン waz-storage.js 0.1.2

xml2js 0.1.12

underscore 1.1.7

underscore.string

1.1.6

sax.js 0.2.5

Page 19: オープンソースとマイクロソフトの良い関係  ~  Node.js  の  Azure  対応 ~

waz-storage.js の利用( 2/2 )

ストレージサービスを操作可能// アカウント情報の初期化var waz = require('waz-storage');waz.establishConnection( { accountName: ‘accountname', accountKey: ‘accountKey', useSsl: true } );

// ブロブのアップロードwaz.blobs.container.find('container1', function(err, container1) { var fs = require('fs');var stream = fs.createReadStream(path); var uploader = container1.upload(filename, stream, files.upload.type, {'x-ms-mymetadata': 'value'}, function(err, block) { }, function(err, blob) { }); });

Page 20: オープンソースとマイクロソフトの良い関係  ~  Node.js  の  Azure  対応 ~

本日の内容

はじめに

Node.js とは

Node.js でアプリを作成する

Azure 上で動作させるには

まとめ

Page 21: オープンソースとマイクロソフトの良い関係  ~  Node.js  の  Azure  対応 ~

Windows Azure での動作イメージ

ロードバランサ側のポートと、インスタンス毎に割り当てられるポートが異なる

Worker ロールインスタンス 1

ロー

ドバ

ラン

PublicPort( 80 )

Internet PrivatePort( 8080 )

PrivatePort( 8080 )

ストレー

サー

Node.js を起動

※ 注 Compute Storage では 1 インスタンスで起動すること

Worker ロールインスタンス 2

Node.js を起動

Page 22: オープンソースとマイクロソフトの良い関係  ~  Node.js  の  Azure  対応 ~

Windows Azure SDK 1.4 以前

C# のコードから起動するvar proc = new Process();var procStartInfo = new ProcessStartInfo();procStartInfo.FileName = Environment.GetEnvironmentVariable("RoleRoot") + @"\approot\node\node.exe";procStartInfo.Arguments = Environment.GetEnvironmentVariable("RoleRoot") + @"\approot\node\example.js";procStartInfo.UseShellExecute = false;proc.StartInfo = procStartInfo;proc.Start();

Page 23: オープンソースとマイクロソフトの良い関係  ~  Node.js  の  Azure  対応 ~

Windows Azure SDK 1.5 以降

設定ファイルのみで対応可能 <WorkerRole name="WorkerRole1"> <Runtime> <Environment> <!– 環境変数の設定が必須 --> <Variable name="NODE_PATH" value=".;%RoleRoot%\approot\lib\node" /> </Environment> <!– Node.js アプリの起動 --> <EntryPoint> <ProgramEntryPoint commandLine="node/node.exe app.js" setReadyOnProcessStart="true" /> </EntryPoint> </Runtime>

Page 24: オープンソースとマイクロソフトの良い関係  ~  Node.js  の  Azure  対応 ~

ポートの設定Public Port / Private Port を設定

ブラウザからアクセスするポートを指定

Page 25: オープンソースとマイクロソフトの良い関係  ~  Node.js  の  Azure  対応 ~

「出力ディレクトリにコピー」を設定

「出力ディレクトリにコピー」を「新しい場合はコピーする」に変更するNode.js アプリの構成ファイル全てに設定する指定しない場合、パッケージングされない

Node.js 関連のファイル全てに設定

Page 26: オープンソースとマイクロソフトの良い関係  ~  Node.js  の  Azure  対応 ~

Compute Emulator で実行Private Port で設定したポートにアクセス

Page 27: オープンソースとマイクロソフトの良い関係  ~  Node.js  の  Azure  対応 ~

ホスティッドサービスで実行Public Port で設定したポートにアクセス

Page 28: オープンソースとマイクロソフトの良い関係  ~  Node.js  の  Azure  対応 ~

本日の内容

はじめに

Node.js とは

Node.js でアプリを作成する

Azure 上で動作させるには

まとめ

Page 29: オープンソースとマイクロソフトの良い関係  ~  Node.js  の  Azure  対応 ~

まとめWindows Azure SDK 1.5 以降から、外部プログラムの実行が容易化Node.js では様々な外部ライブラリを組み合わせることが可能Node.js 向けに提供された waz-storage.js ライブラリを利用することで、 Windows Azure ストレージサービスを利用可能

Node.js 以外にも様々な OSS が利用可能

Page 30: オープンソースとマイクロソフトの良い関係  ~  Node.js  の  Azure  対応 ~

Windows 上で npm の代替ツールが存在する ryppi.py と呼ばれる Python ツール

詳しくは本家サイトへ https://github.com/japj/ryppi

利用方法例( express をインストール )

ご参考

> python ryppi.py install expressInstalling http://registry.npmjs.org/express/-/express-2.4.7.tgz into .\lib\express ... Checking dependencies for express ...

Page 31: オープンソースとマイクロソフトの良い関係  ~  Node.js  の  Azure  対応 ~

関連セッションT2-206 :実践クラウドのススメ ~ 今日からはじめる Windows Azure Platform

D3-301 : Windows Azure の今 : ここまでできるを知る !

D3-303 : Windows Phone/iOS/Android から Windows Azure を利用する

D3-302 : Windows Azure の真骨頂 : AppFabric を極める !

Page 32: オープンソースとマイクロソフトの良い関係  ~  Node.js  の  Azure  対応 ~

リファレンス

Windows Azure Platform デベロッパー センターhttp://msdn.microsoft.com/ja-jp/windowsazure/

What’s New in Windows Azurehttp://msdn.microsoft.com/en-us/library/windowsazure/gg441573.aspx

Worker Role Schemehttp://msdn.microsoft.com/en-us/library/windowsazure/gg557552.aspx

Windows Azure を無償で利用するには ? http://msdn.microsoft.com/ja-jp/windowsazure/gg674969

Windows Azure Platform ダウンロードhttp://msdn.microsoft.com/ja-jp/windowsazure/cc974146

Page 33: オープンソースとマイクロソフトの良い関係  ~  Node.js  の  Azure  対応 ~

ご清聴ありがとうございました

アンケートにご協力くださいD5-302