I don’t often get to go to conferences, but last week I spent two days at the Serverless Conference in London, in order to get a deeper understanding of what serverless architectures have to offer. It was a packed schedule with 12 talks on the first day, and 11 on the second, so there was a lot to take in, but here are a few of my highlights.
You might expect all the speakers at a serverless conference to be championing its benefits with evangelistic fervour, so it was a surprise that the keynote speaker Patrick Debois chose to use much of his talk to debunk many of the supposed advantages of serverless.
Is it really “better” just because it uses the latest technology?
Is it really “faster”? Yes, it might be faster to get up and running as a developer, but does it run faster for the end user? Actually with serverless you often have latency issues due to spinning up containers. And even if it is faster to create a new service, you still need to design it, integration test it, etc. So the cost savings may be quite small.
Is it really “more reliable”? We’re actually now more reliant on third party services. What will we do if they go down? And your functions might not be quite as isolated as you expect – there is shared memory, disk and networking, so one rogue function can take down the others. You also need to keep up with updates to the services you depend on – and you have no control over when those will happen.
Is it really “more secure”? There are some missing features like being able to filter people out based on IP, or quotaing function calls per uses.
Is it really “cheaper”? You now can’t budget with a predefined cost. Serverless needs to offer us ways to switch between dynamic scale and prepaid levels.
Does it really offer us “better service”? Many serverless platforms still need big improvements in logging, analytics, alerting etc.
As you can imagine, this was not the tone many in the room were expecting, but Patrick was not trying to rubbish serverless. He ended by asking us to figure out what benefit we are bringingwith serverless, and suggesting that serverless has the potential to make a difference, but it is still early days.
And this theme of “serverless not quite ready for the prime-time” kept cropping up throughout the conference. Many speakers warned of gotchas they had run into, and weaknesses with the tooling. Charity Majors pulled no punches in an entertaining talk where she hammered home the risks of relying so heavily on third party services. Like Patrick’s talk, it could be interpreted as a vote of no confidence in serverless, but she also closed by saying that it’s a good thing but “not mature”. It’s a talk worth checking out once the conference recordings become available.
Despite the incongruence of a serverless conference including talks that seemed to be bashing the very concept, I actually found it very encouraging that it appears that as an industry we have finally reached the place where we approach new technologies with a healthy degree of skepticism. Have we finally realised that there is in fact no silver bullet and that any new technology trades one bunch of problems for a new set of different ones?
Followers of my blog will know that I’m an early adopter of Azure Functions, and a big fan of its capabilities (whether or not used in a serverless architecture). It was great to get to speak to a few of the team members in person, Chris Anderson, Yochay Kiriaty, Chris Gillum and Mathew Charles, all super knowledgeable and helpful people who hopefully weren’t too annoyed by my endless questions. I certainly picked up a lot of useful information and you can expect some more blogging soon as I play with the new features in 0.8.
One of the interesting things about Azure Functions is that it has the concept of “Function Apps”, which are a bunch of functions that logically group together, get deployed together, and share the same configuration, and essentially run in the same sandbox, sharing memory and disk. At first I thought this went a bit against the ethos of serverless. We’ve taken loosely coupled functions and coupled them back together.
But as I went to talks from users of rival FaaS platforms such as AWS Lambda, it became apparent that many people wanted and indeed were inventing ways of achieving exactly the same thing on their platforms too. Sometimes, functions do belong together, and make sense to be deployed together. So whether by design or accident, I think Azure Functions is onto a good thing with Function Apps, and you can still always just create a new Function App for every function if you really want complete isolation and independence.
Despite the presence of some serverless skeptics, it was also great to see that it really is helping people deliver real value and create awesome applications. I enjoyed hearing from the guys from instant.cm who bootstrapped a new business with minimal overhead, a lightening talk showing how to make light work of a map-reduce task with a few Python functions hosted on Lambda, another talk using serverless functions to simplify “chaos engineering” for cloud disruption testing, and many other interesting use cases from companies like Xero and PubNub.
It was also great for me as an Azure focused developer to learn a bit about what the competing offerings can do including AWS Lambda, IBM Openwhisk and Auth0 WebTasks. And that’s not to mention many additional technologies that fit well with serverless like Google Firebase and Facebook GraphQL.
Overall I feel I’ve come away from the conference with a much better understanding of both the benefits and potential pitfalls of serverless. So a big thanks to the serverless conf team for putting this excellent event on, which was all the more impressive since I understand that none of them are actually based in the UK.