KEMBAR78
An introduction to Node.js application development | PPTX
Introduction to Node.js application
development
Dr. Jayaraj Poroor
Founder & CEO, Shelloid
http://shelloid.com http://shelloid.org
GTech TFG, Jan 21 2015
About Shelloid
Open Source Technology (http://shelloid.org)
Operational Log Intelligence (http://shelloid.com)
Server-side technology requirements
● Performance
o Need optimized execution
● Concurrency
o Need to support many concurrent client requests
● Library support
o e.g., database interfacing.
● Framework support
o For rapid application development.
Node.JS
● Performance
o Google’s V8 VM with native JIT compilation
● Concurrency
o Asynchronous I/O (libuv) + clustering
● Library support
o 39K projects in Github
● Framework support
o e.g., Express.JS
Synchronous vs Asynchronous I/O
● Synchronous I/O
o Thread blocks till I/O request is complete.
o e.g., $result = mysql_query(“....”); //PHP
● Asynchronous I/O
o Thread does not block
o Uses callback mechanism to notify completion
o e.g., conn.query(“...”, function(err, rows) { }
);
Node.JS Threading model
1. Single computational thread
o Non-blocking, interleaved request processing
o Background worker threads for I/O processing
2. Clustering to utilize multi-core machines
3. No shared memory between cluster
processes.
Node.JS : When to use
● Great for
o I/O-centric applications
 e.g., DB queries, File I/O , network I/O,
invocation of other web services.
o Real-time communication
 WebSockets, HTTP long polling
● Not so great for
o Compute-centric applications
 e.g., High-end machine learning backend
Event Loop Illustrated
http://www.geekgirl.io/understanding-the-event-loop-in-nodejs/
Anatomy of a “hello world” Node.js
var http = require('http');
var server =
http.createServer(function (req, res) {
res.writeHead(200,
{'Content-Type': 'text/html'});
res.end('<h1>Hello World</h1>');
});
server.listen(3000);
No separate HTTP
engine like Apache
required.
Command:
node app.js
Serving a file
Code source: https://github.com/substack/stream-handbook
Buffers the entire file in memory.
● Inefficient for large files.
● Client needs to wait till entire file
is read.
Node.js Streams
● Data served in chunks.
● Data event fires whenever a new
chunk is ready.
Code source: Node.js in Action
Streams can be piped!
File stream (input) is piped to the
response stream (output).
The response will employ chunked
Transfer-Encoding.
Code source: https://github.com/substack/stream-handbook
Package management
● npm (Node Package Manager)
o Provides simple & powerful package management.
o Reads module dependencies from package.json
o Typical usage: npm install or npm update.
o Can store all dependent modules locally or globally
A sample package.json
{
"name": "SomeApp",
"description": "SomeApp Web Application",
"version": "0.0.1",
"private": true,
"dependencies": {
"express": "3.6.0",
"connect": "2.15.0",
"mysql": "*",
}
}
Secure HTTP with Node.js
Code source: Node.js in Action
Key and certificate files provided.
Use gpg, openssl etc. to generate key
and CSR.
Connect framework: Modular web apps
Install:
npm install connect
Connect: usage Create a Connect ‘app’.
● Will store all middleware.
● Itself just a function.
Create a middleware ‘stack’.
Requests will execute middleware
functions till ‘next()’ is not called
or end of stack is reached.
Code source: https://www.npmjs.org/package/connect
Connect: usage (2)
● Middleware can be mounted
on specific URL endpoints.
● Does basic routing.
● Error handler middleware.
Create Connect-enabled server.
Code source: https://www.npmjs.org/package/connect
OR
Example Connect middlewares
Serving static files Static middleware
configured with the
folder from which
files are served.
Express: Lightweight web framework
Code Source: https://www.npmjs.org/package/express
Routing
Bootstrapping Express application
express -e
output
Rendering views with Express
Express configured
with the views folder.
View engine set as
ejs.
Looks up index.ejs in
the views folder.
View lookup
Source: Node.js in Action
Passing data to views
Data passed to the
view.
photos is an array.
An example view
photos array
accessed here.
title variable
accessed.
Database connectivity
npm install mysql
var mysql = require('mysql');
var connection = mysql.createConnection({
host : 'localhost',
user : 'me',
password : 'secret'
});
connection.connect();
connection.query('...', function(err, rows, fields) {
if (err) throw err;
connection.end();
}); https://github.com/felixge/node-mysql
npms available for virtually
any SQL/NoSQL
database!
Query completes
only when the
callback is invoked!
Authentication
● passport.js
o Authentication middleware for node.js.
o 140+ authentication strategies.
o Supports OpenID and OAuth
o http://passportjs.org
o Session data can be serialized into a store like
Redis.
npm install passport
Read more
● Node.js in Action
● http://expressjs.com
● http://www.nodebeginner.org/
Using Shelloid
npm install -g shelloid
shelloid app-folder [env name]
Learn more at http://shelloid.org
Requires
admin/super user
privilege
Dr. Jayaraj Poroor
Founder, Shelloid Systems
Open source cloud-ready Node.js application server
jayaraj@shelloid.com
http://shelloid.com
Thank You

An introduction to Node.js application development

  • 1.
    Introduction to Node.jsapplication development Dr. Jayaraj Poroor Founder & CEO, Shelloid http://shelloid.com http://shelloid.org GTech TFG, Jan 21 2015
  • 2.
    About Shelloid Open SourceTechnology (http://shelloid.org) Operational Log Intelligence (http://shelloid.com)
  • 3.
    Server-side technology requirements ●Performance o Need optimized execution ● Concurrency o Need to support many concurrent client requests ● Library support o e.g., database interfacing. ● Framework support o For rapid application development.
  • 4.
    Node.JS ● Performance o Google’sV8 VM with native JIT compilation ● Concurrency o Asynchronous I/O (libuv) + clustering ● Library support o 39K projects in Github ● Framework support o e.g., Express.JS
  • 5.
    Synchronous vs AsynchronousI/O ● Synchronous I/O o Thread blocks till I/O request is complete. o e.g., $result = mysql_query(“....”); //PHP ● Asynchronous I/O o Thread does not block o Uses callback mechanism to notify completion o e.g., conn.query(“...”, function(err, rows) { } );
  • 6.
    Node.JS Threading model 1.Single computational thread o Non-blocking, interleaved request processing o Background worker threads for I/O processing 2. Clustering to utilize multi-core machines 3. No shared memory between cluster processes.
  • 7.
    Node.JS : Whento use ● Great for o I/O-centric applications  e.g., DB queries, File I/O , network I/O, invocation of other web services. o Real-time communication  WebSockets, HTTP long polling ● Not so great for o Compute-centric applications  e.g., High-end machine learning backend
  • 8.
  • 9.
    Anatomy of a“hello world” Node.js var http = require('http'); var server = http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/html'}); res.end('<h1>Hello World</h1>'); }); server.listen(3000); No separate HTTP engine like Apache required. Command: node app.js
  • 10.
    Serving a file Codesource: https://github.com/substack/stream-handbook Buffers the entire file in memory. ● Inefficient for large files. ● Client needs to wait till entire file is read.
  • 11.
    Node.js Streams ● Dataserved in chunks. ● Data event fires whenever a new chunk is ready. Code source: Node.js in Action
  • 12.
    Streams can bepiped! File stream (input) is piped to the response stream (output). The response will employ chunked Transfer-Encoding. Code source: https://github.com/substack/stream-handbook
  • 13.
    Package management ● npm(Node Package Manager) o Provides simple & powerful package management. o Reads module dependencies from package.json o Typical usage: npm install or npm update. o Can store all dependent modules locally or globally
  • 14.
    A sample package.json { "name":"SomeApp", "description": "SomeApp Web Application", "version": "0.0.1", "private": true, "dependencies": { "express": "3.6.0", "connect": "2.15.0", "mysql": "*", } }
  • 15.
    Secure HTTP withNode.js Code source: Node.js in Action Key and certificate files provided. Use gpg, openssl etc. to generate key and CSR.
  • 16.
    Connect framework: Modularweb apps Install: npm install connect
  • 17.
    Connect: usage Createa Connect ‘app’. ● Will store all middleware. ● Itself just a function. Create a middleware ‘stack’. Requests will execute middleware functions till ‘next()’ is not called or end of stack is reached. Code source: https://www.npmjs.org/package/connect
  • 18.
    Connect: usage (2) ●Middleware can be mounted on specific URL endpoints. ● Does basic routing. ● Error handler middleware. Create Connect-enabled server. Code source: https://www.npmjs.org/package/connect OR
  • 19.
  • 20.
    Serving static filesStatic middleware configured with the folder from which files are served.
  • 21.
    Express: Lightweight webframework Code Source: https://www.npmjs.org/package/express Routing
  • 22.
  • 23.
    Rendering views withExpress Express configured with the views folder. View engine set as ejs. Looks up index.ejs in the views folder.
  • 24.
  • 25.
    Passing data toviews Data passed to the view. photos is an array.
  • 26.
    An example view photosarray accessed here. title variable accessed.
  • 27.
    Database connectivity npm installmysql var mysql = require('mysql'); var connection = mysql.createConnection({ host : 'localhost', user : 'me', password : 'secret' }); connection.connect(); connection.query('...', function(err, rows, fields) { if (err) throw err; connection.end(); }); https://github.com/felixge/node-mysql npms available for virtually any SQL/NoSQL database! Query completes only when the callback is invoked!
  • 28.
    Authentication ● passport.js o Authenticationmiddleware for node.js. o 140+ authentication strategies. o Supports OpenID and OAuth o http://passportjs.org o Session data can be serialized into a store like Redis. npm install passport
  • 29.
    Read more ● Node.jsin Action ● http://expressjs.com ● http://www.nodebeginner.org/
  • 30.
    Using Shelloid npm install-g shelloid shelloid app-folder [env name] Learn more at http://shelloid.org Requires admin/super user privilege
  • 31.
    Dr. Jayaraj Poroor Founder,Shelloid Systems Open source cloud-ready Node.js application server jayaraj@shelloid.com http://shelloid.com Thank You