devops days tel aviv - serverless architecture

83
SERVERLESS ARCHITECTURES

Upload: antons-kranga

Post on 07-Jan-2017

195 views

Category:

Software


1 download

TRANSCRIPT

Page 1: DevOps Days Tel Aviv - Serverless Architecture

SERVERLESS ARCHITECTURES

Page 2: DevOps Days Tel Aviv - Serverless Architecture

~ WHOAMI

▸ Full stack developer ~ 15years

▸ Cloud Architect

▸ DevOps evangelist

▸ Speaker

▸ Marathon runner

ANTONS KRANGA

@acankr

Page 3: DevOps Days Tel Aviv - Serverless Architecture

HOW DO WE WRITE APPS IN 2016

@acankr

Page 4: DevOps Days Tel Aviv - Serverless Architecture

@acankr

Chorr Microservice

Page 5: DevOps Days Tel Aviv - Serverless Architecture

@acankr

Chorr Microservice

runtime

Page 6: DevOps Days Tel Aviv - Serverless Architecture

@acankr

Chorr Microservice

container

package

runtime

Page 7: DevOps Days Tel Aviv - Serverless Architecture

@acankr

Chorr Microservice

cloud

container

package

runtime

deploy

Page 8: DevOps Days Tel Aviv - Serverless Architecture

@acankr

Chorr Microservice

runtime

cloud

container

package

deploy

VM

Page 9: DevOps Days Tel Aviv - Serverless Architecture

@acankr

Chorr Microservice

runtime

cloud

container

VM

package

deploy

RAM

# CPU

$$$ per hour

Page 10: DevOps Days Tel Aviv - Serverless Architecture

@acankr

Chorr Microservice

runtime

cloud

container

VM

package

deploy

RAM

# CPU

$$$ per hour

Scales in 9 minutes*

Page 11: DevOps Days Tel Aviv - Serverless Architecture

WHAT WE CAN DO DIFFERENT IN 2016?

@acankr

Page 12: DevOps Days Tel Aviv - Serverless Architecture

@acankr

cloud

Page 13: DevOps Days Tel Aviv - Serverless Architecture

@acankr

cloud

Container

Page 14: DevOps Days Tel Aviv - Serverless Architecture

@acankr

and runtime

cloud

Container with OS

Page 15: DevOps Days Tel Aviv - Serverless Architecture

@acankr

Chorr Microservice

and runtime

cloud

Container with OS

mount as volume

Page 16: DevOps Days Tel Aviv - Serverless Architecture

@acankr

Chorr Microservice

and runtime

cloud

Container with OS

mount as volume

JCVM Microservice

Schwarzz Microservice

Page 17: DevOps Days Tel Aviv - Serverless Architecture

@acankr

Chorr Microservice

and runtime

cloud

Container with OS

mount as volume

JCVM Microservice

Schwarzz Microservice

$$$ by 100 milliseconds

Scale in milliseconds

Page 18: DevOps Days Tel Aviv - Serverless Architecture

@acankr

Event

Page 19: DevOps Days Tel Aviv - Serverless Architecture

@acankr

Event

Page 20: DevOps Days Tel Aviv - Serverless Architecture

@acankr

IMPORTANT!!!

warm up time

Event

Page 21: DevOps Days Tel Aviv - Serverless Architecture

@acankr

Result

IMPORTANT!!!

warm up time

execution time

Event

Page 22: DevOps Days Tel Aviv - Serverless Architecture

@acankr

IMPORTANT!!!

warm up time

execution time

Constraints

Timeout in seconds

Max number or RAM

Event Result

Page 23: DevOps Days Tel Aviv - Serverless Architecture

LAMBDA

@acankr

- AWS Computing Service

- Designed to reflect async Actor Model

- Resilient and Scaleable

- 512 RAM

- Supports Runtimes- Java- Python- NodeJS- Go (implicitly)

- Max Timeout 5 mins

- Pricing: - 0.20$ per million requests.- Billable 100 milliseconds

Page 24: DevOps Days Tel Aviv - Serverless Architecture

@acankr

Lambda

API Gateway

EVENT SOURCE

Kinesis Data Streams

SNS Queue or Topic data

Lambda

other dataCONSUMER OR EVENT

CRON Job

Page 25: DevOps Days Tel Aviv - Serverless Architecture

LAMBDA DEPLOYMENT

@acankr

Page 26: DevOps Days Tel Aviv - Serverless Architecture

@acankr

LAMBDA

SERVICE

Page 27: DevOps Days Tel Aviv - Serverless Architecture

@acankr

CODE VERSIONS

LAMBDA

V1

SERVICE

Page 28: DevOps Days Tel Aviv - Serverless Architecture

@acankr

CODE VERSIONS

LAMBDA

V1

SERVICE ALIAS

LATEST

Page 29: DevOps Days Tel Aviv - Serverless Architecture

@acankr

CODE VERSIONS

LAMBDA

V1

V2

SERVICE ALIAS

LATEST

Page 30: DevOps Days Tel Aviv - Serverless Architecture

@acankr

CODE VERSIONS

LAMBDA

V1

V2

V3

SERVICE ALIAS

LATEST

Page 31: DevOps Days Tel Aviv - Serverless Architecture

@acankr

CODE VERSIONS

LAMBDA

V1

V2

V3

SERVICE ALIAS

LATEST

V4

Page 32: DevOps Days Tel Aviv - Serverless Architecture

@acankr

CODE VERSIONS

LAMBDA

V1

V2

V3

SERVICE ALIAS

STABLE

V4

LATEST

Page 33: DevOps Days Tel Aviv - Serverless Architecture

@acankr

CODE VERSIONS

LAMBDA

V1

V2

V3

SERVICE ALIAS

STABLE

V4

ENV

DEV

TEST

PROD

LATEST

Page 34: DevOps Days Tel Aviv - Serverless Architecture

EXPOSE LAMBDA

@acankr

Page 35: DevOps Days Tel Aviv - Serverless Architecture

@acankr

API Gateway

Lambda

+

- API Management Tool

- Authorization + Custom Authorizer

- Defines: Environment Variables for Lambda

- Can be defined with Swagger and imported

- Code Supports Versioning

- Integrated with CloudWatch

- Lambda Containers are Cached for 5 minutes

- Can be deployed with “apex.run” tool

- User can write files in /tmp

Page 36: DevOps Days Tel Aviv - Serverless Architecture

@acankr

GETPOSTPUTDELETE

dataAPI Gateway Lambda

ajax event

USER

Page 37: DevOps Days Tel Aviv - Serverless Architecture

@acankr

GETPOSTPUTDELETE

dataAPI Gateway Lambda

ajax event

USER

AuthorizerLambda

IdentityService Provider

Page 38: DevOps Days Tel Aviv - Serverless Architecture

@acankr

GETPOSTPUTDELETE

dataAPI Gateway Lambda

ajax event

USER

DB_URLDB_PORTDB_USER

Variables

AuthorizerLambda

IdentityService Provider

Page 39: DevOps Days Tel Aviv - Serverless Architecture

STAGEFUL BACKEND

@acankr

Page 40: DevOps Days Tel Aviv - Serverless Architecture

@acankr

GETPOSTPUTDELETE

dataAPI Gateway

ajax event

USER

DB_CONNECTION_STRING

Variables

dynamodb

Page 41: DevOps Days Tel Aviv - Serverless Architecture

@acankr

GETPOSTPUTDELETE

dataAPI Gateway

ajax event

USER

DB_URLDB_PORTDB_USER

Variables

Lambda

VPC

Page 42: DevOps Days Tel Aviv - Serverless Architecture

@acankr

GETPOSTPUTDELETE

dataAPI Gateway Lambda

ajax event

USER

DB_URLDB_PORTDB_USER

Variables

VPC

ACCESS POLICY

ec2:CreateNetworkInterfaceec2:AttachNetworkInterface

Page 43: DevOps Days Tel Aviv - Serverless Architecture

TODAYS MISSION

@acankr

Page 44: DevOps Days Tel Aviv - Serverless Architecture

@acankr

BUILD A SERVERLESS MAFIA GAME

WE HAVE GROUP OF PLAYERS THEY ALL HIDE THEIR IDENTITIES

YOU ARE THE DETECTIVE

Page 45: DevOps Days Tel Aviv - Serverless Architecture

@acankr

BUILD A SERVERLESS MAFIA GAME

MAFIA KNOWS THEIR IDENTITIES INNOCENT PEOPLE DON’T

Page 46: DevOps Days Tel Aviv - Serverless Architecture

@acankr

STAGES OF THE GAME

#1 NIGHT: MURDER

MAFIA AWAKENS MAFIA KILLS INNOCENT

#2 DAY: ACCUSATION

EVERYBODY AWAKENS PLAYERS ACCUSE EACH OTHER

MAFIA NEVER ACCUSES THEMSELVES INNOCENT ACCUSES EVERYBODY

#3 DAY: JUDGEMENT

DETECTIVE READS ALL ACCUSATIONS AND BRINGS ONE PLAYER TO THE JUDGEMENT

PLAYER UNVEILS HER IDENTITY AND LEAVES THE GAME

#4 GAME CONTINUES

Page 47: DevOps Days Tel Aviv - Serverless Architecture

@acankr

GAME DESIGN

User

01-new-game

API Gateway DynamoDB

02-game-state

03-night-murder

04-daily-accusation

05-user-judgement

GET

http

Page 48: DevOps Days Tel Aviv - Serverless Architecture

@acankr

DEPLOYMENT DESIGN

Makefile environment

game

Terraform Scripts

solutions

main.py game_controller.py

main.py

Page 49: DevOps Days Tel Aviv - Serverless Architecture

@acankr

DEPLOYMENT DESIGN

Makefile environment

game

Terraform Scripts

solutions

main.py game_controller.py

main.py

terraform.tfvars

Page 50: DevOps Days Tel Aviv - Serverless Architecture

@acankr

DEPLOYMENT DESIGN

Makefile environment

game

Terraform Scripts

solutions

main.py game_controller.py

main.py

terraform.tfvars

MAKEFILE

packageplanapplydestroy

all(default)

Page 51: DevOps Days Tel Aviv - Serverless Architecture

https://github.com/akranga/mafia-serverless

WORKSHOP MATERIALShttps://goo.gl/mQI6wi

Page 52: DevOps Days Tel Aviv - Serverless Architecture

LESSONS LEARNED

@acankr

Page 53: DevOps Days Tel Aviv - Serverless Architecture

DESIGN FOR 100MILLIS STEPS

@acankr

Page 54: DevOps Days Tel Aviv - Serverless Architecture

OPTIMIZE WARMUP TIME

@acankr

Page 55: DevOps Days Tel Aviv - Serverless Architecture

CACHE OUTSIDE OF HANDLER

@acankr

Page 56: DevOps Days Tel Aviv - Serverless Architecture

AVOID CALLING LAMBDA FROM LAMBDA

@acankr

Page 57: DevOps Days Tel Aviv - Serverless Architecture

GROUP HANDLER METHODS (SRP)

@acankr

Page 58: DevOps Days Tel Aviv - Serverless Architecture

THINK OF CONFIGURATION MANAGEMENT

@acankr

Page 59: DevOps Days Tel Aviv - Serverless Architecture

NO DEBUG IN LAMBDA ;(

@acankr

Page 60: DevOps Days Tel Aviv - Serverless Architecture

WRITE UNIT TESTS

@acankr

Page 61: DevOps Days Tel Aviv - Serverless Architecture

THEN DEPLOY TO TEST ENVIRONMENT

@acankr

Page 62: DevOps Days Tel Aviv - Serverless Architecture

THEN RUN INTEGRATION TESTS

@acankr

Page 63: DevOps Days Tel Aviv - Serverless Architecture

SERVERLESS BLUEPRINTS

@acankr

Page 64: DevOps Days Tel Aviv - Serverless Architecture

STATIC WEBSITE

@acankr

Page 65: DevOps Days Tel Aviv - Serverless Architecture

@acankr

- Highly Available Serverless Storage

- Scaleable and Elastic

- Replicated across 2 availability zones

- Supports HTTP requestsS3

Page 66: DevOps Days Tel Aviv - Serverless Architecture

@acankr

Static HTML

CSS/Media

Rich JavaScript AppsGET

http

S3 StorageCloudFrontUSER

Page 67: DevOps Days Tel Aviv - Serverless Architecture

@acankr

Static HTML

CSS/Media

Rich JavaScript Apps

R53 Domain

GET

http

example.com

S3 StorageCloudFrontUSER

Page 68: DevOps Days Tel Aviv - Serverless Architecture

@acankr

Static HTML

CSS/Media

Rich JavaScript Apps

COST MODEL: $0.03 GiB per Month

S3 HIGHLY AVAILABLE STORAGE

- Covered by AWS S3 SLA

- Durability: 99.999999999%

- Availability: 99.99%

SLOW WRITE OPERATIONS

R53 Domain

GET

http

example.com

S3 StorageCloudFrontUSER

Page 69: DevOps Days Tel Aviv - Serverless Architecture

DYNAMIC WEBSITE

@acankr

Page 70: DevOps Days Tel Aviv - Serverless Architecture

@acankr

GET

Static HTML

CSS/Media

Rich JavaScript AppsS3 StorageCloudFront

GETPOSTPUTDELETE

Dynamic DataData from DatabaseData from External Service

dataAPI Gateway Lambda

ajax

http

eventUSER

Page 71: DevOps Days Tel Aviv - Serverless Architecture

HIPSTER WEB PORTAL

@acankr

Page 72: DevOps Days Tel Aviv - Serverless Architecture

GOOD PORTAL NEEDS CMS

@acankr

Page 73: DevOps Days Tel Aviv - Serverless Architecture

"...USE GIT AS THE BASIS FOR A LIGHTWEIGHT CMS, WITH TEXT-BASED EDITING

FORMATS. GIT HAS POWERFUL FEATURES FOR TRACKING CHANGES AND

EXPLORING ALTERNATIVES, WITH A DISTRIBUTED STORAGE MODEL THAT IS FAST

IN USE AND TOLERANT OF NETWORKING ISSUES."

ThoughtWorks Technology Radar https://www.thoughtworks.com/radar/techniques/git-based-cms-git-for-non-code

assess since May 2015

BEST CMS

@acankr

Page 74: DevOps Days Tel Aviv - Serverless Architecture

CODECOMMIT

@acankr

- Git Repository Service

- Backed by S3 storage

- Price: $1 per user

- Only: us-west-1 region

Page 75: DevOps Days Tel Aviv - Serverless Architecture

CODECOMMIT

@acankr

Lambda

+

- Lambda doesn’t have GIT client.

- You can “statically link” git libraries with git2go library (libgit2)

- To read SSH key file with Lambda it must be stored in “/tmp” directory

- SSH private key must have 600 credentials

- SSH private key must be owned by user “sandbox”

Page 76: DevOps Days Tel Aviv - Serverless Architecture

@acankr

USER

GET

Static HTML

CSS/Media

Rich JavaScript AppsS3 StorageCloudFront

GETPOSTPUTDELETE

Dynamic DataData from DatabaseData from External Service

dataAPI Gateway Lambda

ajax

http

event

Lambda

push

EDITOR

event

document commit

PUT

Checkout documentRender or post-process Publish

CodeCommit

Page 77: DevOps Days Tel Aviv - Serverless Architecture

ALTERNATIVES

@acankr

Page 78: DevOps Days Tel Aviv - Serverless Architecture

@acankr

CompilationLambda

push

DEV

event

document commit

Checkout Compile

CodeCommit

PUT

S3

GET

Checkout Compile

TestingLambda

if needed long running tests

VMs

CREATE

DeploymentLambda

Lambda

SNS

ChatOps

Page 79: DevOps Days Tel Aviv - Serverless Architecture

ALTERNATIVES

@acankr

Page 80: DevOps Days Tel Aviv - Serverless Architecture

@acankr

- SERVICE FABRIC

- Runtimes: - ASP .NET (1Core)- NodeJS- etc

- Deployment:- REST API- PowerShell

- GOOGLE CLOUD FUNCTIONS (ALPHA)

- Runtimes: - NodeJS (only)

- Deployment:- gcloud

Page 81: DevOps Days Tel Aviv - Serverless Architecture

TAKEAWAYS

@acankr

Page 82: DevOps Days Tel Aviv - Serverless Architecture

@acankr

https://www.manning.com/books/aws-lambda-in-action

Book: AWS Lambda in Action MEAP

Begin in 2016 February

Publication: March 2017

Author: Danilo Poccia

ISBN: 9781617293719

Page 83: DevOps Days Tel Aviv - Serverless Architecture

PAY FOR ONLY WHAT YOU USE

@acankr