User:JoshOnWiki/sandbox

Azure Functions is a Serverless computing platform on Microsoft Azure that allows for the execution of code based on events and which are executed on underlying infrastructure that doesn't require any management. The cross platform runtime and core tooling for Azure Functions is open sourced and hosted on Github. The current Azure Functions runtime, 2.0, is based on .Net Core and can support development using various languages including C#, F#, Javascript, Java, Python, TypeScript, and Powershell.

Azure Functions is part of the Azure App Service family and shares many of the same underlying features and configuration. Azure Functions and App Services also share the same underlying compute resource configuration referred to as an App Service Plan. This allows for the flexibility of hosting functions in a common serverless mode where the underlying compute is scaled automatically based on need or alternatively in a more traditional model where compute is dedicated and configurable by the administrator. In additional to compute resources costs differ between consumption and standard app services plans. Consumption plans are billed based on usage and may scale down to zero compute instances where as traditional App Service plans are billed regardless of actual usage and whose underlying compute is always running and costs are more consistent and predictable.

Due to the open source nature of the Azure Functions runtime it is possible to run Azure Functions on other platform and environments and even outside of Azure although there still remains a dependency on Azure's Blob Storage and other Azure resources depending on the type of event that is triggering the function.

Developing with Azure Functions
The Azure Functions core tools and runtime allow for the local development of functions on Windows, Mac, and Linux using any of the supported languages. Developers may use their development environment and editor of choice although Azure Functions is mostly commonly developed in Visual Studio and Visual Studio Code due to the feature rich set of extensions for Azure Functions that are available in those editors.

Additional local emulators for Azure Storage and CosmosDB are often used which contribute to the local development experience of Azure Functions. Some triggers however such as Azure Service Bus and Event Hubs do not support local emulators and require resources to be provisioned on Azure.

History
Azure Functions was initially announced on March 31, 2016 and went GA on November 15, 2016. Azure Functions originally grew out of a WebJobs, a feature of Azure App Services. Webjobs allowed for a way to run background tasks and execute code or scripts based on events within Azure App Services Web Apps. The Azure Functions runtime still contains a dependency on the WebJobs SDK today.

The initial 1.0 version of Azure Functions was based on the .Net Framework and was only available on the Windows Platform. With the introduction of Azure Functions 2.0 on Sept 24, 2018, based on the .Net Core runtime, the platform opened up to not only Windows but Linux and Mac as well.