SlideShare a Scribd company logo
1 of 19
Presented
By
WELCOME
MKEDOTNET
Rapid prototyping using Azure Functions -
A Walk on the Wild Side
Samrat Saha
08.29.2016
SMS Based Survey System
Users can text responses to a question
Users can opt in/out along with preferences
Topics that are time based
Automatic detection of topic
Start with a POC
4
Traditional Approach
Way too many ways to skin this cat - prime concern is infrastructure
5
Cloud Approach
● On-Demand
● Horizontal Scaling
● Paradigms (Paxos, Consistent Hashing, Redundancies, SLA’S!)
● Azure
6
7
Azure Functions
● Event driven on demand compute resources
● Serverless Architecture
● WebJobs SDK as a Service
● A function runs in the context of a Function App
8
Bindings
● Triggers: HTTP, Events, Queues
● Input: Blob Storage, Table Storage, DocumentDB
● Output
9
Function App Folder Structure
● WWWRoot
○ host.json
○ function1
• run.csx
• function.json
• bin
○ function 2
• run.csx
• function.json
• Bin
○ sharedAssemblies
• usefulAssembly.dll
1
host.json
● Runtime specific config: Impacts entire function app
● Can set function timeouts, overall behaviors like service bus settings
{
"functionTimeout": "00:10:00"
}
1
function.json
{
"bindings": [
{
"name": "queueItem",
"type": "serviceBusTrigger",
"direction": "in",
"queueName": "lc_incoming_sms_queue",
"connection": "lc_incoming_sms_read_connection",
"accessRights": "Listen"
},
{
"type": "serviceBus",
"name": "outputSbMsg",
"queueName": "lc_bluemix_results_queue",
"connection": "lc_bluemix_results_manage_connection",
"accessRights": "Manage",
"direction": "out"
}
],
"disabled": false
}
1
run.csx
#r "../sharedAssemblies/LC-SMS-Quote-DomainModel.dll"
using System;
using System.Threading.Tasks;
using LC_SMS_DomainModel;
using LC_SMS_DomainModel.AzureLogging;
private static TraceWriter _logger;
public static void Run(string queueItem, out string outputSbMsg, TraceWriter log)
{
_logger = log;
log.Info($"C# ServiceBus queue trigger function processed message: {queueItem}");
AzureLogger.InfoCallback = new AzureLogger.InfoDelegate(InfoDelegate);
LCSMSDomainModel domainModel = new LCSMSDomainModel();
domainModel.Init();
String response = domainModel.HandleIncomingSMS(queueItem);
outputSbMsg = response;
}
public static void VerboseDelegate(String message, String source){
_logger.Verbose(message);
}
public static void InfoDelegate(String message, String source=null){
_logger.Info(message);
}
1
Leveraging External Assemblies
● Some namespaces like System automatically imported
● Framework assemblies (automatically available through Azure Functions
Hosting Environment)
#r “System.Web.Http"
● bin folder relative to function
#r “functionSpecificUsefuldll.dll"
● Shared assemblies in under webroot, accessible by relative path
#r "../sharedAssemblies/LC-SMS-Quote-DomainModel.dll"
● Inside assembly to access config:
String storageAccountId = Environment.GetEnvironmentVariable(CONFIG_STORAGE_ACCOUNT,EnvironmentVariableTarget.Process);
● Use Project.Json for NuGet
1
Scaling
● App Service Plan: Dedicated VM, leverage under utilized resources, good for
long running
● Dynamic Service Plan: Function app instance...more instances can be added
dynamically. Best use for intermittent/ short running
● Parallel Execution: Single threaded function runtime-> Scale to multiple
1
Function Chaining
● Call a function from another
● Message Queue allows for decoupling
● Allows for semi-pure functional programming
1
Where does this leave us?
● Prototype being worked on (for this example)
● People loved it...got sold to a client
1
1
Thanks
Centare
LC
1

More Related Content

What's hot

Webtech Conference: NoSQL and Web scalability
Webtech Conference: NoSQL and Web scalabilityWebtech Conference: NoSQL and Web scalability
Webtech Conference: NoSQL and Web scalability
Luca Bonmassar
 
NIIF Grid Development portfolio
NIIF Grid Development portfolioNIIF Grid Development portfolio
NIIF Grid Development portfolio
Ferenc Szalai
 
Concurrency Patterns with MongoDB
Concurrency Patterns with MongoDBConcurrency Patterns with MongoDB
Concurrency Patterns with MongoDB
Yann Cluchey
 

What's hot (20)

Webtech Conference: NoSQL and Web scalability
Webtech Conference: NoSQL and Web scalabilityWebtech Conference: NoSQL and Web scalability
Webtech Conference: NoSQL and Web scalability
 
Synapse india reviews sharing chapter 23 – asp.net
Synapse india reviews sharing  chapter 23 – asp.netSynapse india reviews sharing  chapter 23 – asp.net
Synapse india reviews sharing chapter 23 – asp.net
 
Windows Azure Tables e NoSQL
Windows Azure Tables e NoSQLWindows Azure Tables e NoSQL
Windows Azure Tables e NoSQL
 
NIIF Grid Development portfolio
NIIF Grid Development portfolioNIIF Grid Development portfolio
NIIF Grid Development portfolio
 
Timur Shemsedinov "Эволюция архитектуры ИС"
Timur Shemsedinov "Эволюция архитектуры ИС"Timur Shemsedinov "Эволюция архитектуры ИС"
Timur Shemsedinov "Эволюция архитектуры ИС"
 
Concurrency Patterns with MongoDB
Concurrency Patterns with MongoDBConcurrency Patterns with MongoDB
Concurrency Patterns with MongoDB
 
Log management with ELK
Log management with ELKLog management with ELK
Log management with ELK
 
OrigoDB - Your data fits in RAM
OrigoDB - Your data fits in RAMOrigoDB - Your data fits in RAM
OrigoDB - Your data fits in RAM
 
OrigoDB - take the red pill
OrigoDB - take the red pillOrigoDB - take the red pill
OrigoDB - take the red pill
 
Mongodb basics and architecture
Mongodb basics and architectureMongodb basics and architecture
Mongodb basics and architecture
 
Dev Jumpstart: Build Your First App with MongoDB
Dev Jumpstart: Build Your First App with MongoDBDev Jumpstart: Build Your First App with MongoDB
Dev Jumpstart: Build Your First App with MongoDB
 
Fetch data from form
Fetch data from formFetch data from form
Fetch data from form
 
Using cassandra as a distributed logging to store pb data
Using cassandra as a distributed logging to store pb dataUsing cassandra as a distributed logging to store pb data
Using cassandra as a distributed logging to store pb data
 
Logs management
Logs managementLogs management
Logs management
 
Putting the Go in MongoDB: How We Rebuilt The MongoDB Tools in Go
Putting the Go in MongoDB: How We Rebuilt The MongoDB Tools in GoPutting the Go in MongoDB: How We Rebuilt The MongoDB Tools in Go
Putting the Go in MongoDB: How We Rebuilt The MongoDB Tools in Go
 
Updating materialized views and caches using kafka
Updating materialized views and caches using kafkaUpdating materialized views and caches using kafka
Updating materialized views and caches using kafka
 
Introduction to mongo db
Introduction to mongo dbIntroduction to mongo db
Introduction to mongo db
 
Introduction to Azure DocumentDB
Introduction to Azure DocumentDBIntroduction to Azure DocumentDB
Introduction to Azure DocumentDB
 
MongoDB IoT City Tour STUTTGART: Managing the Database Complexity, by Arthur ...
MongoDB IoT City Tour STUTTGART: Managing the Database Complexity, by Arthur ...MongoDB IoT City Tour STUTTGART: Managing the Database Complexity, by Arthur ...
MongoDB IoT City Tour STUTTGART: Managing the Database Complexity, by Arthur ...
 
Orms vs Micro-ORMs
Orms vs Micro-ORMsOrms vs Micro-ORMs
Orms vs Micro-ORMs
 

Viewers also liked

Jonathan Walker - Curriculum Vitae
Jonathan Walker - Curriculum VitaeJonathan Walker - Curriculum Vitae
Jonathan Walker - Curriculum Vitae
Jonathan Walker
 
Media evaluation question 2
Media evaluation question 2Media evaluation question 2
Media evaluation question 2
mmorphy97
 
Animación de textos u objetos
Animación de textos u objetosAnimación de textos u objetos
Animación de textos u objetos
salomester
 
Media evaluation question 3
Media evaluation question 3Media evaluation question 3
Media evaluation question 3
mmorphy97
 
Media evaluation question 4
Media evaluation question 4Media evaluation question 4
Media evaluation question 4
mmorphy97
 

Viewers also liked (20)

Azure Scheduler
Azure SchedulerAzure Scheduler
Azure Scheduler
 
Introducción a Azure App Service - MUG Buenos Aires
Introducción a Azure App Service - MUG Buenos AiresIntroducción a Azure App Service - MUG Buenos Aires
Introducción a Azure App Service - MUG Buenos Aires
 
Presentació del CEPA Pitiüses
Presentació del CEPA PitiüsesPresentació del CEPA Pitiüses
Presentació del CEPA Pitiüses
 
Jonathan Walker - Curriculum Vitae
Jonathan Walker - Curriculum VitaeJonathan Walker - Curriculum Vitae
Jonathan Walker - Curriculum Vitae
 
Cas complert fracàs escolar (adrià)
Cas complert fracàs escolar (adrià) Cas complert fracàs escolar (adrià)
Cas complert fracàs escolar (adrià)
 
Media evaluation question 2
Media evaluation question 2Media evaluation question 2
Media evaluation question 2
 
La ràdio a l’escola
La ràdio a l’escolaLa ràdio a l’escola
La ràdio a l’escola
 
Animación de textos u objetos
Animación de textos u objetosAnimación de textos u objetos
Animación de textos u objetos
 
Lego
LegoLego
Lego
 
current resume
current resumecurrent resume
current resume
 
Kc fall inspiration 4
Kc fall inspiration 4Kc fall inspiration 4
Kc fall inspiration 4
 
Document Junts del Ceip Sant Carles
Document Junts del Ceip Sant Carles Document Junts del Ceip Sant Carles
Document Junts del Ceip Sant Carles
 
INTRODUCCION AL DISEÑO
INTRODUCCION AL DISEÑO INTRODUCCION AL DISEÑO
INTRODUCCION AL DISEÑO
 
Media evaluation question 3
Media evaluation question 3Media evaluation question 3
Media evaluation question 3
 
Sparta and Athens by group 3
Sparta and Athens by group 3Sparta and Athens by group 3
Sparta and Athens by group 3
 
Media evaluation question 4
Media evaluation question 4Media evaluation question 4
Media evaluation question 4
 
IRS Taxes Help
IRS Taxes HelpIRS Taxes Help
IRS Taxes Help
 
Ppt
PptPpt
Ppt
 
Current resume
Current resumeCurrent resume
Current resume
 
Presentació Projectes Internacionals IES Algarb
Presentació Projectes Internacionals IES AlgarbPresentació Projectes Internacionals IES Algarb
Presentació Projectes Internacionals IES Algarb
 

Similar to Rapid prototyping using azure functions - A walk on the wild side

MFF UK - Advanced iOS Topics
MFF UK - Advanced iOS TopicsMFF UK - Advanced iOS Topics
MFF UK - Advanced iOS Topics
Petr Dvorak
 
Pm ix tutorial-june2019-pub (1)
Pm ix tutorial-june2019-pub (1)Pm ix tutorial-june2019-pub (1)
Pm ix tutorial-june2019-pub (1)
ewerkboy
 
IMC Summit 2016 Breakout - William Bain - Implementing Extensible Data Struct...
IMC Summit 2016 Breakout - William Bain - Implementing Extensible Data Struct...IMC Summit 2016 Breakout - William Bain - Implementing Extensible Data Struct...
IMC Summit 2016 Breakout - William Bain - Implementing Extensible Data Struct...
In-Memory Computing Summit
 

Similar to Rapid prototyping using azure functions - A walk on the wild side (20)

Experiences with Evangelizing Java Within the Database
Experiences with Evangelizing Java Within the DatabaseExperiences with Evangelizing Java Within the Database
Experiences with Evangelizing Java Within the Database
 
Drools & jBPM future roadmap talk
Drools & jBPM future roadmap talkDrools & jBPM future roadmap talk
Drools & jBPM future roadmap talk
 
Elements for an iOS Backend
Elements for an iOS BackendElements for an iOS Backend
Elements for an iOS Backend
 
Building and Scaling Node.js Applications
Building and Scaling Node.js ApplicationsBuilding and Scaling Node.js Applications
Building and Scaling Node.js Applications
 
MFF UK - Advanced iOS Topics
MFF UK - Advanced iOS TopicsMFF UK - Advanced iOS Topics
MFF UK - Advanced iOS Topics
 
OpenCms Days 2012 - OpenCms 8.5: Using Apache Solr to retrieve content
OpenCms Days 2012 - OpenCms 8.5: Using Apache Solr to retrieve contentOpenCms Days 2012 - OpenCms 8.5: Using Apache Solr to retrieve content
OpenCms Days 2012 - OpenCms 8.5: Using Apache Solr to retrieve content
 
Logisland "Event Mining at scale"
Logisland "Event Mining at scale"Logisland "Event Mining at scale"
Logisland "Event Mining at scale"
 
Mastering Azure Functions
Mastering Azure FunctionsMastering Azure Functions
Mastering Azure Functions
 
Pm ix tutorial-june2019-pub (1)
Pm ix tutorial-june2019-pub (1)Pm ix tutorial-june2019-pub (1)
Pm ix tutorial-june2019-pub (1)
 
Introduction to REST API with Node.js
Introduction to REST API with Node.jsIntroduction to REST API with Node.js
Introduction to REST API with Node.js
 
Hazelcast and MongoDB at Cloud CMS
Hazelcast and MongoDB at Cloud CMSHazelcast and MongoDB at Cloud CMS
Hazelcast and MongoDB at Cloud CMS
 
introduction to node.js
introduction to node.jsintroduction to node.js
introduction to node.js
 
Liferay (DXP) 7 Tech Meetup for Developers
Liferay (DXP) 7 Tech Meetup for DevelopersLiferay (DXP) 7 Tech Meetup for Developers
Liferay (DXP) 7 Tech Meetup for Developers
 
Ad111
Ad111Ad111
Ad111
 
AD111 -- Harnessing the Power of Server-Side JavaScript and Other Advanced XP...
AD111 -- Harnessing the Power of Server-Side JavaScript and Other Advanced XP...AD111 -- Harnessing the Power of Server-Side JavaScript and Other Advanced XP...
AD111 -- Harnessing the Power of Server-Side JavaScript and Other Advanced XP...
 
Grails 101
Grails 101Grails 101
Grails 101
 
IMC Summit 2016 Breakout - William Bain - Implementing Extensible Data Struct...
IMC Summit 2016 Breakout - William Bain - Implementing Extensible Data Struct...IMC Summit 2016 Breakout - William Bain - Implementing Extensible Data Struct...
IMC Summit 2016 Breakout - William Bain - Implementing Extensible Data Struct...
 
Microservices and modularity with java
Microservices and modularity with javaMicroservices and modularity with java
Microservices and modularity with java
 
Building a Complex, Real-Time Data Management Application
Building a Complex, Real-Time Data Management ApplicationBuilding a Complex, Real-Time Data Management Application
Building a Complex, Real-Time Data Management Application
 
Developing Microservices using Spring - Beginner's Guide
Developing Microservices using Spring - Beginner's GuideDeveloping Microservices using Spring - Beginner's Guide
Developing Microservices using Spring - Beginner's Guide
 

Recently uploaded

Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Victor Rentea
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Victor Rentea
 

Recently uploaded (20)

Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptx
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)
 
Navigating Identity and Access Management in the Modern Enterprise
Navigating Identity and Access Management in the Modern EnterpriseNavigating Identity and Access Management in the Modern Enterprise
Navigating Identity and Access Management in the Modern Enterprise
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
ChatGPT and Beyond - Elevating DevOps Productivity
ChatGPT and Beyond - Elevating DevOps ProductivityChatGPT and Beyond - Elevating DevOps Productivity
ChatGPT and Beyond - Elevating DevOps Productivity
 
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
 
API Governance and Monetization - The evolution of API governance
API Governance and Monetization -  The evolution of API governanceAPI Governance and Monetization -  The evolution of API governance
API Governance and Monetization - The evolution of API governance
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
Design and Development of a Provenance Capture Platform for Data Science
Design and Development of a Provenance Capture Platform for Data ScienceDesign and Development of a Provenance Capture Platform for Data Science
Design and Development of a Provenance Capture Platform for Data Science
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
 
Quantum Leap in Next-Generation Computing
Quantum Leap in Next-Generation ComputingQuantum Leap in Next-Generation Computing
Quantum Leap in Next-Generation Computing
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
WSO2 Micro Integrator for Enterprise Integration in a Decentralized, Microser...
WSO2 Micro Integrator for Enterprise Integration in a Decentralized, Microser...WSO2 Micro Integrator for Enterprise Integration in a Decentralized, Microser...
WSO2 Micro Integrator for Enterprise Integration in a Decentralized, Microser...
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
 
Introduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDMIntroduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDM
 

Rapid prototyping using azure functions - A walk on the wild side

  • 2.
  • 3. Rapid prototyping using Azure Functions - A Walk on the Wild Side Samrat Saha 08.29.2016
  • 4. SMS Based Survey System Users can text responses to a question Users can opt in/out along with preferences Topics that are time based Automatic detection of topic Start with a POC 4
  • 5. Traditional Approach Way too many ways to skin this cat - prime concern is infrastructure 5
  • 6. Cloud Approach ● On-Demand ● Horizontal Scaling ● Paradigms (Paxos, Consistent Hashing, Redundancies, SLA’S!) ● Azure 6
  • 7. 7
  • 8. Azure Functions ● Event driven on demand compute resources ● Serverless Architecture ● WebJobs SDK as a Service ● A function runs in the context of a Function App 8
  • 9. Bindings ● Triggers: HTTP, Events, Queues ● Input: Blob Storage, Table Storage, DocumentDB ● Output 9
  • 10. Function App Folder Structure ● WWWRoot ○ host.json ○ function1 • run.csx • function.json • bin ○ function 2 • run.csx • function.json • Bin ○ sharedAssemblies • usefulAssembly.dll 1
  • 11. host.json ● Runtime specific config: Impacts entire function app ● Can set function timeouts, overall behaviors like service bus settings { "functionTimeout": "00:10:00" } 1
  • 12. function.json { "bindings": [ { "name": "queueItem", "type": "serviceBusTrigger", "direction": "in", "queueName": "lc_incoming_sms_queue", "connection": "lc_incoming_sms_read_connection", "accessRights": "Listen" }, { "type": "serviceBus", "name": "outputSbMsg", "queueName": "lc_bluemix_results_queue", "connection": "lc_bluemix_results_manage_connection", "accessRights": "Manage", "direction": "out" } ], "disabled": false } 1
  • 13. run.csx #r "../sharedAssemblies/LC-SMS-Quote-DomainModel.dll" using System; using System.Threading.Tasks; using LC_SMS_DomainModel; using LC_SMS_DomainModel.AzureLogging; private static TraceWriter _logger; public static void Run(string queueItem, out string outputSbMsg, TraceWriter log) { _logger = log; log.Info($"C# ServiceBus queue trigger function processed message: {queueItem}"); AzureLogger.InfoCallback = new AzureLogger.InfoDelegate(InfoDelegate); LCSMSDomainModel domainModel = new LCSMSDomainModel(); domainModel.Init(); String response = domainModel.HandleIncomingSMS(queueItem); outputSbMsg = response; } public static void VerboseDelegate(String message, String source){ _logger.Verbose(message); } public static void InfoDelegate(String message, String source=null){ _logger.Info(message); } 1
  • 14. Leveraging External Assemblies ● Some namespaces like System automatically imported ● Framework assemblies (automatically available through Azure Functions Hosting Environment) #r “System.Web.Http" ● bin folder relative to function #r “functionSpecificUsefuldll.dll" ● Shared assemblies in under webroot, accessible by relative path #r "../sharedAssemblies/LC-SMS-Quote-DomainModel.dll" ● Inside assembly to access config: String storageAccountId = Environment.GetEnvironmentVariable(CONFIG_STORAGE_ACCOUNT,EnvironmentVariableTarget.Process); ● Use Project.Json for NuGet 1
  • 15. Scaling ● App Service Plan: Dedicated VM, leverage under utilized resources, good for long running ● Dynamic Service Plan: Function app instance...more instances can be added dynamically. Best use for intermittent/ short running ● Parallel Execution: Single threaded function runtime-> Scale to multiple 1
  • 16. Function Chaining ● Call a function from another ● Message Queue allows for decoupling ● Allows for semi-pure functional programming 1
  • 17. Where does this leave us? ● Prototype being worked on (for this example) ● People loved it...got sold to a client 1
  • 18. 1