SlideShare ist ein Scribd-Unternehmen logo
1 von 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

Weitere ähnliche Inhalte

Was ist angesagt?

Webtech Conference: NoSQL and Web scalability
Webtech Conference: NoSQL and Web scalabilityWebtech Conference: NoSQL and Web scalability
Webtech Conference: NoSQL and Web scalabilityLuca Bonmassar
 
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.netSynapseindiaComplaints
 
NIIF Grid Development portfolio
NIIF Grid Development portfolioNIIF Grid Development portfolio
NIIF Grid Development portfolioFerenc Szalai
 
Timur Shemsedinov "Эволюция архитектуры ИС"
Timur Shemsedinov "Эволюция архитектуры ИС"Timur Shemsedinov "Эволюция архитектуры ИС"
Timur Shemsedinov "Эволюция архитектуры ИС"OdessaJS Conf
 
Concurrency Patterns with MongoDB
Concurrency Patterns with MongoDBConcurrency Patterns with MongoDB
Concurrency Patterns with MongoDBYann Cluchey
 
Log management with ELK
Log management with ELKLog management with ELK
Log management with ELKGeert Pante
 
OrigoDB - Your data fits in RAM
OrigoDB - Your data fits in RAMOrigoDB - Your data fits in RAM
OrigoDB - Your data fits in RAMRobert Friberg
 
OrigoDB - take the red pill
OrigoDB - take the red pillOrigoDB - take the red pill
OrigoDB - take the red pillRobert Friberg
 
Mongodb basics and architecture
Mongodb basics and architectureMongodb basics and architecture
Mongodb basics and architectureBishal Khanal
 
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 MongoDBMongoDB
 
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 dataRamesh Veeramani
 
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 GoMongoDB
 
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 kafkaZach Cox
 
Introduction to mongo db
Introduction to mongo dbIntroduction to mongo db
Introduction to mongo dbLawrence Mwai
 
Introduction to Azure DocumentDB
Introduction to Azure DocumentDBIntroduction to Azure DocumentDB
Introduction to Azure DocumentDBRadenko Zec
 
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 ...MongoDB
 

Was ist angesagt? (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
 

Andere mochten auch

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 AiresGuillermo Javier Bellmann
 
Presentació del CEPA Pitiüses
Presentació del CEPA PitiüsesPresentació del CEPA Pitiüses
Presentació del CEPA PitiüsesCEP d'Eivissa
 
Jonathan Walker - Curriculum Vitae
Jonathan Walker - Curriculum VitaeJonathan Walker - Curriculum Vitae
Jonathan Walker - Curriculum VitaeJonathan Walker
 
Cas complert fracàs escolar (adrià)
Cas complert fracàs escolar (adrià) Cas complert fracàs escolar (adrià)
Cas complert fracàs escolar (adrià) CEP d'Eivissa
 
Media evaluation question 2
Media evaluation question 2Media evaluation question 2
Media evaluation question 2mmorphy97
 
La ràdio a l’escola
La ràdio a l’escolaLa ràdio a l’escola
La ràdio a l’escolaCEP d'Eivissa
 
Animación de textos u objetos
Animación de textos u objetosAnimación de textos u objetos
Animación de textos u objetossalomester
 
Document Junts del Ceip Sant Carles
Document Junts del Ceip Sant Carles Document Junts del Ceip Sant Carles
Document Junts del Ceip Sant Carles CEP d'Eivissa
 
INTRODUCCION AL DISEÑO
INTRODUCCION AL DISEÑO INTRODUCCION AL DISEÑO
INTRODUCCION AL DISEÑO alcivar360
 
Media evaluation question 3
Media evaluation question 3Media evaluation question 3
Media evaluation question 3mmorphy97
 
Sparta and Athens by group 3
Sparta and Athens by group 3Sparta and Athens by group 3
Sparta and Athens by group 3cedricbaul18
 
Media evaluation question 4
Media evaluation question 4Media evaluation question 4
Media evaluation question 4mmorphy97
 
Presentació Projectes Internacionals IES Algarb
Presentació Projectes Internacionals IES AlgarbPresentació Projectes Internacionals IES Algarb
Presentació Projectes Internacionals IES AlgarbCEP d'Eivissa
 

Andere mochten auch (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
 

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

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 DatabaseMarcelo Ochoa
 
Drools & jBPM future roadmap talk
Drools & jBPM future roadmap talkDrools & jBPM future roadmap talk
Drools & jBPM future roadmap talkMark Proctor
 
Elements for an iOS Backend
Elements for an iOS BackendElements for an iOS Backend
Elements for an iOS BackendLaurent Cerveau
 
Building and Scaling Node.js Applications
Building and Scaling Node.js ApplicationsBuilding and Scaling Node.js Applications
Building and Scaling Node.js ApplicationsOhad Kravchick
 
MFF UK - Advanced iOS Topics
MFF UK - Advanced iOS TopicsMFF UK - Advanced iOS Topics
MFF UK - Advanced iOS TopicsPetr Dvorak
 
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 contentAlkacon Software GmbH & Co. KG
 
Logisland "Event Mining at scale"
Logisland "Event Mining at scale"Logisland "Event Mining at scale"
Logisland "Event Mining at scale"Thomas Bailet
 
Mastering Azure Functions
Mastering Azure FunctionsMastering Azure Functions
Mastering Azure FunctionsBob German
 
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
 
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.jsYoann Gotthilf
 
Hazelcast and MongoDB at Cloud CMS
Hazelcast and MongoDB at Cloud CMSHazelcast and MongoDB at Cloud CMS
Hazelcast and MongoDB at Cloud CMSuzquiano
 
introduction to node.js
introduction to node.jsintroduction to node.js
introduction to node.jsorkaplan
 
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...ddrschiw
 
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
 
Microservices and modularity with java
Microservices and modularity with javaMicroservices and modularity with java
Microservices and modularity with javaDPC Consulting Ltd
 
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 ApplicationJonathan Katz
 
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 GuideMohanraj Thirumoorthy
 

Ähnlich wie 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
 

Kürzlich hochgeladen

Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...apidays
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 

Kürzlich hochgeladen (20)

Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 

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