Presentation is loading. Please wait.

Presentation is loading. Please wait.

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

Similar presentations


Presentation on theme: "オープンソースとマイクロソフトの良い関係 ~ Node.js の Azure 対応 ~"— Presentation transcript:

1

2 オープンソースとマイクロソフトの良い関係 ~ Node.js の Azure 対応 ~
株式会社野村総合研究所 共通基盤推進部 勇大地 D5-302

3 セッションの目的とゴール セッションの目的 Node.js のアプリ開発手法を学習する
Azure 上で Node.js アプリを動作させる方法 を学習する セッションのゴール Node.js で簡単なアプリが開発できる Azure 上で Node.js アプリを運用できる

4 本日の内容 はじめに Node.js とは Node.js でアプリを作成する Azure 上で動作させるには まとめ

5 Node.js とは サーバサイド JavaScript の実装 他に Rhino や Aptana Jaxer 等がある
ノンブロッキング I/O が無い マルチスレッドが無い

6 Windows Azure とは マイクロソフトのクラウドプラットフォーム Worker Role が外部プログラムの実行に適し ている
Windows Azure SDK 1.5 から外部プログラ ムの実行が容易化 OSS での開発にも多数対応 Python、Ruby、Erlang 等での開発が可能 JavaScript ( Node.js )向けのライブラリ も提供

7 Windows Azure 上で Node.js
非同期 IO と ブロブ・ストレージの相性が良い 非同期的に処理が可能 アップロード等重い処理の対応に適している 運用の対応は不要 Windows Azure 上で稼働するため、OS レ ベルの運用はお任せ可能 CDN を利用することで、パフォーマンスの改 善も可能

8 本日の内容 はじめに Node.js とは Node.js でアプリを作成する Azure 上で動作させるには まとめ

9 Node.js について Windows 版のバイナリが提供開始
node.exe が入手可能 最新版は v0.57 Windows 版だとパッケージ管理機構 ( npm )が存在しない点には注意 以下のサイトで色々な情報が取得可能 Node.js 日本ユーザグループ

10 Node.js の機能(一部) ブラウザ上での実行でないため、色々出来る 標準入出力 ファイルシステム モジュール Net
C / C++ アドオン プロセス 暗号化 TLS / SSL   等々・・・

11 簡単な起動方法 コード例( 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

12 ファイルを操作する File I/O は全メソッド同期/非同期が存在し、 使い分けが可能(以下の例非同期メソッド)
// ファイルストリームのインスタンスを作成 var fs = require('fs'); var read = fs.createReadStream('./read.txt'); // ファイルを読み込み、ファイルの内容を表示 read.on('data', function (data) { console.log(data.toString()); });

13 外部ライブラリを読み込む 組み込みライブラリは require(XXX) のみで利 用可能 外部ライブラリは環境変数の設定が必要
>set NODE_PATH=.;c:\\node\\lib >node.exe example_path.js 環境変数の設定が必要

14 本日の内容 はじめに Node.js とは Node.js でアプリを作成する Azure 上で動作させるには まとめ

15 今回利用するライブラリ 主要なライブラリは以下 ライブラリ名 概要 express Node.js で主流なテンプレートエンジン
waz-storage.js Windows Azure の ストレージサービスを操作可能なライブラリ ※上記に依存したライブラリも必要

16 express の利用(1/2) 起動には以下のライブラリが必要 ライブラリ名 バージョン 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 ※ formidable は POST を利用する場合に必要

17 express の利用(2/2) + ロジックとビューの分離 index.html user.html app.js
var users = [ { name: 'tj', } ]; //GET リクエストの処理 app.get('/', function(req, res){ console.log('/'); res.render('users', { users: users }); }); <h3>アカウント情報</h3> <ul id="users"> <%- partial('user', users) %> </ul> index.html <li><%= user.name %> <<%= user. %>></li> user.html app.js

18 waz-storage.js の利用(1/2) 起動には以下のライブラリが必要 ライブラリ名 バージョン waz-storage.js
0.1.2 xml2js 0.1.12 underscore 1.1.7 underscore.string 1.1.6 sax.js 0.2.5 ※注 Compute Storage は未サポート

19 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) { }); });

20 本日の内容 はじめに Node.js とは Node.js でアプリを作成する Azure 上で動作させるには まとめ

21 Windows Azure での動作イメージ
ロードバランサ側のポートと、インスタンス毎に 割り当てられるポートが異なる Worker ロール インスタンス 1 ストレージ サービス Internet Private Port ( 8080 ) Node.js を起動 ロードバランサ Worker ロール インスタンス 2 Public Port ( 80 ) Private Port ( 8080 ) Node.js を起動 ※注 Compute Storage では 1 インスタンスで起動すること

22 Windows Azure SDK 1.4以前 C# のコードから起動する var proc = new Process();
var procStartInfo = new ProcessStartInfo(); procStartInfo.FileName = Environment.GetEnvironmentVariable("RoleRoot") procStartInfo.Arguments = Environment.GetEnvironmentVariable("RoleRoot") procStartInfo.UseShellExecute = false; proc.StartInfo = procStartInfo; proc.Start();

23 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>

24 ポートの設定 Public Port / Private Port を設定 ブラウザからアクセスするポートを指定

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

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

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

28 本日の内容 はじめに Node.js とは Node.js でアプリを作成する Azure 上で動作させるには まとめ

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

30 ご参考 Windows 上で npm の代替ツールが存在する 詳しくは本家サイトへ 利用方法例( express をインストール )
ryppi.py と呼ばれる Python ツール 詳しくは本家サイトへ 利用方法例( express をインストール ) > python ryppi.py install express Installing into .\lib\express ... Checking dependencies for express ...

31 関連セッション T2-206:実践クラウドのススメ ~ 今日からはじめる Windows Azure Platform
D3-301:Windows Azure の今 : ここまでできるを知る! D3-303:Windows Phone/iOS/Android から Windows Azure を利用する D3-302:Windows Azure の真骨頂 : AppFabric を極める!

32 リファレンス Windows Azure Platform デベロッパー センター Windows Azure を無償で利用するには? Windows Azure Platform ダウンロード What’s New in Windows Azure Worker Role Scheme

33 ご清聴ありがとうございました アンケート にご協力 ください D5-302


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

Similar presentations


Ads by Google