1 / 33

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

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

iria
Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

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

  3. 本日の内容

  4. サーバサイド JavaScript の実装 他に Rhino や AptanaJaxer等がある JavaScript を利用してシングルスレッドベースの非同期処理が可能 ノンブロッキング I/O が無い マルチスレッドが無い Node.js とは

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

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

  7. 本日の内容

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

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

  10. コード例( 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

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

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

  13. 本日の内容

  14. 主要なライブラリは以下 今回利用するライブラリ ※上記に依存したライブラリも必要

  15. 起動には以下のライブラリが必要 express の利用(1/2) ※ formidable は POST を利用する場合に必要

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

  17. 起動には以下のライブラリが必要 waz-storage.js の利用(1/2) ※注 Compute Storage は未サポート

  18. ストレージサービスを操作可能 waz-storage.js の利用(2/2) // アカウント情報の初期化 varwaz = require('waz-storage'); waz.establishConnection( { accountName: ‘accountname', accountKey: ‘accountKey', useSsl: true } ); //ブロブのアップロード waz.blobs.container.find('container1', function(err, container1) { varfs = require('fs');var stream = fs.createReadStream(path); varuploader = container1.upload(filename, stream, files.upload.type, {'x-ms-mymetadata': 'value'}, function(err, block) { }, function(err, blob) { }); });

  19. 本日の内容

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

  21. C# のコードから起動する Windows Azure SDK 1.4以前 varproc = new Process(); varprocStartInfo = 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();

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

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

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

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

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

  27. 本日の内容

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

  29. ご参考 • Windows 上で npmの代替ツールが存在する • ryppi.py と呼ばれる Python ツール • 詳しくは本家サイトへ • https://github.com/japj/ryppi • 利用方法例( express をインストール ) > python ryppi.py install express Installing http://registry.npmjs.org/express/-/express-2.4.7.tgz into .\lib\express ... Checking dependencies for express ...

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

  31. リファレンス Windows Azure Platform デベロッパー センターhttp://msdn.microsoft.com/ja-jp/windowsazure/ What’s New in Windows Azure http://msdn.microsoft.com/en-us/library/windowsazure/gg441573.aspx Worker Role Scheme http://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

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

More Related