Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Serverless Functions Azure, AWS, GCP
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Mikhail Shilkov
October 30, 2019
Programming
270
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Serverless Functions Azure, AWS, GCP
Comparison of Function-as-a-Service offerings of AWS, Azure, and GCP
Mikhail Shilkov
October 30, 2019
More Decks by Mikhail Shilkov
See All by Mikhail Shilkov
From YAML to TypeScript: Developer’s View on Cloud Automation
mikhailshilkov
0
130
Cloud Management Superpowers with Pulumi
mikhailshilkov
0
560
Cloud Superpowers with Pulumi and F#
mikhailshilkov
1
570
Cloud Management Superpowers with Pulumi and .NET
mikhailshilkov
0
160
Managing Any Cloud with .NET
mikhailshilkov
0
120
Azure Infrastructure as C# and F#
mikhailshilkov
0
310
Infrastructure as Software
mikhailshilkov
0
470
Azure Infrastructure as C# and F#
mikhailshilkov
0
370
Pulumi: Cloud Infrastructure as C# and F#
mikhailshilkov
0
910
Other Decks in Programming
See All in Programming
Everything will be SERVERLESS — 信じて運用した10年の経験値 / Everything Will be Serverless — Lessons Learned from 10 Years of Operational Experience
seike460
PRO
1
740
JAWS-UG 東京支部が始める、JAWS-UG支部コラボ / JAWS-UG lunchtime LT Collaboration
y0hgi
0
180
Webの地図
yosuke_furukawa
PRO
6
5.1k
速習iPhone Duo対応
yuukiw00w
2
960
Java 27新機能 / Java 27 new features
kishida
2
200
FreeBSDでZabbixを動かす
kenkino
0
360
AI時代のコードレビューは人に向けるな、仕組みに向けろ
texmeijin
5
3.5k
パズルゲームの作り方 / how to make puzzle games
kaityo256
PRO
2
270
GitHubハンズオン講座 — 実務レベルのチーム開発のフローを身につけよう
junhat6
0
120
Starting & Sustaining Code-Based E2E Testing for Non-Coding QA Teams( #jasstniigata )
teyamagu
PRO
1
910
ハーネス設計入門 〜 基礎知識の整理から実務へのステップアップ 〜
kinopeee
20
21k
CodeRabbitの効果検証と過ごしてみた3ヶ月
armondando
0
150
Featured
See All Featured
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
320
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.5k
Side Projects
sachag
456
43k
Java REST API Framework Comparison - PWX 2021
mraible
34
9.7k
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
1k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Being A Developer After 40
akosma
91
590k
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
5
770
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
550
The Language of Interfaces
destraynor
162
27k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
69
66k
A designer walks into a library…
pauljervisheath
211
25k
Transcript
Serverless Functions Azure, AWS, GCP Cloud Republic Event | Utrecht
| October 30, 2019
• Software developer • Cloud • Serverless • Functional programming
• Microsoft Azure MVP https://mikhail.io @MikhailShilkov Mikhail Shilkov
Function-as-a-Service Cloud Offerings
Hosting Plans Configurability Languages Programming Model Concurrency Isolation Cost Orchestrations
Cold Starts Scalability Conclusions Q&A
Hosting Plans
Azure Functions
AWS Lambda and Google Functions
Configurability
Azure Functions Consumption
AWS Lambda Memory Allocation
GCF Memory Allocation
Azure Functions Premium
Programming Languages
Language Azure Functions AWS Lambda Google Cloud Functions .NET (C#/F#)
GA GA - Node.js (JS/TS) GA GA GA JVM (Java) GA GA - Python GA (Linux only) GA GA PowerShell Preview GA - Go - GA GA Ruby - GA - Comparison Table
Programming Model
Azure Functions: Triggers and Bindings [FunctionName("MyFunc")] public static void Work(
[TimerTrigger("0 */10 * * * *")] TimerInfo timer, [Blob("filename")] Stream stream, [Queue("myqueue")] out string message) { // body }
AWS: JSON Input and Output exports.handler = async (event) =>
{ const response = { statusCode: 200, body: JSON.stringify('Hello from Lambda!'), }; return response; };
ASP.NET Core on AWS Lambda public class LambdaFunction : Amazon.Lambda.AspNetCoreServer.APIGatewayProxyFunction
{ protected override void Init(IWebHostBuilder builder) { builder .UseContentRoot(Directory.GetCurrentDirectory()) .UseStartup() .UseApiGateway(); } }
GCP: Express-like API exports.helloWorld = (req, res) => { let
message = req.query.message || req.body.message || 'Hello World!'; res.status(200).send(message); };
Deployment Artifacts
Concurrency and Isolation
Resource Pool
Resource Pool
Resource Pool
Resource Pool
Resource Pool
Resource Pool
Resource Pool
Client Value Resource Utilization
Tradeoff
Server, VM, container, process, ...
Server, VM, container, process, ... VM VM
Server, VM, container, process, ... VM VM
Server, VM, container, process, ... VM VM
Server, VM, container, process, ... VM VM
Azure Functions 12
Legacy of App Service
Legacy of App Service
App Service: scalability
App Service: scalability
Function App Consumption Plan
Isolation Layers
Simultaneous Executions
Simultaneous Executions
Simultaneous Executions
Simultaneous Executions
AWS Lambda 22
AWS Lambda
AWS Lambda
AWS Lambda
Integrating with AWS Lambda
Simultaneous Executions in AWS Lambda
Isolation Layers
Simultaneous Executions in AWS Lambda
Simultaneous Executions in AWS Lambda
Simultaneous Executions in AWS Lambda
• • • • AWS Firecracker
Isolation Layers with Firecracker
«Naive» Function Composition
Statistical Multiplexing
Google Cloud Functions 31
Google Cloud Functions
Cost
Nominal Pricing
Nuances
Azure Simultaneous Executions
AWS Lambda: HTTP Integration
AWS Lambda: HTTP Integration
Orchestration
Azure Logic Apps
AWS Step Functions
Azure Durable Functions public static async Task Sequential(DurableOrchestrationContext context) {
var conf = await context.CallActivityAsync<ConfTicket> ("BookConference", "ServerlessDays"); var flight = await context.CallActivityAsync<FlightTickets> ("BookFlight", conf.Dates); await context.CallActivityAsync("BookHotel", flight.Dates); }
Performance and Scalability
Ideal Scalability: Throughput
Ideal Scalability: Latency
Customer Value Cloud Resource Utilization
Cold Starts
Example: Loading a map
Example: Loading a map
Example: Loading a map
Cold Start
Warm Start
Period Before a Subsequent Cold Start
Cold Starts: Language Comparison
Dependencies Add to Cold Start
Fighting Cold Starts: Azure [FunctionName("Warmer")] public static void WarmUp( [TimerTrigger("0
*/10 * * * *")] TimerInfo timer) { // No need to do anything }
AWS: Single instance warming
AWS: Multiple instance warming
ETL AT SCALE: Asynchronous data processing
Async Pipelines
Experiments with Queues
AWS Lambda Processing 100k SQS Messages
GCF Processing 100k Pub/Sub Messages
Azure Functions Processing 100k Queue Messages
CPU-intensive workload on AWS Lambda
CPU-intensive workload on Google Cloud Functions
CPU-intensive workload on Azure Functions
AWS Processing Speed per Reserved RAM
HTTP AT SCALE: Serving traffic of StackOverflow
Serving StackOverflow-like traffic
Requests/sec during the load test
0 200 400 600 800 1000 1200 Azure Functions: Response
Percentiles (ms)
0 200 400 600 800 1000 1200 Azure Functions: Response
Percentiles (ms)
0 200 400 600 800 1000 1200 Azure Functions: Instances
Google Functions: Response Percentiles (ms)
Google Functions: Response Percentiles (ms)
0 200 400 600 800 1000 1200 Google Functions: Instances
0 200 400 600 800 1000 1200 AWS Lambda: Response
Percentiles (ms)
0 200 400 600 800 1000 1200 AWS Lambda: Response
Percentiles (ms)
0 200 400 600 800 1000 1200 AWS Lambda: Instances
So, What Should You Choose?
• • • • Follow-up reading (1)
• • • Follow-up reading (2)
None