making the switch to 'serverless' full-stack … 2017 making the switch to...
TRANSCRIPT
![Page 1: Making the Switch to 'Serverless' Full-Stack … 2017 Making the Switch to “Serverless” Full-Stack Development © 2017 AktaryTech 3 Agenda • Serverless in Practice • Architecture](https://reader031.vdocuments.us/reader031/viewer/2022020303/5afcf6197f8b9a68498c3594/html5/thumbnails/1.jpg)
SATURN 2017
Title of the Presentation Goes Here © 2017 [Copyright Owner[s]]Making the Switch to “Serverless” Full-Stack Development © 2017 AktaryTech 1
Making the Switch to “Serverless” Full-Stack DevelopmentDavid Aktary Founder, AktaryTech
![Page 2: Making the Switch to 'Serverless' Full-Stack … 2017 Making the Switch to “Serverless” Full-Stack Development © 2017 AktaryTech 3 Agenda • Serverless in Practice • Architecture](https://reader031.vdocuments.us/reader031/viewer/2022020303/5afcf6197f8b9a68498c3594/html5/thumbnails/2.jpg)
SATURN 2017
Making the Switch to “Serverless” Full-Stack Development © 2017 AktaryTech 2
Agenda
• Introduction • “Serverless” Overview
• What it is • Benefits • Platforms & Tools
![Page 3: Making the Switch to 'Serverless' Full-Stack … 2017 Making the Switch to “Serverless” Full-Stack Development © 2017 AktaryTech 3 Agenda • Serverless in Practice • Architecture](https://reader031.vdocuments.us/reader031/viewer/2022020303/5afcf6197f8b9a68498c3594/html5/thumbnails/3.jpg)
SATURN 2017
Making the Switch to “Serverless” Full-Stack Development © 2017 AktaryTech 3
Agenda
• Serverless in Practice • Architecture • Greenfield • Migrations
• Impact on Workflow • Pitfalls and Gotchas • Workshop
![Page 4: Making the Switch to 'Serverless' Full-Stack … 2017 Making the Switch to “Serverless” Full-Stack Development © 2017 AktaryTech 3 Agenda • Serverless in Practice • Architecture](https://reader031.vdocuments.us/reader031/viewer/2022020303/5afcf6197f8b9a68498c3594/html5/thumbnails/4.jpg)
SATURN 2017
Making the Switch to “Serverless” Full-Stack Development © 2017 AktaryTech 4
Caveats
• Rapidly changing • AWS more mature • Not exhaustive • Node.js-focused • Developer-centric
![Page 5: Making the Switch to 'Serverless' Full-Stack … 2017 Making the Switch to “Serverless” Full-Stack Development © 2017 AktaryTech 3 Agenda • Serverless in Practice • Architecture](https://reader031.vdocuments.us/reader031/viewer/2022020303/5afcf6197f8b9a68498c3594/html5/thumbnails/5.jpg)
SATURN 2017
Making the Switch to “Serverless” Full-Stack Development © 2017 AktaryTech 5
Introduction
• BS Computer Science, Michigan • MBA, Duke • 8 Years at IBM • 3 Years VP Tech @ Nestle Digital Agency • Founder of AktaryTech
• Custom Dev Shop • Full-Stack JS Specialists • LA & Austin
![Page 6: Making the Switch to 'Serverless' Full-Stack … 2017 Making the Switch to “Serverless” Full-Stack Development © 2017 AktaryTech 3 Agenda • Serverless in Practice • Architecture](https://reader031.vdocuments.us/reader031/viewer/2022020303/5afcf6197f8b9a68498c3594/html5/thumbnails/6.jpg)
SATURN 2017
Title of the Presentation Goes Here © 2017 [Copyright Owner[s]]Making the Switch to “Serverless” Full-Stack Development © 2017 AktaryTech 6
SATURN 2017
“Serverless” Overview
![Page 7: Making the Switch to 'Serverless' Full-Stack … 2017 Making the Switch to “Serverless” Full-Stack Development © 2017 AktaryTech 3 Agenda • Serverless in Practice • Architecture](https://reader031.vdocuments.us/reader031/viewer/2022020303/5afcf6197f8b9a68498c3594/html5/thumbnails/7.jpg)
SATURN 2017
Making the Switch to “Serverless” Full-Stack Development © 2017 AktaryTech 7
What it is
The term “serverless” • BaaS: pre-built, 3rd-party application service • FaaS: custom application
Similarities: • Pay-as-you-execute • Managed server • Auto-scaling
![Page 8: Making the Switch to 'Serverless' Full-Stack … 2017 Making the Switch to “Serverless” Full-Stack Development © 2017 AktaryTech 3 Agenda • Serverless in Practice • Architecture](https://reader031.vdocuments.us/reader031/viewer/2022020303/5afcf6197f8b9a68498c3594/html5/thumbnails/8.jpg)
SATURN 2017
Making the Switch to “Serverless” Full-Stack Development © 2017 AktaryTech 8
What it is
Function (“Action”) • Containerized custom-written application code • Should include bundled dependencies & binaries • Memory & execution time limits Triggers (“Events”) • Launches Function execution • Can be another Function Resources • External PaaS/BaaS/FaaS services
Trigger Function
Resource
Resource
Resource
![Page 9: Making the Switch to 'Serverless' Full-Stack … 2017 Making the Switch to “Serverless” Full-Stack Development © 2017 AktaryTech 3 Agenda • Serverless in Practice • Architecture](https://reader031.vdocuments.us/reader031/viewer/2022020303/5afcf6197f8b9a68498c3594/html5/thumbnails/9.jpg)
SATURN 2017
Making the Switch to “Serverless” Full-Stack Development © 2017 AktaryTech 9
What it is
N-Tier
Message-driven
Images from https://martinfowler.com/articles/serverless.html#ACoupleOfExamples
Traditional Serverless
![Page 10: Making the Switch to 'Serverless' Full-Stack … 2017 Making the Switch to “Serverless” Full-Stack Development © 2017 AktaryTech 3 Agenda • Serverless in Practice • Architecture](https://reader031.vdocuments.us/reader031/viewer/2022020303/5afcf6197f8b9a68498c3594/html5/thumbnails/10.jpg)
SATURN 2017
Title of the Presentation Goes Here © 2017 [Copyright Owner[s]]Making the Switch to “Serverless” Full-Stack Development © 2017 AktaryTech 10
SATURN 2017
Benefits
![Page 11: Making the Switch to 'Serverless' Full-Stack … 2017 Making the Switch to “Serverless” Full-Stack Development © 2017 AktaryTech 3 Agenda • Serverless in Practice • Architecture](https://reader031.vdocuments.us/reader031/viewer/2022020303/5afcf6197f8b9a68498c3594/html5/thumbnails/11.jpg)
SATURN 2017
Making the Switch to “Serverless” Full-Stack Development © 2017 AktaryTech 11
Benefits
Source: https://www.slideshare.net/AmazonWebServices/building-a-development-workflow-for-serverless-applications-march-2017-aws-online-tech-talks
![Page 12: Making the Switch to 'Serverless' Full-Stack … 2017 Making the Switch to “Serverless” Full-Stack Development © 2017 AktaryTech 3 Agenda • Serverless in Practice • Architecture](https://reader031.vdocuments.us/reader031/viewer/2022020303/5afcf6197f8b9a68498c3594/html5/thumbnails/12.jpg)
SATURN 2017
Making the Switch to “Serverless” Full-Stack Development © 2017 AktaryTech 12
Benefits: CostBustle Case study*: • “With AWS Lambda, the engineering team now puts zero thought into scaling
applications. There is an extremely low cost for any engineer to deploy production-ready code that will scale. No one has to deal with infrastructure management, so every engineer can focus on building out new features and innovating.”
• “With no operational maintenance of servers, the team can remain small, with half the people normally required to build and operate sites of Bustle’s scale.”
• “Bustle has also experienced approximately 84% cost savings by moving to a serverless architecture.”
Calculator (beta): http://serverlesscalc.com
*Source: https://aws.amazon.com/solutions/case-studies/bustle/
![Page 13: Making the Switch to 'Serverless' Full-Stack … 2017 Making the Switch to “Serverless” Full-Stack Development © 2017 AktaryTech 3 Agenda • Serverless in Practice • Architecture](https://reader031.vdocuments.us/reader031/viewer/2022020303/5afcf6197f8b9a68498c3594/html5/thumbnails/13.jpg)
SATURN 2017
Making the Switch to “Serverless” Full-Stack Development © 2017 AktaryTech 13
Benefits: Cost
Lightweight and low-traffic website • 10,000 hits/day • perhaps 200 ms of execution time per hit at 256MB • → 432,000 requests per month and 2160 GB-sec of compute per month • → about $0.31/mo … less than 1/10th the cost of even a t2.nano, the smallest EC2 instance!
Periodic Scheduled Job • A scheduled job that runs every hour with 1GB RAM for 2 minutes • → 86,400 GB-sec of compute per month and 720 requests per month • → $1.44/mo … still less than 1/3rd of a t2.nano!
Source: https://www.trek10.com/blog/lambda-cost/
![Page 14: Making the Switch to 'Serverless' Full-Stack … 2017 Making the Switch to “Serverless” Full-Stack Development © 2017 AktaryTech 3 Agenda • Serverless in Practice • Architecture](https://reader031.vdocuments.us/reader031/viewer/2022020303/5afcf6197f8b9a68498c3594/html5/thumbnails/14.jpg)
SATURN 2017
Making the Switch to “Serverless” Full-Stack Development © 2017 AktaryTech 14
Benefits: Cost
Function Execution Memory & Time
Requests per Hour Required for Lambda Cost to Equal EC2 Cost
Requests per Second
100 ms @ 128 MB 295,000 81.9
200 ms @ 512 MB 64,000 17.8
200 ms @ 1 GB 34,000 9.4
1 sec @ 1 GB 7,100 2.0
Lambda Breakeven Analysis for an m4.large Instancem4.large, 2 vCPU, 8 GB RAMcosts $0.12/hr or ~$86/month in N. Virginia region.
Source: https://www.trek10.com/blog/lambda-cost/
![Page 15: Making the Switch to 'Serverless' Full-Stack … 2017 Making the Switch to “Serverless” Full-Stack Development © 2017 AktaryTech 3 Agenda • Serverless in Practice • Architecture](https://reader031.vdocuments.us/reader031/viewer/2022020303/5afcf6197f8b9a68498c3594/html5/thumbnails/15.jpg)
SATURN 2017
Making the Switch to “Serverless” Full-Stack Development © 2017 AktaryTech 15
Benefits:12-Factor Architecture
I Codebase Handled by developer (Manage versioning of functions on their own)
II Dependencies Handled by developer, facilitated by serverless platform (Runtimes and packages)
III Configuration Handled by platform (Environment variables or injected event parameters)
IV Backing services Handled by platform (Connection information injected as event parameters)
V Build, release, run Handled by platform (Deployed resources are immutable and internally versioned)
VI Processes Handled by platform (Single stateless containers often used)
VII Port binding Handled by platform (Actions or functions are automatically discovered)
VIII Concurrency Handled by platform (Process model is hidden and scales in response to demand)
IX Disposability Handled by platform (Lifecycle is hidden from the user, fast startup and elastic scale is prioritized)
X Dev/prod parity Handled by developer (The developer is the deployer. Scope of what differs is narrower)
XI Logs Handled by platform (Developer writes to console.log, platform handles log streaming)
XII Admin processes Handled by developer (No distinction between one off processes and long running)
Source: https://developer.ibm.com/opentech/2016/09/06/what-makes-serverless-attractive/
![Page 16: Making the Switch to 'Serverless' Full-Stack … 2017 Making the Switch to “Serverless” Full-Stack Development © 2017 AktaryTech 3 Agenda • Serverless in Practice • Architecture](https://reader031.vdocuments.us/reader031/viewer/2022020303/5afcf6197f8b9a68498c3594/html5/thumbnails/16.jpg)
SATURN 2017
Title of the Presentation Goes Here © 2017 [Copyright Owner[s]]Making the Switch to “Serverless” Full-Stack Development © 2017 AktaryTech 16
SATURN 2017
Platforms & Tools
![Page 17: Making the Switch to 'Serverless' Full-Stack … 2017 Making the Switch to “Serverless” Full-Stack Development © 2017 AktaryTech 3 Agenda • Serverless in Practice • Architecture](https://reader031.vdocuments.us/reader031/viewer/2022020303/5afcf6197f8b9a68498c3594/html5/thumbnails/17.jpg)
SATURN 2017
Making the Switch to “Serverless” Full-Stack Development © 2017 AktaryTech 17
Platforms & Tools
Hosted • Amazon Lambda • Azure Functions • Google Cloud Functions • IBM Bluemix OpenWhisk* • Auth0 Webtask
On-Prem • Apache OpenWhisk* (https://github.com/openwhisk) • IronFunctions (https://github.com/iron-io/functions) • Functions as a Service (https://github.com/alexellis/faas) • Funcatron* (https://funcatron.org)
* Claim to minimize vendor lock-inThis list is not exhaustive. Visit https://github.com/anaibol/awesome-serverless for a more detailed list
![Page 18: Making the Switch to 'Serverless' Full-Stack … 2017 Making the Switch to “Serverless” Full-Stack Development © 2017 AktaryTech 3 Agenda • Serverless in Practice • Architecture](https://reader031.vdocuments.us/reader031/viewer/2022020303/5afcf6197f8b9a68498c3594/html5/thumbnails/18.jpg)
SATURN 2017
Making the Switch to “Serverless” Full-Stack Development © 2017 AktaryTech 18
Platforms & Tools - Rolling Your Own
Virtualization/Orchestration: • Docker / Docker Swarm • Vagrant • Kubernetes • Mesos Messaging: • Kafka • RabbitMQ Metrics/Monitoring: Prometheus API Definition: Swagger
Funcatron
FaaS
OpenWhisk
![Page 19: Making the Switch to 'Serverless' Full-Stack … 2017 Making the Switch to “Serverless” Full-Stack Development © 2017 AktaryTech 3 Agenda • Serverless in Practice • Architecture](https://reader031.vdocuments.us/reader031/viewer/2022020303/5afcf6197f8b9a68498c3594/html5/thumbnails/19.jpg)
SATURN 2017
Making the Switch to “Serverless” Full-Stack Development © 2017 AktaryTech 19
Platforms & Tools - Frameworks
Language Platform API Gateway
IntegrationNode.js Python Java Golang Closure Rust Scala AWS Azure OpenWhisk
Serverless X X X X X X X *
Claudia X X AWS
Apex X X X X X X X
Lambada Framework X AWS
ZappaX AWS
GordonX X X X X X
Fram
ewor
k
![Page 20: Making the Switch to 'Serverless' Full-Stack … 2017 Making the Switch to “Serverless” Full-Stack Development © 2017 AktaryTech 3 Agenda • Serverless in Practice • Architecture](https://reader031.vdocuments.us/reader031/viewer/2022020303/5afcf6197f8b9a68498c3594/html5/thumbnails/20.jpg)
SATURN 2017
Title of the Presentation Goes Here © 2017 [Copyright Owner[s]]Making the Switch to “Serverless” Full-Stack Development © 2017 AktaryTech 20
SATURN 2017
Serverless in practice
![Page 21: Making the Switch to 'Serverless' Full-Stack … 2017 Making the Switch to “Serverless” Full-Stack Development © 2017 AktaryTech 3 Agenda • Serverless in Practice • Architecture](https://reader031.vdocuments.us/reader031/viewer/2022020303/5afcf6197f8b9a68498c3594/html5/thumbnails/21.jpg)
SATURN 2017
Making the Switch to “Serverless” Full-Stack Development © 2017 AktaryTech 21
Serverless in Practice - Architecture
Design Patterns • Event-driven data processing • Web applications • Mobile applications • Internet-of-Things applications • Real-time stream processing
Source: http://www.allthingsdistributed.com/2016/05/aws-lambda-serverless-reference-architectures.html
![Page 22: Making the Switch to 'Serverless' Full-Stack … 2017 Making the Switch to “Serverless” Full-Stack Development © 2017 AktaryTech 3 Agenda • Serverless in Practice • Architecture](https://reader031.vdocuments.us/reader031/viewer/2022020303/5afcf6197f8b9a68498c3594/html5/thumbnails/22.jpg)
SATURN 2017
Making the Switch to “Serverless” Full-Stack Development © 2017 AktaryTech 22
Serverless in Practice - Architecture
• Event-driven data processing
Reference architecture: https://github.com/awslabs/lambda-refarch-fileprocessing
Source: http://www.allthingsdistributed.com/2016/05/aws-lambda-serverless-reference-architectures.html
![Page 23: Making the Switch to 'Serverless' Full-Stack … 2017 Making the Switch to “Serverless” Full-Stack Development © 2017 AktaryTech 3 Agenda • Serverless in Practice • Architecture](https://reader031.vdocuments.us/reader031/viewer/2022020303/5afcf6197f8b9a68498c3594/html5/thumbnails/23.jpg)
SATURN 2017
Making the Switch to “Serverless” Full-Stack Development © 2017 AktaryTech 23
Serverless in Practice - Architecture
Reference architecture: https://github.com/awslabs/lambda-refarch-webapp
• Web applications
Source: http://www.allthingsdistributed.com/2016/05/aws-lambda-serverless-reference-architectures.html
![Page 24: Making the Switch to 'Serverless' Full-Stack … 2017 Making the Switch to “Serverless” Full-Stack Development © 2017 AktaryTech 3 Agenda • Serverless in Practice • Architecture](https://reader031.vdocuments.us/reader031/viewer/2022020303/5afcf6197f8b9a68498c3594/html5/thumbnails/24.jpg)
SATURN 2017
Making the Switch to “Serverless” Full-Stack Development © 2017 AktaryTech 24
Serverless in Practice - Architecture
• Mobile applications
Reference architecture: https://github.com/awslabs/lambda-refarch-mobilebackend
Source: http://www.allthingsdistributed.com/2016/05/aws-lambda-serverless-reference-architectures.html
![Page 25: Making the Switch to 'Serverless' Full-Stack … 2017 Making the Switch to “Serverless” Full-Stack Development © 2017 AktaryTech 3 Agenda • Serverless in Practice • Architecture](https://reader031.vdocuments.us/reader031/viewer/2022020303/5afcf6197f8b9a68498c3594/html5/thumbnails/25.jpg)
SATURN 2017
Making the Switch to “Serverless” Full-Stack Development © 2017 AktaryTech 25
Serverless in Practice - Architecture
• Internet-of-Things applications
Reference architecture: https://github.com/awslabs/lambda-refarch-iotbackend
Source: http://www.allthingsdistributed.com/2016/05/aws-lambda-serverless-reference-architectures.html
![Page 26: Making the Switch to 'Serverless' Full-Stack … 2017 Making the Switch to “Serverless” Full-Stack Development © 2017 AktaryTech 3 Agenda • Serverless in Practice • Architecture](https://reader031.vdocuments.us/reader031/viewer/2022020303/5afcf6197f8b9a68498c3594/html5/thumbnails/26.jpg)
SATURN 2017
Making the Switch to “Serverless” Full-Stack Development © 2017 AktaryTech 26
Serverless in Practice - Architecture
• Real-time stream processing
Reference architecture: https://github.com/awslabs/lambda-refarch-streamprocessing
Source: http://www.allthingsdistributed.com/2016/05/aws-lambda-serverless-reference-architectures.html
![Page 27: Making the Switch to 'Serverless' Full-Stack … 2017 Making the Switch to “Serverless” Full-Stack Development © 2017 AktaryTech 3 Agenda • Serverless in Practice • Architecture](https://reader031.vdocuments.us/reader031/viewer/2022020303/5afcf6197f8b9a68498c3594/html5/thumbnails/27.jpg)
SATURN 2017
Making the Switch to “Serverless” Full-Stack Development © 2017 AktaryTech 27
Serverless in Practice - Architecture
• Modeling (AWS) • Step Functions - model your application as a state machine • Cloud Formation - infrastructure as code • Serverless Application Model - simplified CF
• Reactive programming: Corenova (https://github.com/corenova/kos) • Monitoring and Logging: IOpipe (iopipe.com)
• Function performance metrics • Real-time alerts • Distributed stack-traces • Real-time dashboard
![Page 28: Making the Switch to 'Serverless' Full-Stack … 2017 Making the Switch to “Serverless” Full-Stack Development © 2017 AktaryTech 3 Agenda • Serverless in Practice • Architecture](https://reader031.vdocuments.us/reader031/viewer/2022020303/5afcf6197f8b9a68498c3594/html5/thumbnails/28.jpg)
SATURN 2017
Making the Switch to “Serverless” Full-Stack Development © 2017 AktaryTech 28
Serverless in Practice - Greenfield
Process 1. Choose language/platform/framework combo 2. Map out microservices 3. Identify Events and Resources 4. Install dependencies/frameworks** 5. Write Tests 6. Write Function(s) 7. Test 8. Deploy 9. Orchestrate* 10.Rinse, repeat
* Using a tool like AWS Step Functions ** Native modules must be compiled on and for the native environment (e.g. Amazon Linux)
![Page 29: Making the Switch to 'Serverless' Full-Stack … 2017 Making the Switch to “Serverless” Full-Stack Development © 2017 AktaryTech 3 Agenda • Serverless in Practice • Architecture](https://reader031.vdocuments.us/reader031/viewer/2022020303/5afcf6197f8b9a68498c3594/html5/thumbnails/29.jpg)
SATURN 2017
Making the Switch to “Serverless” Full-Stack Development © 2017 AktaryTech 29
Serverless in Practice - Migrations
Refactor points: • Environment variables • Timeouts (e.g. API Gateway < DB timeout) • Native modules must be compiled on EC2 • Serve static assets through S3/CloudFront • Remove session state for scalability (or store session state in DB) • HTTP requests are not being sent over ports • Export the Express configuration so the Lambda handler can consume it Big-bang: https://github.com/awslabs/aws-serverless-express Route-by-route: Strangle it! https://www.martinfowler.com/bliki/StranglerApplication.html
![Page 30: Making the Switch to 'Serverless' Full-Stack … 2017 Making the Switch to “Serverless” Full-Stack Development © 2017 AktaryTech 3 Agenda • Serverless in Practice • Architecture](https://reader031.vdocuments.us/reader031/viewer/2022020303/5afcf6197f8b9a68498c3594/html5/thumbnails/30.jpg)
SATURN 2017
Title of the Presentation Goes Here © 2017 [Copyright Owner[s]]Making the Switch to “Serverless” Full-Stack Development © 2017 AktaryTech 30
SATURN 2017
Impact on Workflow
![Page 31: Making the Switch to 'Serverless' Full-Stack … 2017 Making the Switch to “Serverless” Full-Stack Development © 2017 AktaryTech 3 Agenda • Serverless in Practice • Architecture](https://reader031.vdocuments.us/reader031/viewer/2022020303/5afcf6197f8b9a68498c3594/html5/thumbnails/31.jpg)
SATURN 2017
Making the Switch to “Serverless” Full-Stack Development © 2017 AktaryTech 31
Impact on Workflow - Checklist
Source: https://www.slideshare.net/AmazonWebServices/building-a-development-workflow-for-serverless-applications-march-2017-aws-online-tech-talks
![Page 32: Making the Switch to 'Serverless' Full-Stack … 2017 Making the Switch to “Serverless” Full-Stack Development © 2017 AktaryTech 3 Agenda • Serverless in Practice • Architecture](https://reader031.vdocuments.us/reader031/viewer/2022020303/5afcf6197f8b9a68498c3594/html5/thumbnails/32.jpg)
SATURN 2017
Making the Switch to “Serverless” Full-Stack Development © 2017 AktaryTech 32
Impact on Workflow - Testing
Testing of Resources (emulating the platform) • Localstack (AWS): https://github.com/atlassian/localstack • Azure CLI: https://www.npmjs.com/package/azure-functions-cli (Win only) • GCF Emulator: https://cloud.google.com/functions/docs/emulator (Alpha) • Nock: https://github.com/node-nock/nock (HTTP interceptor for mocking) • Serverless plugins: https://github.com/serverless/serverless
Best Practice: • Separate context from business logic • Emulate/mock resources where you can • See framework-specific testing details
![Page 33: Making the Switch to 'Serverless' Full-Stack … 2017 Making the Switch to “Serverless” Full-Stack Development © 2017 AktaryTech 3 Agenda • Serverless in Practice • Architecture](https://reader031.vdocuments.us/reader031/viewer/2022020303/5afcf6197f8b9a68498c3594/html5/thumbnails/33.jpg)
SATURN 2017
Making the Switch to “Serverless” Full-Stack Development © 2017 AktaryTech 33
Impact on Workflow - CI/CD
• Write code • Commit to source control • CI server
• checks out commit • runs tests • reports findings
• If we’re running a CI/CD setup, then… • CD server
• if tests pass, deploys updates
![Page 34: Making the Switch to 'Serverless' Full-Stack … 2017 Making the Switch to “Serverless” Full-Stack Development © 2017 AktaryTech 3 Agenda • Serverless in Practice • Architecture](https://reader031.vdocuments.us/reader031/viewer/2022020303/5afcf6197f8b9a68498c3594/html5/thumbnails/34.jpg)
SATURN 2017
Making the Switch to “Serverless” Full-Stack Development © 2017 AktaryTech 34
Impact on Workflow - CI/CD
• Write code • Commit to source control • CI server
• checks out commit • runs tests • reports findings
• If we’re running a CI/CD setup then… • CD server
• if tests pass, deploys updates
Events? Routes? Resources?
![Page 35: Making the Switch to 'Serverless' Full-Stack … 2017 Making the Switch to “Serverless” Full-Stack Development © 2017 AktaryTech 3 Agenda • Serverless in Practice • Architecture](https://reader031.vdocuments.us/reader031/viewer/2022020303/5afcf6197f8b9a68498c3594/html5/thumbnails/35.jpg)
SATURN 2017
Making the Switch to “Serverless” Full-Stack Development © 2017 AktaryTech 35
Impact on Workflow - CI/CD
• AWS • CodePipeline • CodeCommit • CodeBuild • Example: https://github.com/awslabs/aws-serverless-samfarm
• GCF, Azure, OpenWhisk: Serverless Framework • IBM BlueMix: https://www.ibm.com/devops/method/category/tools/ (CD) • ServerlessCICD.com
![Page 36: Making the Switch to 'Serverless' Full-Stack … 2017 Making the Switch to “Serverless” Full-Stack Development © 2017 AktaryTech 3 Agenda • Serverless in Practice • Architecture](https://reader031.vdocuments.us/reader031/viewer/2022020303/5afcf6197f8b9a68498c3594/html5/thumbnails/36.jpg)
SATURN 2017
Title of the Presentation Goes Here © 2017 [Copyright Owner[s]]Making the Switch to “Serverless” Full-Stack Development © 2017 AktaryTech 36
SATURN 2017
Pitfalls and Gotchas
![Page 37: Making the Switch to 'Serverless' Full-Stack … 2017 Making the Switch to “Serverless” Full-Stack Development © 2017 AktaryTech 3 Agenda • Serverless in Practice • Architecture](https://reader031.vdocuments.us/reader031/viewer/2022020303/5afcf6197f8b9a68498c3594/html5/thumbnails/37.jpg)
SATURN 2017
Making the Switch to “Serverless” Full-Stack Development © 2017 AktaryTech 37
Pitfalls and Gotchas
• Stateless server • Cold starts • No access to command line, nor sudo/root • Logging done via external tool • Language & version lag/limits • Vendor lock-in • No clear solution for cross-cloud deployment
![Page 38: Making the Switch to 'Serverless' Full-Stack … 2017 Making the Switch to “Serverless” Full-Stack Development © 2017 AktaryTech 3 Agenda • Serverless in Practice • Architecture](https://reader031.vdocuments.us/reader031/viewer/2022020303/5afcf6197f8b9a68498c3594/html5/thumbnails/38.jpg)
SATURN 2017
Making the Switch to “Serverless” Full-Stack Development © 2017 AktaryTech 38
Pitfalls and Gotchas - Limitations
• Resource limits • Concurrent execution* • Deployment limits
• AWS: http://docs.aws.amazon.com/lambda/latest/dg/limits.html • OpenWhisk: https://github.com/openwhisk/openwhisk/blob/master/
docs/reference.md#system-limits • GCF: https://cloud.google.com/functions/quotas • Microsoft: depends on pricing plan
* Can be increased upon request
![Page 39: Making the Switch to 'Serverless' Full-Stack … 2017 Making the Switch to “Serverless” Full-Stack Development © 2017 AktaryTech 3 Agenda • Serverless in Practice • Architecture](https://reader031.vdocuments.us/reader031/viewer/2022020303/5afcf6197f8b9a68498c3594/html5/thumbnails/39.jpg)
SATURN 2017
Title of the Presentation Goes Here © 2017 [Copyright Owner[s]]Making the Switch to “Serverless” Full-Stack Development © 2017 AktaryTech 39
SATURN 2017
Workshop
![Page 40: Making the Switch to 'Serverless' Full-Stack … 2017 Making the Switch to “Serverless” Full-Stack Development © 2017 AktaryTech 3 Agenda • Serverless in Practice • Architecture](https://reader031.vdocuments.us/reader031/viewer/2022020303/5afcf6197f8b9a68498c3594/html5/thumbnails/40.jpg)
SATURN 2017
Making the Switch to “Serverless” Full-Stack Development © 2017 AktaryTech 40
Workshop - Overview
Set up “traditional” full-stack app • Clone back-end • Update DB URI (and fix
package.json) • Start server • Clone front-end • Update API URL
“Strangle” migration • Set up framework • “Lambdafy” back-end route / function • Re-direct front-end call
![Page 41: Making the Switch to 'Serverless' Full-Stack … 2017 Making the Switch to “Serverless” Full-Stack Development © 2017 AktaryTech 3 Agenda • Serverless in Practice • Architecture](https://reader031.vdocuments.us/reader031/viewer/2022020303/5afcf6197f8b9a68498c3594/html5/thumbnails/41.jpg)
SATURN 2017
Making the Switch to “Serverless” Full-Stack Development © 2017 AktaryTech 41
“Traditional” Full-Stack App
Express API
localhost
SATURN DB
Node Express
Webpack Dev Server
mLab
MongoDB
React client
![Page 42: Making the Switch to 'Serverless' Full-Stack … 2017 Making the Switch to “Serverless” Full-Stack Development © 2017 AktaryTech 3 Agenda • Serverless in Practice • Architecture](https://reader031.vdocuments.us/reader031/viewer/2022020303/5afcf6197f8b9a68498c3594/html5/thumbnails/42.jpg)
SATURN 2017
Making the Switch to “Serverless” Full-Stack Development © 2017 AktaryTech 42
Workshop - Set Up Back-End
https://github.com/gothinkster/node-express-realworld-example-app.git
Change database URI in app.js: mongodb://saturn:[email protected]:23381/saturn
npm install npm run dev
![Page 43: Making the Switch to 'Serverless' Full-Stack … 2017 Making the Switch to “Serverless” Full-Stack Development © 2017 AktaryTech 3 Agenda • Serverless in Practice • Architecture](https://reader031.vdocuments.us/reader031/viewer/2022020303/5afcf6197f8b9a68498c3594/html5/thumbnails/43.jpg)
SATURN 2017
Making the Switch to “Serverless” Full-Stack Development © 2017 AktaryTech 43
Workshop - Set Up Front-End
https://github.com/gothinkster/react-redux-realworld-example-app
Change API_ROOT to http://localhost:3000/api
npm install npm run start
![Page 44: Making the Switch to 'Serverless' Full-Stack … 2017 Making the Switch to “Serverless” Full-Stack Development © 2017 AktaryTech 3 Agenda • Serverless in Practice • Architecture](https://reader031.vdocuments.us/reader031/viewer/2022020303/5afcf6197f8b9a68498c3594/html5/thumbnails/44.jpg)
SATURN 2017
Making the Switch to “Serverless” Full-Stack Development © 2017 AktaryTech 44
“Traditional” Full-Stack App Complete!
![Page 45: Making the Switch to 'Serverless' Full-Stack … 2017 Making the Switch to “Serverless” Full-Stack Development © 2017 AktaryTech 3 Agenda • Serverless in Practice • Architecture](https://reader031.vdocuments.us/reader031/viewer/2022020303/5afcf6197f8b9a68498c3594/html5/thumbnails/45.jpg)
SATURN 2017
Making the Switch to “Serverless” Full-Stack Development © 2017 AktaryTech 45
Now to “Strangle” It!
![Page 46: Making the Switch to 'Serverless' Full-Stack … 2017 Making the Switch to “Serverless” Full-Stack Development © 2017 AktaryTech 3 Agenda • Serverless in Practice • Architecture](https://reader031.vdocuments.us/reader031/viewer/2022020303/5afcf6197f8b9a68498c3594/html5/thumbnails/46.jpg)
SATURN 2017
Making the Switch to “Serverless” Full-Stack Development © 2017 AktaryTech 46
“Strangle” MigrationExpress API
localhost
SATURN DB
Node Express
Webpack Dev Server
mLab
MongoDB
AWS
Lambda Function
Tags Function
React client
API Gateway
Tags API
![Page 47: Making the Switch to 'Serverless' Full-Stack … 2017 Making the Switch to “Serverless” Full-Stack Development © 2017 AktaryTech 3 Agenda • Serverless in Practice • Architecture](https://reader031.vdocuments.us/reader031/viewer/2022020303/5afcf6197f8b9a68498c3594/html5/thumbnails/47.jpg)
SATURN 2017
Making the Switch to “Serverless” Full-Stack Development © 2017 AktaryTech 47
“Strangle” Migration - Back-End
Create new <LAMBDA PROJECT> directory, then… npm install -g serverless
Create a new “service” based on the AWS Node template serverless create -t aws-nodejs
Uncomment the event in serverless.yml, change path, add cors
![Page 48: Making the Switch to 'Serverless' Full-Stack … 2017 Making the Switch to “Serverless” Full-Stack Development © 2017 AktaryTech 3 Agenda • Serverless in Practice • Architecture](https://reader031.vdocuments.us/reader031/viewer/2022020303/5afcf6197f8b9a68498c3594/html5/thumbnails/48.jpg)
SATURN 2017
Making the Switch to “Serverless” Full-Stack Development © 2017 AktaryTech 48
“Strangle” Migration - Back-End
npm init -f
npm install -S mongodb
In handler.js: • Add in Mongo connection • Add in tags DB search • Create Lambda response
https://pastebin.com/s27L2bbM
![Page 49: Making the Switch to 'Serverless' Full-Stack … 2017 Making the Switch to “Serverless” Full-Stack Development © 2017 AktaryTech 3 Agenda • Serverless in Practice • Architecture](https://reader031.vdocuments.us/reader031/viewer/2022020303/5afcf6197f8b9a68498c3594/html5/thumbnails/49.jpg)
SATURN 2017
Making the Switch to “Serverless” Full-Stack Development © 2017 AktaryTech 49
“Strangle” Migration - Back-End
Configure AWS CLI • http://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-
started.html#cli-quick-configuration
aws configure
serverless deploy
Save this!
![Page 50: Making the Switch to 'Serverless' Full-Stack … 2017 Making the Switch to “Serverless” Full-Stack Development © 2017 AktaryTech 3 Agenda • Serverless in Practice • Architecture](https://reader031.vdocuments.us/reader031/viewer/2022020303/5afcf6197f8b9a68498c3594/html5/thumbnails/50.jpg)
SATURN 2017
Making the Switch to “Serverless” Full-Stack Development © 2017 AktaryTech 50
Great success!
Now, just update the front-end to hit Lambda in src/agent.js
“Strangle” Migration - Back-End
![Page 51: Making the Switch to 'Serverless' Full-Stack … 2017 Making the Switch to “Serverless” Full-Stack Development © 2017 AktaryTech 3 Agenda • Serverless in Practice • Architecture](https://reader031.vdocuments.us/reader031/viewer/2022020303/5afcf6197f8b9a68498c3594/html5/thumbnails/51.jpg)
SATURN 2017
Making the Switch to “Serverless” Full-Stack Development © 2017 AktaryTech 51
“Strangle” Migration Complete!
![Page 52: Making the Switch to 'Serverless' Full-Stack … 2017 Making the Switch to “Serverless” Full-Stack Development © 2017 AktaryTech 3 Agenda • Serverless in Practice • Architecture](https://reader031.vdocuments.us/reader031/viewer/2022020303/5afcf6197f8b9a68498c3594/html5/thumbnails/52.jpg)
SATURN 2017
Title of the Presentation Goes Here © 2017 [Copyright Owner[s]]Making the Switch to “Serverless” Full-Stack Development © 2017 AktaryTech 52
Thank you! Questions?SATURN 2017