This document provides information about Evolution Technologies, a software solutions company based in the UAE. It introduces Usama Wahab Khan, the CTO and Microsoft MVP who is a prominent Microsoft architect expert in the Gulf region. It then discusses Evolution Technologies' focus on providing state-of-the-art cloud technologies and solutions for private equity firms, investment banks, and real estate funds. Finally, it provides information about Function-as-a-Service (FaaS) and Azure Functions.
Introduction to Azure Functions.
An event-based serverless compute experience to accelerate your development. Scale based on demand and pay only for the resources you consume.
2015-12-02 - WebCamp - Microsoft Azure Logic AppsSandro Pereira
This session will be an introduction to the new Azure Integration features: Logic Apps and also a glimpse about API Apps. They are still in preview but how can we get start using these new features? We will learn how you can use Azure Logic Apps to automate business processes without using code. This course will demonstrate the new graphical designer and how to best take advantage of different Logic App capabilities for your scenarios.
Tokyo Azure Meetup #7 - Introduction to Serverless Architectures with Azure F...Tokyo Azure Meetup
Serverless architecture is the next big shift in computing - completely abstracting the underlying infrastructure and focusing 100% on the business logic.
Today we can create applications directly in our browser and leave the decision how they are hosted and scaled to the cloud provider. Moreover, this approach give us incredible control over the granularity of our applications since most of the time we are dealing with single function at a time.
In this presentation we will cover:
• Introduce Serverless Architectures
• Talk about the advantages of Serverless Architectures
• Discuss in details in event-driven computing
• Cover common Serverless approaches
• See practical applications with Azure Functions
• Compare AWS Lambda and Azure Functions
• Talk about open source alternatives
• Explore the relation between Microservices and Serverless Architectures
Introduction to Azure Functions.
An event-based serverless compute experience to accelerate your development. Scale based on demand and pay only for the resources you consume.
2015-12-02 - WebCamp - Microsoft Azure Logic AppsSandro Pereira
This session will be an introduction to the new Azure Integration features: Logic Apps and also a glimpse about API Apps. They are still in preview but how can we get start using these new features? We will learn how you can use Azure Logic Apps to automate business processes without using code. This course will demonstrate the new graphical designer and how to best take advantage of different Logic App capabilities for your scenarios.
Tokyo Azure Meetup #7 - Introduction to Serverless Architectures with Azure F...Tokyo Azure Meetup
Serverless architecture is the next big shift in computing - completely abstracting the underlying infrastructure and focusing 100% on the business logic.
Today we can create applications directly in our browser and leave the decision how they are hosted and scaled to the cloud provider. Moreover, this approach give us incredible control over the granularity of our applications since most of the time we are dealing with single function at a time.
In this presentation we will cover:
• Introduce Serverless Architectures
• Talk about the advantages of Serverless Architectures
• Discuss in details in event-driven computing
• Cover common Serverless approaches
• See practical applications with Azure Functions
• Compare AWS Lambda and Azure Functions
• Talk about open source alternatives
• Explore the relation between Microservices and Serverless Architectures
Presentation on deep dive into developing serverless REST API on Azure functions with a real-time example, explore tooling options, testing and deploying alongside a discussion on different ways of securing the APIs.
Moderne Serverless-Computing-Plattformen sind in aller Munde und stellen ein Programmiermodell zur Verfügung, wo sich der Nutzer keine Gedanken mehr über die Administration der Server, Storage, Netzwerk, virtuelle Maschinen, Hochverfügbarkeit und Skalierbarkeit machen brauch, sondern sich auf das Schreiben von eigenen Code konzentriert. Der Code bildet die Geschäftsanforderungen modular in Form von kleinen Funktionspaketen (Functions) ab. Functions sind das Herzstück der Serverless-Computing-Plattform. Sie lesen von der (oft Standard-)Eingabe, tätigen ihre Berechnungen und erzeugen eine Ausgabe. Die zu speichernden Ergebnisse von Funktionen werden in einem permanenten Datastore abgelegt, wie z.B. der Autonomous Database gespeichert. Die Autonomous Database besitzt folgende drei Eigenschaften self-driving, self-repairing und self-securing, die für einen modernen Anwendungsentwicklungsansatz benötigt werden.
Integrating Infrastructure as Code into a Continuous Delivery Pipeline | AWS ...Amazon Web Services
Ansible is a simple, but powerful automation tool with an agentless footprint that allows for the definition of architecture, intent, and policy as code that can be deployed across both on-prem and cloud infrastructure. This enables customers to extend their enterprise and applications into AWS in a way that maintains a consistent, secure posture as part of a continuous delivery pipeline. Customers can then natively integrate with AWS to seamlessly configure and deploy a range of AWS services such as Amazon Aurora, Amazon Redshift, Amazon EMR, Amazon Athena, Amazon CloudFront, Amazon Route 53, and Elastic Load Balancing from within Red Hat OpenShift across a secure, consistent hybrid cloud infrastructure. In this session, we will demonstrate how infrastructure can be instantiated with code as part of a continuous delivery pipeline and describe how that integrates with an OpenShift hybrid cloud deployment. Learn More: https://aws.amazon.com/government-education/
Overview session of Microsoft's Azure Service Fabric Overview (v1.5.175), delivered at AzurePT community event in Lisbon, held March 26. The session describes all the main components of the platform, with a focus on its architecture.
Building stateful serverless orchestrations with Azure Durable Azure Function...Callon Campbell
Durable Functions are an extension of Azure Functions that lets you write stateful functions in a serverless environment that unlock powerful orchestration workflows, which can transparently scale to handle massive workloads.
In this session, Callon will show you how to build stateful Azure Functions with .NET 7. He will also cover different application patterns that you can utilize in your applications to benefit from Durable Functions.
GIDS 2019: Developing Apps with Containers, Functions and Cloud ServicesPatrick Chanezon
Cloud native applications are increasingly composed of containers, serverless functions responding to events and managed cloud services. What is the best workflow and set of tools to provide a rapid, iterative development experience and to package applications using these three components?
This hand-on talk will compare and contrast several sets of tools and their associated workflows:
Using Docker Desktop, with its local Docker engine and Kubernetes cluster, with open source tools such as the Virtual Kubelet, or the Gloo hybrid app gateway, to build the most productive development inner-loop for these type of applications
OpenFaaS, Fn, or Nuclio open source serverless framework to run functions in containers locally
Telepresence to run a container locally, connected to a remote cluster
Helm and Draft
Knative
The talk will also cover how you can use the Cloud Native Application Bundle (CNAB) format and tools to package your applications and share them using a container registry.
Develop in ludicrous mode with azure serverlessLalit Kale
Today, every one of us wants to get things done fast. The fact of the matter is Serverless is a fantastic platform for doing things fast. Because, with Serverless, you really don’t have time to waste in terms of delivering your business value. Turns out you can with the right cloud services. In this talk we’ll create a microservice using Azure Functions and also get introduced to bigger picture of serverless computing.
I presented this session in Global Azure Bootcamp 2019 in Dublin. #GlobalAzure #AzureFunctions #Serverless
This presentation will give information about What is Serverless? What service is exposed by AWS to support Function as a Service. Lambda is AWS service which support serverless.
Devoxx 2018 - Pivotal and AxonIQ - Quickstart your event driven architectureBen Wilcock
Devoxx Belgium 2018 - Let Pivotal and AxonIQ take you on a journey into Axon Trader. Axon Trader is a new open-source reference architecture that demonstrates how to use Spring, Axon and Pivotal Cloud Foundry to deliver evolutionary microservice applications to prod in minutes.
The accompanying YouTube video can be found here: https://www.youtube.com/watch?v=15hzHUI4WNA
Building workflow solution with Microsoft Azure and Cloud | Integration MondayBizTalk360
Most will agree that a business process can be a workflow. But, what do people think of when running workflows in the Cloud and in particular Azure or Microsoft Cloud. Because, Microsoft Azure and Cloud offer us several options to build them: No-code/low-code, and a code option with Power Automate, Logic Apps, and Durable Functions? In this session, we'll explore each and focus on building workflows with them. Furthermore, we'll see the differences and how each could potentially, complement the other.
Presentation on deep dive into developing serverless REST API on Azure functions with a real-time example, explore tooling options, testing and deploying alongside a discussion on different ways of securing the APIs.
Moderne Serverless-Computing-Plattformen sind in aller Munde und stellen ein Programmiermodell zur Verfügung, wo sich der Nutzer keine Gedanken mehr über die Administration der Server, Storage, Netzwerk, virtuelle Maschinen, Hochverfügbarkeit und Skalierbarkeit machen brauch, sondern sich auf das Schreiben von eigenen Code konzentriert. Der Code bildet die Geschäftsanforderungen modular in Form von kleinen Funktionspaketen (Functions) ab. Functions sind das Herzstück der Serverless-Computing-Plattform. Sie lesen von der (oft Standard-)Eingabe, tätigen ihre Berechnungen und erzeugen eine Ausgabe. Die zu speichernden Ergebnisse von Funktionen werden in einem permanenten Datastore abgelegt, wie z.B. der Autonomous Database gespeichert. Die Autonomous Database besitzt folgende drei Eigenschaften self-driving, self-repairing und self-securing, die für einen modernen Anwendungsentwicklungsansatz benötigt werden.
Integrating Infrastructure as Code into a Continuous Delivery Pipeline | AWS ...Amazon Web Services
Ansible is a simple, but powerful automation tool with an agentless footprint that allows for the definition of architecture, intent, and policy as code that can be deployed across both on-prem and cloud infrastructure. This enables customers to extend their enterprise and applications into AWS in a way that maintains a consistent, secure posture as part of a continuous delivery pipeline. Customers can then natively integrate with AWS to seamlessly configure and deploy a range of AWS services such as Amazon Aurora, Amazon Redshift, Amazon EMR, Amazon Athena, Amazon CloudFront, Amazon Route 53, and Elastic Load Balancing from within Red Hat OpenShift across a secure, consistent hybrid cloud infrastructure. In this session, we will demonstrate how infrastructure can be instantiated with code as part of a continuous delivery pipeline and describe how that integrates with an OpenShift hybrid cloud deployment. Learn More: https://aws.amazon.com/government-education/
Overview session of Microsoft's Azure Service Fabric Overview (v1.5.175), delivered at AzurePT community event in Lisbon, held March 26. The session describes all the main components of the platform, with a focus on its architecture.
Building stateful serverless orchestrations with Azure Durable Azure Function...Callon Campbell
Durable Functions are an extension of Azure Functions that lets you write stateful functions in a serverless environment that unlock powerful orchestration workflows, which can transparently scale to handle massive workloads.
In this session, Callon will show you how to build stateful Azure Functions with .NET 7. He will also cover different application patterns that you can utilize in your applications to benefit from Durable Functions.
GIDS 2019: Developing Apps with Containers, Functions and Cloud ServicesPatrick Chanezon
Cloud native applications are increasingly composed of containers, serverless functions responding to events and managed cloud services. What is the best workflow and set of tools to provide a rapid, iterative development experience and to package applications using these three components?
This hand-on talk will compare and contrast several sets of tools and their associated workflows:
Using Docker Desktop, with its local Docker engine and Kubernetes cluster, with open source tools such as the Virtual Kubelet, or the Gloo hybrid app gateway, to build the most productive development inner-loop for these type of applications
OpenFaaS, Fn, or Nuclio open source serverless framework to run functions in containers locally
Telepresence to run a container locally, connected to a remote cluster
Helm and Draft
Knative
The talk will also cover how you can use the Cloud Native Application Bundle (CNAB) format and tools to package your applications and share them using a container registry.
Develop in ludicrous mode with azure serverlessLalit Kale
Today, every one of us wants to get things done fast. The fact of the matter is Serverless is a fantastic platform for doing things fast. Because, with Serverless, you really don’t have time to waste in terms of delivering your business value. Turns out you can with the right cloud services. In this talk we’ll create a microservice using Azure Functions and also get introduced to bigger picture of serverless computing.
I presented this session in Global Azure Bootcamp 2019 in Dublin. #GlobalAzure #AzureFunctions #Serverless
This presentation will give information about What is Serverless? What service is exposed by AWS to support Function as a Service. Lambda is AWS service which support serverless.
Devoxx 2018 - Pivotal and AxonIQ - Quickstart your event driven architectureBen Wilcock
Devoxx Belgium 2018 - Let Pivotal and AxonIQ take you on a journey into Axon Trader. Axon Trader is a new open-source reference architecture that demonstrates how to use Spring, Axon and Pivotal Cloud Foundry to deliver evolutionary microservice applications to prod in minutes.
The accompanying YouTube video can be found here: https://www.youtube.com/watch?v=15hzHUI4WNA
Building workflow solution with Microsoft Azure and Cloud | Integration MondayBizTalk360
Most will agree that a business process can be a workflow. But, what do people think of when running workflows in the Cloud and in particular Azure or Microsoft Cloud. Because, Microsoft Azure and Cloud offer us several options to build them: No-code/low-code, and a code option with Power Automate, Logic Apps, and Durable Functions? In this session, we'll explore each and focus on building workflows with them. Furthermore, we'll see the differences and how each could potentially, complement the other.
My Presentation on e learning at Dubai Land department and Dubai Institute of real estate. showcase importance of e learning and easy adaptability and advantages of e learning.
Epistemic Interaction - tuning interfaces to provide information for AI supportAlan Dix
Paper presented at SYNERGY workshop at AVI 2024, Genoa, Italy. 3rd June 2024
https://alandix.com/academic/papers/synergy2024-epistemic/
As machine learning integrates deeper into human-computer interactions, the concept of epistemic interaction emerges, aiming to refine these interactions to enhance system adaptability. This approach encourages minor, intentional adjustments in user behaviour to enrich the data available for system learning. This paper introduces epistemic interaction within the context of human-system communication, illustrating how deliberate interaction design can improve system understanding and adaptation. Through concrete examples, we demonstrate the potential of epistemic interaction to significantly advance human-computer interaction by leveraging intuitive human communication strategies to inform system design and functionality, offering a novel pathway for enriching user-system engagements.
Climate Impact of Software Testing at Nordic Testing DaysKari Kakkonen
My slides at Nordic Testing Days 6.6.2024
Climate impact / sustainability of software testing discussed on the talk. ICT and testing must carry their part of global responsibility to help with the climat warming. We can minimize the carbon footprint but we can also have a carbon handprint, a positive impact on the climate. Quality characteristics can be added with sustainability, and then measured continuously. Test environments can be used less, and in smaller scale and on demand. Test techniques can be used in optimizing or minimizing number of tests. Test automation can be used to speed up testing.
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf91mobiles
91mobiles recently conducted a Smart TV Buyer Insights Survey in which we asked over 3,000 respondents about the TV they own, aspects they look at on a new TV, and their TV buying preferences.
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfPaige Cruz
Monitoring and observability aren’t traditionally found in software curriculums and many of us cobble this knowledge together from whatever vendor or ecosystem we were first introduced to and whatever is a part of your current company’s observability stack.
While the dev and ops silo continues to crumble….many organizations still relegate monitoring & observability as the purview of ops, infra and SRE teams. This is a mistake - achieving a highly observable system requires collaboration up and down the stack.
I, a former op, would like to extend an invitation to all application developers to join the observability party will share these foundational concepts to build on:
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdfPeter Spielvogel
Building better applications for business users with SAP Fiori.
• What is SAP Fiori and why it matters to you
• How a better user experience drives measurable business benefits
• How to get started with SAP Fiori today
• How SAP Fiori elements accelerates application development
• How SAP Build Code includes SAP Fiori tools and other generative artificial intelligence capabilities
• How SAP Fiori paves the way for using AI in SAP apps
Elevating Tactical DDD Patterns Through Object CalisthenicsDorra BARTAGUIZ
After immersing yourself in the blue book and its red counterpart, attending DDD-focused conferences, and applying tactical patterns, you're left with a crucial question: How do I ensure my design is effective? Tactical patterns within Domain-Driven Design (DDD) serve as guiding principles for creating clear and manageable domain models. However, achieving success with these patterns requires additional guidance. Interestingly, we've observed that a set of constraints initially designed for training purposes remarkably aligns with effective pattern implementation, offering a more ‘mechanical’ approach. Let's explore together how Object Calisthenics can elevate the design of your tactical DDD patterns, offering concrete help for those venturing into DDD for the first time!
DevOps and Testing slides at DASA ConnectKari Kakkonen
My and Rik Marselis slides at 30.5.2024 DASA Connect conference. We discuss about what is testing, then what is agile testing and finally what is Testing in DevOps. Finally we had lovely workshop with the participants trying to find out different ways to think about quality and testing in different parts of the DevOps infinity loop.
UiPath Test Automation using UiPath Test Suite series, part 5DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 5. In this session, we will cover CI/CD with devops.
Topics covered:
CI/CD with in UiPath
End-to-end overview of CI/CD pipeline with Azure devops
Speaker:
Lyndsey Byblow, Test Suite Sales Engineer @ UiPath, Inc.
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...Neo4j
Leonard Jayamohan, Partner & Generative AI Lead, Deloitte
This keynote will reveal how Deloitte leverages Neo4j’s graph power for groundbreaking digital twin solutions, achieving a staggering 100x performance boost. Discover the essential role knowledge graphs play in successful generative AI implementations. Plus, get an exclusive look at an innovative Neo4j + Generative AI solution Deloitte is developing in-house.
Dr. Sean Tan, Head of Data Science, Changi Airport Group
Discover how Changi Airport Group (CAG) leverages graph technologies and generative AI to revolutionize their search capabilities. This session delves into the unique search needs of CAG’s diverse passengers and customers, showcasing how graph data structures enhance the accuracy and relevance of AI-generated search results, mitigating the risk of “hallucinations” and improving the overall customer journey.
Threats to mobile devices are more prevalent and increasing in scope and complexity. Users of mobile devices desire to take full advantage of the features
available on those devices, but many of the features provide convenience and capability but sacrifice security. This best practices guide outlines steps the users can take to better protect personal devices and information.
National Security Agency - NSA mobile device best practices
ServerLess by usama Azure fuctions.pptx
1.
2.
3. Introduction
Evolution Technologies is an innovative software-solutions company based in the United Arab Emirates. We are intensely proud of our team of highly
professional software engineers and developers. We started our operations in UAE since June 2014 under the Microsoft BizSpark partnership program .
Our Products Managing more 6 Billion USD AUM for our clients. One of the most talented Team of Software and business expert in region.
Usama Wahab Khan,
Chief Technology Officer at Evolution Technologies (Microsoft MVP)
Mr. Khan holds the prestigious award of Microsoft Most Valuable Professional (MVP). Indeed, he is one of
the most prominent Microsoft architect experts in the Gulf region and MIT Trained Artificial Intelligence
Professional. He is a keynote speaker in many conferences, related to various topics such as Microsoft Cloud
Technologies , Business Intelligence and AI. He authored Multiple books on Artificial Intelligence Professional
,Machine Learning ,Business Intelligence and digital transformation.
We are Leading Microsoft Cloud Partner and Solution Provider with focus on capital market.
Providing state of the art technologies an cloud solution for Private Equity firm , Investment
banks and real state fund.
Valuable Clients
8. What is Function-as-a-Service (FaaS)?
FaaS is the concept of serverless computing via serverless
architectures. Software developers can leverage this to deploy
an individual “function”, action, or piece of business logic.
They are expected to start within milliseconds and process
individual requests and then the process ends.
9. Serverless Computing (FaaS)
• Function as a Service (Azure Functions)
• Platform to develop, run, and manage application
• Without the complexity of building and maintaining the
infrastructure
Similar Technologies
• AWS Lambda
• Google Cloud Functions
• Open Whisk (IBM)
10. Azure Functions
Process events with Serverless code.
Make composing Cloud Apps insanely easy
Develop Functions in C#, Node.js, F#, Python, PHP, Batch and more
Easily schedule event-driven tasks across services
Expose Functions as HTTP API endpoints
Scale Functions based on customer demand
Easily integrate with Logic Apps
11. What can Azure Functions do?
• Run code based on HTTP requests
• Schedule code to run at predefined times
• Process new and modified:
• Azure Cosmos DB documents
• Azure Storage blobs
• Azure Queue storage messages
• Respond to Azure Event Grid events by using subscriptions and filters
• Respond to high volumes of Azure Event Hubs events
• Respond to Azure Service Bus queue and topic messages
14. Azure Functions hosting
https://github.com/azure/azure-functions-host (+other repos)
App Service plan
Code or container
Windows or Linux
Core Tools + favorite editor
Code or container
Windows, macOS, or Linux
●●●
+
Azure Functions host
runtime
Azure Functions Core
Tools
Azure Functions base
Docker image
Azure Functions .NET
Docker image
Azure Functions Node
Docker image ●●●
Premium plan
Windows or Linux
Consumption plan
Code
Windows or Linux
Platform
App delivery
OS
Code or container
15. • App Service offers dedicated and dynamic tiers.
• Dedicated is the existing App Service plan tiers
• Basic, Standard, Premium
• Pay based on # of reserved VMs
• You’re responsible for scale
• Dynamic
• Pay on number of executions
• Platform responsible for scale
15
Platform and scaling
16. Pay per execution model - two meters, three units
• Number of executions
• Duration of execution x reserved memory
16
Dynamic Tier Pricing
18. Trigger types
• Triggers based on Azure services:
• Cosmos DB
• Blob and queues
• Service Bus
• Event Hub
• Triggers based on common scenarios:
• HTTP request
• Scheduled timer
• Triggers based on third-party services:
• GitHub
• And more…
21. Durable Functions
Durable Functions is an extension of Azure Functions. You can use
Durable Functions for stateful orchestration of function execution. A
durable function app is a solution that's made up of different Azure
functions. Functions can play different roles in a durable function
orchestration.
22. Durable Functions
• Write stateful functions in a stateless environment
• Manages state, checkpoints, and restarts
• Defines an Orchestrator function
• Workflows are defined in code
• Calls other functions synchronously or asynchronously
• Checkpoint progress whenever function awaits
23. Example :Serverless batch processing with Durable Functions in Azure
Container Instances
1.The batch processing job is packaged into a container image stored in Azure
Container Registry (ACR), ready to deploy with options like AKS, Service Fabric, or ACI.
2.An HTTP trigger invokes the orchestrator function to orchestrate the container
deployment.
3.An activity function uses the container image stored in ACR to create an ACI
container in a container group.
4.The orchestrator function uses the container URL to call and start the batch
processing job on the container instance, and to monitor job progress.
5.Once the job completes, the batch processing job invokes the orchestrator function
by raising an external event, and provides job status Completed or Failed.
6.Depending on job status, the orchestrator function stops, restarts, or deletes the
container group.
24. Durable Function scenario - Chaining
Function chaining refers executing a sequence of functions in a particular order. Often, the
output of one function needs to be applied to the input of another function.
25. Durable Function scenario - Fan-out/fan-in
Fan-out/fan-in refers to the pattern of executing multiple functions in parallel, and then waiting
for all to finish
26. Durable Function scenario - Async HTTP APIs
Durable Functions provides built-in APIs that simplify the code that you write for interacting with
long-running function executions
27. Durable Function scenario - Monitoring
The monitor pattern refers to a flexible recurring process in a workflow—for example, polling
until certain conditions are met
28. Durable Function scenario - Human
interaction
Many processes involve human interaction. Automated processes must allow for human low
availability, and they often do so by using time-outs and compensation logic.
29. C#
Durable Function scenario - Chaining code
[FunctionName("Chaining")]
public static async Task<object> Run(
[OrchestrationTrigger] IDurableOrchestrationContext context)
{
try
{
var x = await context.CallActivityAsync<object>("F1", null);
var y = await context.CallActivityAsync<object>("F2", x);
var z = await context.CallActivityAsync<object>("F3", y);
return await context.CallActivityAsync<object>("F4", z);
}
catch (Exception)
{
// Error handling or compensation goes here.
}
}
30. Durable Function scenario - Fan-out/fan-in
code
[FunctionName("FanOutFanIn")]
public static async Task Run([OrchestrationTrigger] IDurableOrchestrationContext context)
{
var parallelTasks = new List<Task<int>>();
// Get a list of N work items to process in parallel.
object[] workBatch = await context.CallActivityAsync<object[]>("F1", null);
for (int i = 0; i < workBatch.Length; i++)
{
Task<int> task = context.CallActivityAsync<int>("F2", workBatch[i]);
parallelTasks.Add(task);
}
await Task.WhenAll(parallelTasks);
// Aggregate all N outputs and send the result to F3.
int sum = parallelTasks.Sum(t => t.Result);
await context.CallActivityAsync("F3", sum);
}
Microsoft Azure Functions is a powerful solution for processing bulk data, integrating systems, working with the Internet of Things (IoT), and building simple APIs and microservices.
Azure includes a series of templates you can use for the key scenarios that are listed on this slide.
Azure Functions integrates with various Azure and third-party services. These services can trigger your function and start execution, or they can serve as input and output for your code.
The following service integrations are supported by Azure Functions:
Azure Cosmos DB
Azure Event Hubs
Azure Event Grid
Azure Notification Hubs
Azure Service Bus (queues and topics)
Azure Storage (blob, queues, and tables)
On-premises (using Service Bus)
Twilio (SMS messages)
Azure Functions are designed to be portable and to be hosted in a variety of places, including:
Azure Functions service by using Resource consumption, Premium, or App Service Plans
Internet of Things (IoT) devices
Only Linux containers are supported as of now
Input and output bindings provide a declarative way to connect to data from within your code. Bindings are optional and an Azure Function can have multiple input and output bindings.
There are many types of triggers for Azure services including:
HTTPTrigger - Trigger the execution of your code by using an HTTP request.
TimerTrigger - Execute cleanup or other batch tasks on a predefined schedule.
GitHub webhook - Respond to events that occur in your GitHub repositories. Generic webhook - process webhook HTTP requests from any service that supports webhooks.
CosmosDBTrigger - Process Azure Cosmos DB documents when they are added or updated in collections in a NoSQL database.
BlobTrigger - Process Azure Storage blobs when they are added to containers. You might use this function for image resizing.
QueueTrigger - Respond to messages as they arrive in an Azure Storage queue.
EventHubTrigger - Respond to events delivered to an Azure Event Hub. Particularly useful in application instrumentation, user experience, or workflow processing, and Internet of Things (IoT) scenarios.
ServiceBusQueueTrigger - Connect your code to other Azure services or on-premises services by listening to message queues.
ServiceBusTopicTrigger - Connect your code to other Azure services or on-premises services by subscribing to topics.
In this example, the Function is triggered by a recurring schedule (nightly) and queries Azure Cosmos DB for a set of documents. The function then processes the documents, outputs blobs to Azure Storage, and outputs logs to Event Hubs.
Durable Functions is an extension of Azure Functions and Azure WebJobs that lets you write stateful functions in a serverless environment. The extension manages state, checkpoints, and restarts for you.
The extension lets you define stateful workflows in a new type of function called an Orchestrator function. Here are some of the advantages of Orchestrator functions:
They define workflows in code. No JSON schemas or designers are needed.
They can call other functions synchronously and asynchronously. Output from called functions can be saved to local variables.
They automatically checkpoint their progress whenever the function awaits. Local state is never lost if the process recycles or the virtual machine (VM) reboots.
Note: Durable Functions is an advanced extension for Azure Functions that is not appropriate for all applications. The rest of this section assumes that you have a strong familiarity with Azure Functions concepts and the challenges involved in serverless application development.
The primary use case for Durable Functions is simplifying complex, stateful coordination problems in serverless applications.
Durable Functions is an extension of Azure Functions and Azure WebJobs that lets you write stateful functions in a serverless environment. The extension manages state, checkpoints, and restarts for you.
The extension lets you define stateful workflows in a new type of function called an Orchestrator function. Here are some of the advantages of Orchestrator functions:
They define workflows in code. No JSON schemas or designers are needed.
They can call other functions synchronously and asynchronously. Output from called functions can be saved to local variables.
They automatically checkpoint their progress whenever the function awaits. Local state is never lost if the process recycles or the virtual machine (VM) reboots.
Note: Durable Functions is an advanced extension for Azure Functions that is not appropriate for all applications. The rest of this section assumes that you have a strong familiarity with Azure Functions concepts and the challenges involved in serverless application development.
The primary use case for Durable Functions is simplifying complex, stateful coordination problems in serverless applications.
Function chaining refers to the pattern of executing a sequence of functions in a particular order. Often, the output of one function needs to be applied to the input of another function.
Fan-out/fan-in refers to the pattern of executing multiple functions in parallel, and then waiting for all to finish. Often, some aggregation work is done on results returned from the functions.
With normal functions, fanning out can be done by having the function send multiple messages to a queue. However, fanning back in is much more challenging. You'd have to write code to track when the queue-triggered functions end and store function outputs. The Durable Functions extension handles this pattern with relatively simple code.
The third pattern is all about the problem of coordinating the state of long-running operations with external clients. A common way to implement this pattern is by having the long-running action triggered by an HTTP call, and then redirecting the client to a status endpoint that they can poll to learn when the operation completes.
Durable Functions provides built-in APIs that simplify the code you write for interacting with long-running function executions. After an instance is started, the extension exposes webhook HTTP APIs that query the Orchestrator function status. The following example shows the REST commands to start an Orchestrator and to query its status. For clarity, some details are omitted from the example.
The monitor pattern refers to a flexible recurring process in a workflow—for example, polling until certain conditions are met. A regular timer-trigger can address a simple scenario, such as a periodic cleanup job, but its interval is static and managing instance lifetimes becomes complex. Durable Functions enables flexible recurrence intervals, task lifetime management, and the ability to create multiple monitor processes from a single orchestration.
An example would be reversing the earlier async HTTP API scenario. Instead of exposing an endpoint for an external client to monitor a long-running operation, the long-running monitor consumes an external endpoint, waiting for some state change.
Using Durable Functions, multiple monitors that observe arbitrary endpoints can be created in a few lines of code. The monitors can end execution when some condition is met, or be terminated by the DurableOrchestrationClient, and their wait interval can be changed based on some condition (that is, exponential backoff). The code on the next slide implements a basic monitor.
Many processes involve some kind of human interaction. The tricky thing about involving humans in an automated process is that people are not always as highly available and responsive as cloud services. Automated processes must allow for this, and they often do so by using timeouts and compensation logic.
One example of a business process that involves human interaction is an approval process. For example, approval from a manager might be required for an expense report that exceeds a certain amount. If the manager does not approve within 72 hours (maybe the manager went on vacation), an escalation process starts to get the approval from someone else (perhaps the manager's manager).
This pattern can be implemented by using an Orchestrator function. The Orchestrator would use a durable timer to request approval and escalate in case of timeout. It would wait for an external event, which would be the notification generated by some human interaction.
The values "F1", "F2", "F3", and "F4" are the names of other functions in the function app. Control flow is implemented by using normal imperative coding constructs. That is, code executes top down and can involve existing language control flow semantics, like conditionals and loops. Error handling logic can be included in try/catch/finally blocks.
The ctx parameter (DurableOrchestrationContext) provides methods for invoking other functions by name, passing parameters, and returning function output. Each time the code calls await, the Durable Functions framework checkpoints the progress of the current function instance. If the process or VM recycles midway through the execution, the function instance resumes from the previous await call. We will cover more on this restart behavior later.
The fan-out work is distributed to multiple instances of function F2, and the work is tracked by using a dynamic list of tasks. The .NET Task.WhenAll API is called to wait for all the called functions to finish. Then the F2 function outputs are aggregated from the dynamic task list and passed on to the F3 function.
The automatic checkpointing that happens at the await call on Task.WhenAll ensures that any crash or reboot midway through does not require a restart of any already completed tasks.