Menu Home

Azure Serverless: Addressing the missing pieces

tl;dr; Benny Baur recently wrote about some of the missing pieces in Serveless provision, partly in response to issues raised at the recent ServerlessConf London. As Benny works with AWS, I thought it would be good to see how the Azure Serveless offerings of Functions and Logic Apps stack up and if they address these missing pieces.

[Update 2016/11/12L added tl;dr; to clarify this is in response to Benny’s post]

The recent ServerlessConf London was inspirational on many fronts but not least because of the realism demonstrated by the community behind this new architectural style. From the off, Patrick Debois(@patrickdebois) gave a brave keynote providing a reality check on the key claims of Serverless. Charity Majors(@mipsytipsy) presented a version of her excellent talk debunking any thoughts of NoOps and arguing that DevOps are just as important as ever, but with a change in emphasis.

One of several excellent post-event writings on  the challenges and outstanding needs is Serverless: What’s Missing? by Benny Baur. I suggest you read it right now before continuing here. In this, Benny highlights several aspects that need addressing that go beyond the basic issues raised by outsourcing to a third party. I thought it would be good to look at how Azure Serverless measures up. Do bear in mind that Functions are still in Beta, though LogicApps has been released, so the situation may change (for the better).

The following are Benny’s missing pieces and how Azure stacks up.

Costs

  • Impossible to limit costs: Functions has two charging plans and these affect scaling. In the App Service plan you pay for a VM and have to scale your self so it’s not an issue. I’m not sure if it is possible to set a scale cap on the alternative Dynamic plan (Pay per use) and get notifications. To be fair, one of the key advantages of Serverless is automatic scale up/down so a limit should be available. I’ll update ASAP

Design

  • Vendor lock-in is unavoidable. This is mitigated to some extent as Functions is itself open source. That said the lower stack layers (WebJobs and App Services) are not. HTTP triggers and related webhooks are first class and do open this up somewhat. Function Triggers are currently somewhat limited – eg there is nothing from DocumentDB so this has to implemented anyway (by polling, ugh) and so could be done in a portable way. LogicApps offers many connectors and it is possible to add more.
  • Open-source. The Azure Functions team have practiced open development on GitHub from the start. Several parts of LogicApps are also opensource.
  • Cross services/vendors out-of-the-box integrations. LogicApps provides a very large and growing list of connectors to 3rd Party Services. Functions has limited set of triggers and connection but this is mitigated by being able to call Functions from LogicApps (both sync and async).

Development

  • Local integration testing is hard. Integration testing is always hard when you rely on live services outside of your control. Even if you have the source, it’s hard to guarantee a local instance is the same as the live one (it’s then arguable if it is true integration testing, though alternative implementations can expose bugs). Other than mocking, with the Function local development feature your code can call out to live services.

Deployment

  • Configuration management isn’t supported. It is possible to set Environment Variables through App Services which underlies Functions. This can be done in the console or programmatically.
  • Incremental rollout isn’t supported. It is possible to update any Function manually from the console. Plus, individual files can be updated via FTP. The CI/CD mechanism enables you to push and then rapidly switch the entire Function App. You can obviously ensure only partial updates are made through solid CI/CD process design.
  • Service discovery isn’t supported. I am not aware of any support for this other than source text search etc

Logging

  • Understanding logging context is super hard. OK so it’s not logging but Azure provides the powerful Application Insights allowing detailed analysis. Currently this is a simple manual configuration option.

Bolstering these specific answers is fact that Azure is “Enterprise quality” as Microsoft clearly see this as their primary market. Thus, you can be sure such important issues and more will be thoroughly addressed in Functions and Logic apps over time. It’s clear that Functions and Logic Apps are important parts of Microsoft Azure Provision. For instance, the newly released Flow is built on Logic Apps and along with Functions provides a solution for non developers and citizen coders needing to automate workflow or mash up. Being Enterprise quality also helps address some of those general 3rd party and cloud concerns such as security and reliability.

I’d like to drill down into these topics in future posts but in the meantime please do respond with your corrections, thoughts ideas in the comments.

Categories: Uncategorized

steve@opendirective.com

Leave a Reply