Serverless Architecture
A Love Story!


Linda Nichols
@lynnaloo
Work @ Microsoft
Linda Nichols

@lynnaloo

Norfolk.js
norfolkjs.org




@lynnaloo
Today you're going to fall in love with Serverless Architecture...
But first, you have to break-up with your servers.


@lynnaloo

@lynnaloo
This story has all of the pieces of a typical romance:
-
Break-ups and decoupling
-
Commitment (and no-commitment)
-
Highly cohesive relationships
-
High availability and dedication
-
Support and growth
But first, what is "serverless"* architecture?


@lynnaloo
* "Serverless" is just a catchy, made-up, marketing term.
(Kind of like, "Cloud")


@lynnaloo
Serverless Architecture?
It isn't about a platform or compute product...


@lynnaloo
Serverless Architecture?
It's about the events!





Serverless Architecture?
Serverless Architecture is an event-driven system that uses remote services (and likely a FaaS product) without concern for the operations of the environment where the code is executed.

@lynnaloo

@lynnaloo
Functions-as-a-Service (Faas)
Stateless functions running in execution environments managed by a service provider (not you!).


@lynnaloo
Functions-as-a-Service
FaaS is the heart of Serverless Architecture.

Functions-as-a-Service (FaaS)
-
Fully-managed
-
Stateless and ephemeral
-
No worries about infrastructure
-
Focus on the code
-
Only pay when (if) you use

@lynnaloo

@lynnaloo

Your code could be completely free...





@lynnaloo
Functions-as-a-Service (FaaS)


@lynnaloo
AWS Lambda
Most popular kid in school

@lynnaloo
AWS Lambda
-
First on the market
-
Focus on performance and scale
-
Runtime Layers
-
Custom Runtimes
-
Step Functions


@lynnaloo
Azure Functions
The Developer's Favorite

@lynnaloo
Azure Functions
-
Open-source Runtimes
-
Developer Tools/Plugins
-
Offline Development
-
Premier Tier
-
Logic Apps and Event Grid


@lynnaloo
IBM Cloud Functions
They do really mean open

@lynnaloo
IBM Cloud Functions
-
Backed by OpenWhisk
-
Official runtimes for php and Swift
-
Truly open, which helps with licensing issues
-
Support for On-prem


@lynnaloo
Google Cloud Functions
Finally in GA!

@lynnaloo
Google Cloud Functions
-
As of last summer, GA with Node.js and Python (Beta)
-
Custom runtimes in the form of Cloud Run (new from Google Next)
-
Great developer experience and quick out-of-the-box apps
Serverless Architecture
-
Storage
-
IoT
-
Database Actions
-
API Gateways
-
Queues
-
Logging

@lynnaloo
Functions can be triggered by other cloud services

Functions are Microservices
-
One function, one function
-
Lightweight and fast
-
Reusable
-
Independent deployments
-
Work together to power applications

@lynnaloo

@lynnaloo
Did someone say decoupling?


@lynnaloo
Serverless Architecture


@lynnaloo
Your perfect match!
Serverless Architecture
-
Dedicated
-
Flexible
-
Supportive
-
Resilient
-
Growth potential
-
Speaks many languages!
What if I'm scared of commitment?

@lynnaloo





@lynnaloo
The cloud platforms do have analogous services...
Relationship Counseling



@lynnaloo
Embrace tools and frameworks!

Serverless Framework
-
Open-source
-
Supports various languages
-
Abstracts provider-specific tasks
-
Multi-provider plugin system
-
Scaffold and deploy using CLI

@lynnaloo
What it looks like
# Install serverless cli
$ npm install serverless -g
# Create Azure Service
$ serverless create --template azure-nodejs --path cat-name-service
# Change into the service directory
$ cd cat-name-service
# Deploy to cloud provider
$ serverless deploy -v
cat-name-service/
package.json
serverless.yml
handler.js
dog-name-service/
package.json
serverless.yml
handler.js

@lynnaloo
Azure Functions Handler
'use strict';
const catNames = require('cat-names');
function getCatName(context, req) {
context.log('Getting a random cat name.');
context.done(null, { body: `Your cat name is ${catNames.random()}.` });
}
module.exports = getCatName;
(then package and/or deploy it!)

@lynnaloo

@lynnaloo

But what about the events?

@lynnaloo


@lynnaloo
Cloud Events
a specification for describing event data in a common way
-
Azure Event Grid natively supports events in the CloudEvents JSON schema
-
Serverless Framework's Event Gateway
Demo Time


@lynnaloo
Audience Participation!


@lynnaloo
Mention @thesecatstweet in a tweet with the hashtag #valentinebot
Valentine-Bot

@lynnaloo
-
Twitter API for Node.js
-
Scheduler service
-
Storage
-
FaaS Service
-
Framework or Toolset
Azure Logic Apps






@lynnaloo
Thank You!
@lynnaloo


Serverless Architecture: A Love Story
By Linda Nichols
Serverless Architecture: A Love Story
A love story about Serverless Architecture. Presented to Philly ETE 2019 Conference.
- 1,287