serverless azure functions: lessons learnedserverless min/max scaling instance sizing perpetually...
TRANSCRIPT
![Page 1: Serverless Azure Functions: Lessons LearnedServerless Min/Max scaling Instance sizing Perpetually warm instances VnetConnectivity. Prepared for MDC 2019 Function App vs Function Function](https://reader030.vdocuments.net/reader030/viewer/2022041015/5ec653ae32b52a2d1c7c3536/html5/thumbnails/1.jpg)
Serverless Azure Functions: Lessons LearnedJoe KoletarRBA
![Page 2: Serverless Azure Functions: Lessons LearnedServerless Min/Max scaling Instance sizing Perpetually warm instances VnetConnectivity. Prepared for MDC 2019 Function App vs Function Function](https://reader030.vdocuments.net/reader030/viewer/2022041015/5ec653ae32b52a2d1c7c3536/html5/thumbnails/2.jpg)
Prepared for MDC 2019
INTRODUCTIONS
Joe KoletarManaging Principal
Engineer
![Page 3: Serverless Azure Functions: Lessons LearnedServerless Min/Max scaling Instance sizing Perpetually warm instances VnetConnectivity. Prepared for MDC 2019 Function App vs Function Function](https://reader030.vdocuments.net/reader030/viewer/2022041015/5ec653ae32b52a2d1c7c3536/html5/thumbnails/3.jpg)
Prepared for MDC 2019
DESIGNED TO DELIVERRBA is a digital and technology consultancy headquartered in Wayzata, MN with roots in strategy, design, and technology.
We have designed our services and engagement types to align to the unique needs of our clients. Whether that is adding capacity to a team, helping to deliver a solution on new technologies, or provide support after launch, we are designed to deliver.
What we do
How we engage
Project Services Co-Delivery & Staffing Managed Services
![Page 4: Serverless Azure Functions: Lessons LearnedServerless Min/Max scaling Instance sizing Perpetually warm instances VnetConnectivity. Prepared for MDC 2019 Function App vs Function Function](https://reader030.vdocuments.net/reader030/viewer/2022041015/5ec653ae32b52a2d1c7c3536/html5/thumbnails/4.jpg)
Prepared for MDC 2019
BACKGROUND
What we are doing
![Page 5: Serverless Azure Functions: Lessons LearnedServerless Min/Max scaling Instance sizing Perpetually warm instances VnetConnectivity. Prepared for MDC 2019 Function App vs Function Function](https://reader030.vdocuments.net/reader030/viewer/2022041015/5ec653ae32b52a2d1c7c3536/html5/thumbnails/5.jpg)
Prepared for MDC 2019
Project Background• Re-platform eCommerce for Caleres• Supports 15 different brands• Azure based project using Sitecore XP CMS and
Sitecore Commerce• Started on envisioning last summer with plan to launch
first sites soon
Unique brands
16Growth YoY for Cyber Monday
26%Page views per month
200M
![Page 6: Serverless Azure Functions: Lessons LearnedServerless Min/Max scaling Instance sizing Perpetually warm instances VnetConnectivity. Prepared for MDC 2019 Function App vs Function Function](https://reader030.vdocuments.net/reader030/viewer/2022041015/5ec653ae32b52a2d1c7c3536/html5/thumbnails/6.jpg)
Prepared for MDC 2019
Internal and External Systems
SitecoreCommerce
Engine
Sitecore Storefront
Azure Functions
PIMDAMFulfillmentPartners
CustomersProductsCartsOrders
MVC Pages
Project Diagram
![Page 7: Serverless Azure Functions: Lessons LearnedServerless Min/Max scaling Instance sizing Perpetually warm instances VnetConnectivity. Prepared for MDC 2019 Function App vs Function Function](https://reader030.vdocuments.net/reader030/viewer/2022041015/5ec653ae32b52a2d1c7c3536/html5/thumbnails/7.jpg)
Prepared for MDC 2019
Project Intent• Functions are replacing a set of Windows services• Intent was to create highly scalable microservices
![Page 8: Serverless Azure Functions: Lessons LearnedServerless Min/Max scaling Instance sizing Perpetually warm instances VnetConnectivity. Prepared for MDC 2019 Function App vs Function Function](https://reader030.vdocuments.net/reader030/viewer/2022041015/5ec653ae32b52a2d1c7c3536/html5/thumbnails/8.jpg)
Prepared for MDC 2019
Azure Functions• Functions support small pieces of code in the cloud• Can be developed in JavaScript, C#, F#, Python, and others• Can be developed in the portal or IDE• Capable of being serverless
![Page 9: Serverless Azure Functions: Lessons LearnedServerless Min/Max scaling Instance sizing Perpetually warm instances VnetConnectivity. Prepared for MDC 2019 Function App vs Function Function](https://reader030.vdocuments.net/reader030/viewer/2022041015/5ec653ae32b52a2d1c7c3536/html5/thumbnails/9.jpg)
Prepared for MDC 2019
Serverless
• Abstraction of servers• Event-driven scalability• Pay per use
![Page 10: Serverless Azure Functions: Lessons LearnedServerless Min/Max scaling Instance sizing Perpetually warm instances VnetConnectivity. Prepared for MDC 2019 Function App vs Function Function](https://reader030.vdocuments.net/reader030/viewer/2022041015/5ec653ae32b52a2d1c7c3536/html5/thumbnails/10.jpg)
Prepared for MDC 2019
Azure Function TriggersTriggers define how a function is invoked
• Available Triggers• HTTP• Timer• GitHub• Generic webhook• CosmosDB
• Blob Storage• Azure Storage Queue• EventHub• ServiceBus Queue• ServiceBus Topic
![Page 11: Serverless Azure Functions: Lessons LearnedServerless Min/Max scaling Instance sizing Perpetually warm instances VnetConnectivity. Prepared for MDC 2019 Function App vs Function Function](https://reader030.vdocuments.net/reader030/viewer/2022041015/5ec653ae32b52a2d1c7c3536/html5/thumbnails/11.jpg)
Prepared for MDC 2019
SETUP OPTIONSConfiguration options for your Azure Functions
![Page 12: Serverless Azure Functions: Lessons LearnedServerless Min/Max scaling Instance sizing Perpetually warm instances VnetConnectivity. Prepared for MDC 2019 Function App vs Function Function](https://reader030.vdocuments.net/reader030/viewer/2022041015/5ec653ae32b52a2d1c7c3536/html5/thumbnails/12.jpg)
Prepared for MDC 2019
Hosting Options
ConsumptionServerless
Scales automatically
Pay for what you use
App ServiceRuns on dedicated VM
Pay for the App Service
Can scale with App Service
PremiumServerless
Min/Max scaling
Instance sizing
Perpetually warm instances
Vnet Connectivity
![Page 13: Serverless Azure Functions: Lessons LearnedServerless Min/Max scaling Instance sizing Perpetually warm instances VnetConnectivity. Prepared for MDC 2019 Function App vs Function Function](https://reader030.vdocuments.net/reader030/viewer/2022041015/5ec653ae32b52a2d1c7c3536/html5/thumbnails/13.jpg)
Prepared for MDC 2019
Function App vs Function
Function AppCan contain more than one function
Deployable/scalable unit
FunctionIs uniquely addressable
Performs specific action
![Page 14: Serverless Azure Functions: Lessons LearnedServerless Min/Max scaling Instance sizing Perpetually warm instances VnetConnectivity. Prepared for MDC 2019 Function App vs Function Function](https://reader030.vdocuments.net/reader030/viewer/2022041015/5ec653ae32b52a2d1c7c3536/html5/thumbnails/14.jpg)
Prepared for MDC 2019
![Page 15: Serverless Azure Functions: Lessons LearnedServerless Min/Max scaling Instance sizing Perpetually warm instances VnetConnectivity. Prepared for MDC 2019 Function App vs Function Function](https://reader030.vdocuments.net/reader030/viewer/2022041015/5ec653ae32b52a2d1c7c3536/html5/thumbnails/15.jpg)
Prepared for MDC 2019
VersionsVersion 1.xUses .NET Framework
Only supports Azure and Windows
Version 2.xRuns on .NET Core 2
Support macOS and Linux
All Functions in Function App must share same language
More bindings
Support for dependency injection
![Page 16: Serverless Azure Functions: Lessons LearnedServerless Min/Max scaling Instance sizing Perpetually warm instances VnetConnectivity. Prepared for MDC 2019 Function App vs Function Function](https://reader030.vdocuments.net/reader030/viewer/2022041015/5ec653ae32b52a2d1c7c3536/html5/thumbnails/16.jpg)
Prepared for MDC 2019
SECURITY Locked up tight
![Page 17: Serverless Azure Functions: Lessons LearnedServerless Min/Max scaling Instance sizing Perpetually warm instances VnetConnectivity. Prepared for MDC 2019 Function App vs Function Function](https://reader030.vdocuments.net/reader030/viewer/2022041015/5ec653ae32b52a2d1c7c3536/html5/thumbnails/17.jpg)
Prepared for MDC 2019
Connectivity• Project need to support PCI compliance • Required ability to communicate over Vnet and Hybrid connection • Azure Functions talking to internal systems• Use of Vnet required premium plan support• Use of Hybrid connection required app service plan
App Service Plan Premium Plan
Vnet – No Vnet – Yes
Hybrid Connection – Yes Hybrid Connection – No
![Page 18: Serverless Azure Functions: Lessons LearnedServerless Min/Max scaling Instance sizing Perpetually warm instances VnetConnectivity. Prepared for MDC 2019 Function App vs Function Function](https://reader030.vdocuments.net/reader030/viewer/2022041015/5ec653ae32b52a2d1c7c3536/html5/thumbnails/18.jpg)
Prepared for MDC 2019
DATA FLOWGetting from here to there
![Page 19: Serverless Azure Functions: Lessons LearnedServerless Min/Max scaling Instance sizing Perpetually warm instances VnetConnectivity. Prepared for MDC 2019 Function App vs Function Function](https://reader030.vdocuments.net/reader030/viewer/2022041015/5ec653ae32b52a2d1c7c3536/html5/thumbnails/19.jpg)
Prepared for MDC 2019
Azure Service Bus• Using Azure Service Bus Messages as trigger on most
functions
• Advantages of Messageso Guaranteed deliveryo Automatic retrieso Dead letter queue for failureso Ability to delay deliveryo Automatic scaling of functions
![Page 20: Serverless Azure Functions: Lessons LearnedServerless Min/Max scaling Instance sizing Perpetually warm instances VnetConnectivity. Prepared for MDC 2019 Function App vs Function Function](https://reader030.vdocuments.net/reader030/viewer/2022041015/5ec653ae32b52a2d1c7c3536/html5/thumbnails/20.jpg)
Prepared for MDC 2019
Messages For FlowConsoleApp
ParselistandsendamessageforeachURL
CenturyLinkEnvironment
ListofallimageURLS
ImportImagesAzureFunction
AzureBLOBStorage
SitecoreCommerceEngine
CommerceDatastore
Image ImageMetadata
ImageMetadata
Image
ResizeImagesAzureFunction BLOB
Trigger
![Page 21: Serverless Azure Functions: Lessons LearnedServerless Min/Max scaling Instance sizing Perpetually warm instances VnetConnectivity. Prepared for MDC 2019 Function App vs Function Function](https://reader030.vdocuments.net/reader030/viewer/2022041015/5ec653ae32b52a2d1c7c3536/html5/thumbnails/21.jpg)
Prepared for MDC 2019
Connecting to Internal Systems
MessageAdapterCoreRetail
ExternalSystems
MQMessages
ConfigFile
AzureServiceBusMessages
AzureFunctions
MicrosoftAzure
![Page 22: Serverless Azure Functions: Lessons LearnedServerless Min/Max scaling Instance sizing Perpetually warm instances VnetConnectivity. Prepared for MDC 2019 Function App vs Function Function](https://reader030.vdocuments.net/reader030/viewer/2022041015/5ec653ae32b52a2d1c7c3536/html5/thumbnails/22.jpg)
Prepared for MDC 2019
SCALABILITYHandling the load
![Page 23: Serverless Azure Functions: Lessons LearnedServerless Min/Max scaling Instance sizing Perpetually warm instances VnetConnectivity. Prepared for MDC 2019 Function App vs Function Function](https://reader030.vdocuments.net/reader030/viewer/2022041015/5ec653ae32b52a2d1c7c3536/html5/thumbnails/23.jpg)
Prepared for MDC 2019
Service Bus Scalability• Each function processes one message• Need to handle thousands of messages arriving within seconds• Weekly catalog refreshes send hundreds of thousands of
messages in under an hour• Treating functions as a microservice
![Page 24: Serverless Azure Functions: Lessons LearnedServerless Min/Max scaling Instance sizing Perpetually warm instances VnetConnectivity. Prepared for MDC 2019 Function App vs Function Function](https://reader030.vdocuments.net/reader030/viewer/2022041015/5ec653ae32b52a2d1c7c3536/html5/thumbnails/24.jpg)
Prepared for MDC 2019
Function Scalability
• Functions in a function app share resources• Functions are inherently instance based• Scalability requires shared resources
• Database connections• HTTP connections• Azure storage connections
![Page 25: Serverless Azure Functions: Lessons LearnedServerless Min/Max scaling Instance sizing Perpetually warm instances VnetConnectivity. Prepared for MDC 2019 Function App vs Function Function](https://reader030.vdocuments.net/reader030/viewer/2022041015/5ec653ae32b52a2d1c7c3536/html5/thumbnails/25.jpg)
Prepared for MDC 2019
Static clients• Do not create a new client with every function invocation.• Do create a single, static client that every function invocation can
use.• Consider creating a single, static client in a shared helper class if
different functions use the same service.
![Page 26: Serverless Azure Functions: Lessons LearnedServerless Min/Max scaling Instance sizing Perpetually warm instances VnetConnectivity. Prepared for MDC 2019 Function App vs Function Function](https://reader030.vdocuments.net/reader030/viewer/2022041015/5ec653ae32b52a2d1c7c3536/html5/thumbnails/26.jpg)
Prepared for MDC 2019
Dependency Injection
![Page 27: Serverless Azure Functions: Lessons LearnedServerless Min/Max scaling Instance sizing Perpetually warm instances VnetConnectivity. Prepared for MDC 2019 Function App vs Function Function](https://reader030.vdocuments.net/reader030/viewer/2022041015/5ec653ae32b52a2d1c7c3536/html5/thumbnails/27.jpg)
Prepared for MDC 2019
Scalability IssuesSitecoreCommerceEngine
CommerceAPI
ExternalSystems AzureFunctions
ProcessProductsAzureFunction
ProcessUPCsAzureFunction
ProcessPricesAzureFunction
SendProductData
SendUPCData
SendPriceData
HTTP
ServiceBus
![Page 28: Serverless Azure Functions: Lessons LearnedServerless Min/Max scaling Instance sizing Perpetually warm instances VnetConnectivity. Prepared for MDC 2019 Function App vs Function Function](https://reader030.vdocuments.net/reader030/viewer/2022041015/5ec653ae32b52a2d1c7c3536/html5/thumbnails/28.jpg)
Prepared for MDC 2019
Scalability ImprovedSitecoreCommerceEngine
CommerceAPI
ExternalSystems AzureFunctions
BatchProductMessages
ProcessProductsAzureFunction
ProcessUPCsAzureFunction
ProcessPricesAzureFunction
SendProductData
BatchUPCsMessagesSendUPCData
BatchPriceMessagesSendPriceData
HTTP
ServiceBus
![Page 29: Serverless Azure Functions: Lessons LearnedServerless Min/Max scaling Instance sizing Perpetually warm instances VnetConnectivity. Prepared for MDC 2019 Function App vs Function Function](https://reader030.vdocuments.net/reader030/viewer/2022041015/5ec653ae32b52a2d1c7c3536/html5/thumbnails/29.jpg)
Prepared for MDC 2019
DURABLE FUNCTIONSIt’s getting complicated
![Page 30: Serverless Azure Functions: Lessons LearnedServerless Min/Max scaling Instance sizing Perpetually warm instances VnetConnectivity. Prepared for MDC 2019 Function App vs Function Function](https://reader030.vdocuments.net/reader030/viewer/2022041015/5ec653ae32b52a2d1c7c3536/html5/thumbnails/30.jpg)
Prepared for MDC 2019
Durable Functions• Support stateful functions using an orchestrator• Allows coordination between serverless applications• The orchestrator manages state, checkpoints, and restarts for you.
![Page 31: Serverless Azure Functions: Lessons LearnedServerless Min/Max scaling Instance sizing Perpetually warm instances VnetConnectivity. Prepared for MDC 2019 Function App vs Function Function](https://reader030.vdocuments.net/reader030/viewer/2022041015/5ec653ae32b52a2d1c7c3536/html5/thumbnails/31.jpg)
Prepared for MDC 2019
Fan Out / Fan In
![Page 32: Serverless Azure Functions: Lessons LearnedServerless Min/Max scaling Instance sizing Perpetually warm instances VnetConnectivity. Prepared for MDC 2019 Function App vs Function Function](https://reader030.vdocuments.net/reader030/viewer/2022041015/5ec653ae32b52a2d1c7c3536/html5/thumbnails/32.jpg)
Prepared for MDC 2019
Reporting Use Case• Reporting database periodically built to support multiple activities
o External exportso Product activation checkso Product classification operations
• Activities are run on different scheduleso Every 30 minuteso Once an houro Twice a dayo Once a day
• Needed to coordinate the refreshing of the reporting database with tolerance for stale data
![Page 33: Serverless Azure Functions: Lessons LearnedServerless Min/Max scaling Instance sizing Perpetually warm instances VnetConnectivity. Prepared for MDC 2019 Function App vs Function Function](https://reader030.vdocuments.net/reader030/viewer/2022041015/5ec653ae32b52a2d1c7c3536/html5/thumbnails/33.jpg)
Prepared for MDC 2019
Reporting Implementation• Bundled Functions and orchestrator in a single
Function App• Orchestration fires every 10 minutes and kicks
off other activities• Each function determines if it needs to be
executed and if it needs updated data
![Page 34: Serverless Azure Functions: Lessons LearnedServerless Min/Max scaling Instance sizing Perpetually warm instances VnetConnectivity. Prepared for MDC 2019 Function App vs Function Function](https://reader030.vdocuments.net/reader030/viewer/2022041015/5ec653ae32b52a2d1c7c3536/html5/thumbnails/34.jpg)
Prepared for MDC 2019
DEPLOYMENT & CONFIGURATIONPutting things in their place
![Page 35: Serverless Azure Functions: Lessons LearnedServerless Min/Max scaling Instance sizing Perpetually warm instances VnetConnectivity. Prepared for MDC 2019 Function App vs Function Function](https://reader030.vdocuments.net/reader030/viewer/2022041015/5ec653ae32b52a2d1c7c3536/html5/thumbnails/35.jpg)
Prepared for MDC 2019
Deployment and Configuration• Using Azure DevOps for Build and Release• Using Git for source control• All functions are housed in a single Integration VS solution
LOCAL DEV UAT PROD
![Page 36: Serverless Azure Functions: Lessons LearnedServerless Min/Max scaling Instance sizing Perpetually warm instances VnetConnectivity. Prepared for MDC 2019 Function App vs Function Function](https://reader030.vdocuments.net/reader030/viewer/2022041015/5ec653ae32b52a2d1c7c3536/html5/thumbnails/36.jpg)
Prepared for MDC 2019
Deployment –Initial Approach• Single build for the whole VS Integration solution• Release had a step per function
o Eventually 20+ steps
• Issues identified:o Required replicating the build per environmento Each time a new function was developed, it had to be added to the
build in each environment§ It was a lot to keep up with
o Hard to track status of release as functions soon number more than 20
![Page 37: Serverless Azure Functions: Lessons LearnedServerless Min/Max scaling Instance sizing Perpetually warm instances VnetConnectivity. Prepared for MDC 2019 Function App vs Function Function](https://reader030.vdocuments.net/reader030/viewer/2022041015/5ec653ae32b52a2d1c7c3536/html5/thumbnails/37.jpg)
Prepared for MDC 2019
Deployment –Refined Approach• Every function has its own build and release• Tokenized replacement per environment in release• Creation of ARM templates are part of development process• Allows devs to update app settings via PR/code check in• Functions deploy very fast
![Page 38: Serverless Azure Functions: Lessons LearnedServerless Min/Max scaling Instance sizing Perpetually warm instances VnetConnectivity. Prepared for MDC 2019 Function App vs Function Function](https://reader030.vdocuments.net/reader030/viewer/2022041015/5ec653ae32b52a2d1c7c3536/html5/thumbnails/38.jpg)
Prepared for MDC 2019
![Page 39: Serverless Azure Functions: Lessons LearnedServerless Min/Max scaling Instance sizing Perpetually warm instances VnetConnectivity. Prepared for MDC 2019 Function App vs Function Function](https://reader030.vdocuments.net/reader030/viewer/2022041015/5ec653ae32b52a2d1c7c3536/html5/thumbnails/39.jpg)
Prepared for MDC 2019
Configuration• Each function has a variety of configuration parameters
o Trigger settingso Database connectionso Service Bus connection stringso Service Bus Queue nameso Certificates thumbprints
• Many of the parameters vary per environment• Often need to store arrays of settings per store• Considerable volume of settings to manage
![Page 40: Serverless Azure Functions: Lessons LearnedServerless Min/Max scaling Instance sizing Perpetually warm instances VnetConnectivity. Prepared for MDC 2019 Function App vs Function Function](https://reader030.vdocuments.net/reader030/viewer/2022041015/5ec653ae32b52a2d1c7c3536/html5/thumbnails/40.jpg)
Prepared for MDC 2019
Configuration Initial Approach• Stored parameters in Azure App Settings
• Awkward to manage• No good way to handle nested/arrays of settings• Could not be easily checked into source control• Required coordination between developers and DevOps• Multiple environments required different settings
![Page 41: Serverless Azure Functions: Lessons LearnedServerless Min/Max scaling Instance sizing Perpetually warm instances VnetConnectivity. Prepared for MDC 2019 Function App vs Function Function](https://reader030.vdocuments.net/reader030/viewer/2022041015/5ec653ae32b52a2d1c7c3536/html5/thumbnails/41.jpg)
Prepared for MDC 2019
Configuration –Revised Approach• Use ARM templates for trigger settings• Store settings in a centralized file
• JSON format supports complex settings• File is copied to every function in the deployment• Environment based settings are transformed between environments
• Easier to manage • Good balance between source control access and configurability
![Page 42: Serverless Azure Functions: Lessons LearnedServerless Min/Max scaling Instance sizing Perpetually warm instances VnetConnectivity. Prepared for MDC 2019 Function App vs Function Function](https://reader030.vdocuments.net/reader030/viewer/2022041015/5ec653ae32b52a2d1c7c3536/html5/thumbnails/42.jpg)
Prepared for MDC 2019
Tools
![Page 43: Serverless Azure Functions: Lessons LearnedServerless Min/Max scaling Instance sizing Perpetually warm instances VnetConnectivity. Prepared for MDC 2019 Function App vs Function Function](https://reader030.vdocuments.net/reader030/viewer/2022041015/5ec653ae32b52a2d1c7c3536/html5/thumbnails/43.jpg)
Prepared for MDC 2019
Service Bus Explorer
![Page 44: Serverless Azure Functions: Lessons LearnedServerless Min/Max scaling Instance sizing Perpetually warm instances VnetConnectivity. Prepared for MDC 2019 Function App vs Function Function](https://reader030.vdocuments.net/reader030/viewer/2022041015/5ec653ae32b52a2d1c7c3536/html5/thumbnails/44.jpg)
Prepared for MDC 2019
Service Bus Explorer
• Available at https://github.com/paolosalvatori/ServiceBusExplorer
Tip:
• Edit the ServiceBusExplorer.vshost.exe.config and add your connection string to the <serviceBusNamespaces> nodes
![Page 45: Serverless Azure Functions: Lessons LearnedServerless Min/Max scaling Instance sizing Perpetually warm instances VnetConnectivity. Prepared for MDC 2019 Function App vs Function Function](https://reader030.vdocuments.net/reader030/viewer/2022041015/5ec653ae32b52a2d1c7c3536/html5/thumbnails/45.jpg)
Prepared for MDC 2019
Microsoft Azure Storage Explorer
![Page 46: Serverless Azure Functions: Lessons LearnedServerless Min/Max scaling Instance sizing Perpetually warm instances VnetConnectivity. Prepared for MDC 2019 Function App vs Function Function](https://reader030.vdocuments.net/reader030/viewer/2022041015/5ec653ae32b52a2d1c7c3536/html5/thumbnails/46.jpg)
Prepared for MDC 2019
Microsoft Azure Storage Explorer • Uses your Azure accounts• Available at https://azure.microsoft.com/en-us/features/storage-explorer/
![Page 47: Serverless Azure Functions: Lessons LearnedServerless Min/Max scaling Instance sizing Perpetually warm instances VnetConnectivity. Prepared for MDC 2019 Function App vs Function Function](https://reader030.vdocuments.net/reader030/viewer/2022041015/5ec653ae32b52a2d1c7c3536/html5/thumbnails/47.jpg)
Prepared for MDC 2019
Build Azure Functions to be scalableMicrosoft Guidance• https://docs.microsoft.com/en-us/azure/azure-functions/functions-dotnet-
dependency-injection• https://docs.microsoft.com/en-gb/azure/azure-functions/manage-
connections
![Page 48: Serverless Azure Functions: Lessons LearnedServerless Min/Max scaling Instance sizing Perpetually warm instances VnetConnectivity. Prepared for MDC 2019 Function App vs Function Function](https://reader030.vdocuments.net/reader030/viewer/2022041015/5ec653ae32b52a2d1c7c3536/html5/thumbnails/48.jpg)
Prepared for MDC 2019
TAKEWAYS
![Page 49: Serverless Azure Functions: Lessons LearnedServerless Min/Max scaling Instance sizing Perpetually warm instances VnetConnectivity. Prepared for MDC 2019 Function App vs Function Function](https://reader030.vdocuments.net/reader030/viewer/2022041015/5ec653ae32b52a2d1c7c3536/html5/thumbnails/49.jpg)
Prepared for MDC 2019
In preparing for battle I have always found that plans are useless, but planning is indispensable.
Dwight D. Eisenhower
![Page 50: Serverless Azure Functions: Lessons LearnedServerless Min/Max scaling Instance sizing Perpetually warm instances VnetConnectivity. Prepared for MDC 2019 Function App vs Function Function](https://reader030.vdocuments.net/reader030/viewer/2022041015/5ec653ae32b52a2d1c7c3536/html5/thumbnails/50.jpg)
Prepared for MDC 2019
Lessons Learned• Plan your approach, know your choices, but be flexible• Know your trigger options and make sure your choices support how you plan
to scale• Functions scale rapidly, but you still need to consider being chunky over
chatty to achieve scalability• Durable functions support complex processing, but should be approached
carefully as they are tricky to develop and debug• Deploy Function Apps individually. Atomic DevOps processes are easier to
manage.• Configuration parameters can grow rapidly. Centralize what you can with
plans to transform per environment.• Determine your approach to monitoring the functions
![Page 51: Serverless Azure Functions: Lessons LearnedServerless Min/Max scaling Instance sizing Perpetually warm instances VnetConnectivity. Prepared for MDC 2019 Function App vs Function Function](https://reader030.vdocuments.net/reader030/viewer/2022041015/5ec653ae32b52a2d1c7c3536/html5/thumbnails/51.jpg)
Prepared for MDC 2019
QUESTIONS
![Page 52: Serverless Azure Functions: Lessons LearnedServerless Min/Max scaling Instance sizing Perpetually warm instances VnetConnectivity. Prepared for MDC 2019 Function App vs Function Function](https://reader030.vdocuments.net/reader030/viewer/2022041015/5ec653ae32b52a2d1c7c3536/html5/thumbnails/52.jpg)
Prepared for MDC 2019