convince bosses and clients
Today's topics
- What is Node.js ?
- Is there any success story ?
- Making the good choices when starting a project
Vladimir de Turckheim
- Software engineer @ Steamulo
- Former cyber-security consultant
- JavaScript full stack engineer
- DevOps
- Open-Source contributor
What is Node.js ?
A brief history of Node.js
- Created in 2009
- Used to be sponsored by Joyent
- 2011: NPM is introduced
- DEC 2014: a fork (iojs) is created due to internal conflicts
- JUN 2015 creation of the Node.js fundation
- SEP 2015 iojs and Node.js are merged in Node.js 4
Version support
NPM
- NPM is the package manager for Node.js
- It is now also used for managing dependencies in most modern JavaScript applications
- npmjs.com is the most popular module repository in the world
The event loop
Asynchronous programming
'use strict';
// CommonJS import syntax
// 'http' is a standard library
var http = require('http');
// pseudo database
var database = require('fake-database');
var server = http.createServer((request, response) => {
// each time a connection is made, this function is called
// decorate response with header
response.writeHead(200, {'Content-Type': 'text/plain'});
// add content and end process
database.getData((err, result) => {
response.end(result);
// The call of `response.end` signals that the callback treatment is done
});
});
server.listen(3000);
console.log('Server listenning on http://localhost:3000');
Asynchronous programming II
'use strict';
setTimeout(() => {
console.log('hello');
}, 1000);
console.log('world');
results in
user@host:~$ node helloWorld.js
world
hello
Is there any success story ?
Paypal
Compared to the same application in Java:
-
Built almost twice as fast with fewer people
-
Written in 33% fewer lines of code and 40% fewer files
-
Double the requests per seconds
-
35% decrease in the average response time
source: paypal-engineering.com
Node.js reduces development costs !
- All black Friday mobile traffic is handled by Node.js
- Servers did not go over 1% CPU
- Team deployed a new version while 200,000,000 users were online
- Mobile traffic is handled by Node.js servers
- Went from 30 servers to 3
- Application is 20 times faster
Some big Node.js adopter
Making the good choices when starting a project
Use if you want
- intensive I/O
- real time features
- scalability
- a rich module ecosystem (NPM)
- to build API
- to build streaming applications
Don't use if you want
- intensive CPU tasks
- to employ developers who are not used to produce elegant and maintainable code
- to employ developers who are not able to understand asynchronous systems
To node or not to node ?
framework ?
- Express is still popular but might not be relevant anymore
- hapijs is a popular high level framework with modern concepts and security features
- Koa is closer to Node.js native API
So if you want to build with stability, security, and structure in mind, i would personally recommend hapijs. On the other hand, if you want to learn everything, build piece by piece, and code closer to node-core, I’d recommend Koa.
Jonathan Ong, Koa developer
tools ?
- No need for babel, traceur or TypeScript: Node.js ES6 is enough
- Need a good test runner and assertion library
- Code style enforcement has to be done
Production ?
- Node.js can run as a service
- There is process managers for Node.js
- Hide your Node.js server behind a reverse proxy that will handle TLS or other CPU demanding tasks
Conclusion
- Development costs are reduced
- Code verbosity is reduced (less code, less bugs)
- Hosting fees are reduced
- Only one language on the server and the client: no need for anyone else but JavaScript developpers
- Node.js is mature
- Community is extremely active
- Some communities such as hapijs' are dedicated to code quality, stability and maintainability. Tools are produced to help achieve those goals
Any
questions ?
Node.js: how to convince
By Vladimir de Turckheim
Node.js: how to convince
- 1,623