Azure Functions
Developer(s) | Microsoft |
---|---|
Initial release | March 2016 |
Engine | |
Operating system | cross-platform |
Website | docs |
Search Azure Functions on Amazon.
Azure Functions is an event-driven, compute-on-demand platform designed for rapid application development and operational agility, by Microsoft. Azure Functions is built on top of the Azure Platform-as-a-Service platform. Azure Functions is designed as a Functions-as-a-Service type of service.
The end goal of Azure Functions is to support developers run their code with minimal to none infrastructure responsibility, by allowing them to write their applications in various programming languages.
Because the infrastructure is abstracted away, developers don't have to worry about the scaling capacity, the security, the availability and the deployment automation of their applications. Instead, they can focus on the development of the business logic.
The Azure Functions runtime is open-source and available on GitHub..[1]
History[edit]
Azure Functions was originally released in preview in March 2016[2] and later announced at Microsoft's Build conference in May 2016[1][3] Later the same year, it was made generally available for the open public.[4]
Under its first iteration, Azure Functions offers supports to run applications developed in C#, JavaScript, F#, PowerShell, PHP, Python, CMD, BAT and Bash. Only the first two were ever fully supported, whilst the other languages were tagged as experimental.
In 2017, Microsoft announced the Azure Functions Runtime, a platform designed to run Azure Functions on-premises, offering binding capabilities for on-premises specific workloads - for example, a trigger based function that fires when data updates occur in a SQL Server infrastructure.[5]
In 2018, during the Microsoft Ignite conference, Azure Functions' second iteration called runtime version 2, was made publicly available, thus turning into a fully supported platform.[6] Some notable differences of the second runtime include architectural design changes so that version 2.x runtime runs on .NET Core 2, enabling it to run in all platforms supported by .NET Core, including macOS and Linux, support for Java-based[2][3] applications, support for Node 8 & Node 10-based applications, a new binding extensibility model which offers support for third-party binding extensions and more.[6]. Azure Functions also offers full Python[4] support under runtime v2.
Architectural design[edit]
Being event-driven, a Function will only be fired when a condition is met. These condition vary depending on the scenario the developer decides to implement, but can be anything from a message being sent through a messaging system, an HTTP request being fired, a CRON-basedCron schedule being met and more. Though every single trigger could be represented as an HTTP request since every component integrated in Azure Functions is effectively a REST-based implementationREST, it is recommended to use the specific trigger types according to the scenario the Function is implementing - this way, the scale controller[5] of a consumption-based Function can properly determine the need of scaling the Function application horizontallyScalability. The list of supported triggers includes HTTPTrigger, TimerTrigger, CosmosDBTrigger, BlobTrigger, QueueTrigger, EventGridTrigger, EventHubTrigger, ServiceBusQueueTrigger and ServiceBusTopicTrigger[6].
Azure Functions leverages the integration with external components by the use of bindings[7]. These are considered extensions in the world of Azure Functions which allow a developer to externalize the responsibilities of communication and integration with third parties, rather than writing boilerplate codeBoilerplate code, thus minimizing the code requirement for pieces of software which do not add business value to the function.
Runtime-wise, Azure Functions can be hosted in an application services plan which is the logical representation of a managed web-farmServer farm in Azure[8], a consumption-plan which is a shared infrastructure managed by Microsoft which allows a Function application to be scaled by up to 200 instances and offer the customer a flexible billing model where they pay only for the execution of the function, or even in a Docker container[9]. The Docker container runtime implementation allows a developer to host their Function in a plethora of different environments including Kubernetes clusters, without loosing the advantage of triggering and binding[10].
Durable Functions[edit]
Durable Functions are an extension of Azure Functions that lets the developer write stateful functions as opposed to implementing FaaS applications, which are by design stateless, more specifically fire-and-forget.
The statefulness of the application is determined by an orchestrator function which defines a workflow and calles either synchronously or asynchronously activity functions. Progress is automatically checkpointed when the function awaits.[7]
Implementation examples[edit]
Azure Functions is used both as a computing platform in order to power microservicesMicroservices based applications, though some argue that the approach towards Functions-as-a-Service tends towards nanoservices[11], where a service is considered too fine-grained.
At the same time, community members are relying on Azure Functions for a lot of various implementations, such as:
- integration with communication tools[12], where Functions can notify users on their preferred platform of choice when alerts occur
- a real-time service used as a multi-user shared drawing canvas[13], where people can work together on the same canvas whilst they are completely remote
- an autonomous system to search, resolve and persist shortlinks[14]
- an application which resolves tenant names to globally unique identifiers in the Azure Active Directory identity system[15][16]
- a system which pull updates from various sources, including release notes from GitHub and pushes them to the developer community on TwitterTwitter[17]
- a saga-based[18] implementation of a messaging system in a distributed environment based on Azure Functions[19]
- a notification provider system leveraging real-time communication by the implementation of Azure SignalR[20]
- an implementation to monitor lagging work left behind by slow consumers of changes in a NoSQLNoSQL workload implemented in CosmosDB[21]
- a façade system to send push notifications to mobile devices[22]
A collection of community-driven Function examples, available for reuse under the form of libraries, is available at https://serverlesslibrary.net/.
References[edit]
- ↑ "The host/runtime that powers Azure Functions. Contribute to Azure/azure-functions-host development by creating an account on GitHub". March 15, 2019 – via GitHub.
- ↑ "Introducing Azure Functions". azure.microsoft.com.
- ↑ "Introducing Azure Functions". Channel 9.
- ↑ "Announcing general availability of Azure Functions". azure.microsoft.com.
- ↑ "Azure Functions Runtime Overview". docs.microsoft.com.
- ↑ 6.0 6.1 "Microsoft Ignite | September 24-28, 2018 | Orlando, FL". myignite.microsoft.com.
- ↑ "Durable Functions Overview - Azure". docs.microsoft.com.
This article "Azure Functions" is from Wikipedia. The list of its authors can be seen in its historical and/or the page Edithistory:Azure Functions. Articles copied from Draft Namespace on Wikipedia could be seen on the Draft Namespace of Wikipedia and not main one.