how to build mobile api with node.js

Post on 06-Sep-2014

440 Views

Category:

Documents

3 Downloads

Preview:

Click to see full reader

DESCRIPTION

Node-pocalypse is coming! Soon everything will be written in JavaScript.

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/

http://www.lego.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