Volume 32 Number 2
Our Serverless Future
By Michael Desmond | February 2017
This month’s issue leads off with a pair of articles focused on new elements within Microsoft Azure and the impacts they have on software development. Yochay Kiriaty and Stefan Schackow explore the new Azure App Service architecture, which provides a rich Platform as a Service (PaaS) for Web, mobile and API applications. App Service is great for enabling apps that can run at global scale, by providing underlying infrastructure and managed services that let developers focus on writing great application code.
The other Azure-oriented feature this month, written by Joseph Fultz and Darren Brust, is “Serverless Architecture with Azure Functions.” As Fultz explains, the term serverless architecture describes a design in which there is no server infrastructure to manage by the application team.
“This means that all the moving parts of the system are either third-party services like Azure SQL Database, DocumentDB, EventHubs or Office365, which are also known as Back-end as a Service (BaaS),” Fultz says. “Or they are custom code hosted in a system-managed container to provide the serverless compute, which is also referred to as Functions as a Service (FaaS).”
The approach reflects the proliferation of mature, third-party services in the cloud era, as dev organizations shift on-premises compute infrastructure to services in the cloud. Fultz points out that not so long ago hosting virtual machines was of huge value to IT organizations, yet today many of those virtualized activities have shifted to a service consumption model. In short, it’s become more burdensome to roll your own than it is to have someone else roll it for you.
“Ideally, the app team wouldn’t even have to think about scale as the serverless compute and third-party services should automatically handle scale and availability,” Fultz says.
The upside is reduced complexity and cost, which enables organizations to focus more resources on adding value to the business rather than building and managing infrastructure. The downside? Less control of the implementation of the environments that host application services.
So how should developers proceed as they consider serverless approaches? Fultz says the most important thing is to understand the services providers you’re coupling your applications to and how those commitments impact your DevOps pipeline.
“Developers must be familiar with the intricacies of deploying their various environments, such as dev, test and production, against a matching set of services for the target environment,” Fultz says, adding that familiarity with logging and troubleshooting capabilities is also important.
“Without access to the server directly, one has to rely on what is provided by the host of the service being used,” he continues. “Sometimes there is rich integration with management and monitoring, like in the case of Azure SQL Database, but in other cases there may not, as in the case of Azure Functions, which is still new to the scene.”
As for how Azure Functions relates to Azure App Service, which Kiriaty and Schackow write about this month, Fultz describes App Service as the PaaS on which Azure Functions is built. App Service works behind the scenes of Azure Functions, handling a range of activities from the simple, like storage of configuration settings, to the complex, such as scaling operations. As Fultz describes it, Azure Functions is essentially “App Service plus the Web Jobs SDK plus Azure Functions-specific implementation bits.”
Michael Desmond is the Editor-in-Chief of MSDN Magazine.