April 2017

Global Azure Bootcamp

Global Sponsors

Local Sponsors

About Me

  • David Fekke
  • Chief Mobile Architect for Swyft Technology
  • Why is a Mobile developer giving an Azure presentation?
  • 20+ Years building Web Applications
  • .NET, Java, PHP, ColdFusion and Node.js
  • Co-Organize JaxNode User Group & JaxARCSIG


Hosting Applications

  • Run locally
  • Deploy to Server (in a data center hopefully)
  • On Premise
  • Co-Location in rack space
  • Cloud Hosting (Rackspace, CenturyLink)
  • PAAS (AWS EC2, Azure, Bluemix)
  • Container hosting
  • Serverless (Lambda, Azure Functions)

Micro-Service apps

  • Composed of many services
  • Sometimes called micro-services
  • May have less than 200 lines of code
  • One function per service
  • Logging important!!!

Randrr's Cloud solution

  • AWS EC2
  • Deploying Docker and Kubernetes
  • Using Kafka and Cassandra for DBs
  • Microservices written in GO and Node.js
  • Node service was running in 50 MBs
  • Rewrote into GO, now 1 MB
  • No vendor lockin

Docker Issues

  • Still need to deploy VMs
  • VMs can be elastically deployed, but still need have some running all the time
  • Services running in Python or JavaScript become expensive
  • Services written in Java can have long warmup times

Lambda or Function apps

  • Don't need to manage infrastructure
  • Services can be written as simple functions
  • Deployed through Portal UI or through command line tools like the azure-cli
  • Available on Azure, AWS, IBM OpenWhisk and now Firebase functions

AWS Lambda

  • Written in JS, Java, Python or C#
  • Bound to events or HTTP requests
  • 128 MB RAM Default per function
  • Monitor logging with CloudWatch

Azure Functions

  • Azure version of AWS Lambda
  • Similar model
  • NPM install modules through console

Advantages of Serverless

  • Lowest Cost hosting
  • Simple development model
  • Simple deployment
  • Don't have to worry about load scheduling
  • Scales automagically

$0.20 per 1 million requests

Disadvantage of Serverless

  • Local development a challenge
  • No NPM Support (Azure has NPM)
  • Debugging threw logging

Executing Functions

  • Triggered off of events
  • HTTP endpoints
  • Schedule (cron)
  • fired on file uploads or queues

Ocean Disc example


  • Mobile app had to store reports
  • Upload to S3 storage
  • Process files based on upload event
  • Call REST based service
  • Accomplished threw AWS Lambda

We are going to need a bigger framework!

Serverless Framework

  • Formerly Called Jaws
  • Formally AWS only
  • Build entire apps from Lambda/Functions
  • Organize functions
  • Local development and testing
  • resource management (APIs and Databases)
  • Multi-region development
  • Now on IBM OpenWhisk

method signature

module.exports.hello = (context, data) => {
  const response = {
      message: 'Hello World!',
      input: data.paramName,

module.exports.hello = (event, context, callback) => {
  const response = {
    statusCode: 200,
    body: JSON.stringify({
      message: 'Hello World!',
      input: event,

  callback(null, response);

AWS Lambda method

Serverless CLI

  • $ sls create -t azure-nodejs --path <path-to-app>
  • $ sls deploy
  • $ sls deploy --function functionName
  • $ sls invoke --function functionName
  • $ sls logs -f hello