how to build mobile api with node.js
Post on 06-Sep-2014
440 Views
Preview:
DESCRIPTION
TRANSCRIPT
HOW TO BE PREPARED FOR NODE-POCALYPSE
@tomekcejner
THE PRESENTER
TOMEK CEJNER @tomekcejner
APOCALYPSE?
JavaScript
Any application that can be written in JavaScript, will eventually be written in JavaScript.
http://blog.codinghorror.com/the-principle-of-least-power/
Jeff Atwood, 2007
CREATED IN 10 DAYS DIFFICULT CHILDHOOD
FUNCTIONAL DYNAMIC
IN 90’S EVERYBODY NEED A WEBSITE
http://www.amazon.com/
NOW ITS 2010’S EVERYBODY NEEDS MOBILE APP
THAT’S ALL THANK YOU!
BUT, IF…
API
NO API NO PUBLIC API
NO MOBILE PUBLIC API
ARE YOU PREPARED?
WHAT MAKES API MOBILE?
LOW BANDWIDTH HIGH LATENCY
NETWORK CONDITIONS VARY
Mobile device is
SEND ONLY WHAT IS NEEDED
SCREEN-ORIENTED NO CRUD-OVER-AIR
AVOID MULTIPLE ROUNDTRIPS CAUSED BY LAZY DESIGN EVERY REQUEST COUNTS
VERSIONING OR KEEP STABLE CONTRACT
SECURITY AUTHENTICATION
TRANSIT API ABUSE
ANALYTICS
Our approach
PLATFORM APIs
MOBILE API
INTRODUCING Mobster
OAUTH 2.0 AUTHORIZATION
API KEYS
Access control
DATA AGGREGATION DATA FILTERING
ANTI-CORRUPTION LAYER
Translation
PUSH NOTIFICATIONS GATEWAY
Mobile features
ENTER
EVENT-DRIVEN NETWORK PROGRAMS
JAVASCRIPT
Node.js is
V8
LIBUV HTTP-PARSER
JS STANDARD LIBRARY
WHY NODE.JS?
DB
SERVICE
REQUEST
REQUEST
REQUEST
REQUEST
TRADITIONAL WAY
WHAT WEB SERVERS DO MOST THE TIME? THEY WAIT
WHAT THREADS DO MOST THE TIME? THEY SUCK
EVENT LOOP
I/O
REGISTER CALLBACK
OPERATION COMPLETE
YOUR CODE
YOUR CODE
LESS THREADS LESS MEMORY OVERHEAD LESS COMPUTATION (!)
NODE.JS SURVIVAL KIT
Editors
UNIT TESTING
NodeUnit
NodeUnit + Expect.js
NodeUnit
NodeUnit
Mocha
Mocha
PACKAGE MANAGEMENT
pom.xml
CHECK NODE_MODULES TO SCM
WEB FRAMEWORKS
MIDDLEWARE
tomek@dev_laptop$ git push
appuser@server$ git pull appuser@server$ kill process_num appuser@server$ node myapp.js
DEPLOYMENT
MANAGEMENT WITH PM2
https://github.com/unitech/pm2
RUN
RESTART
PROCESS LIST
MONITORING
ZERO-DOWNTIME RELOAD HEALTH CHECK API ENDPOINT
LOG BROWSING LINUX STARTUP SCRIPTS
Fluff
Automate
ANSIBLE
SPEAKS YOUR LANGUAGE AGENTLESS
Ansible
CODE
GOOGLE: JAVASCRIPT GARDEN
http://bonsaiden.github.io/JavaScript-Garden/
JAVASCRIPT QUIRKS JSLINT & JSHINT TO RESCUE
ASYNCHRONOUS PROGRAMMING, M**********R
ASYNC TO RESCUE
https://github.com/caolan/async
https://github.com/caolan/async
TO NODE OR NOT TO NODE
DEVELOP FAST DEPLOY FAST
IT’S JAVASCRIPT
IT’S JAVASCRIPT NOT SO MATURE
NOT FOR CPU-INTENSIVE JOBS
THANK YOU
top related