Serverless is not functions
Unlearnings from Serverlessdays Cardiff 2020
Do not try and bend the spoon. That’s impossible. Instead, only try to realize the truth. There is no spoon. Then you’ll see that it is not the spoon that bends. It is only yourself — The Matrix
I had the pleasure of being a part of Serverless Days Cardiff 2020. If I could sum up my takeaway from the day, that classic quote from The Matrix would be it. Serverless has come a long way in the last couple of years. The irony is that the more experience you have working with cloud or designing systems, the harder it becomes to unlearn enough to make the leap to serverless.
Serverless is mindset change
This year the transformation was palpable. A rich stream of moments, nuggets of head-shifting delight, things that make you go “huh, never thought like that before”. You leave changed, reconfigured somehow. It’s hard to put your finger on any one moment, but the combined effect of all those butterfly-wings has forever altered you. One thing is clear, Serverless is far more than functions, it’s anything that frees you from infrastructure and operating systems. From S3 to Dataproc, it’s all serverless.
One quiet but powerful shift, particularly for government colleagues, is that NCSC has publicly blogged about Serverless technology. My experience of NCSC advice is that it’s very measured and aimed at including a broad church of technology situations across government. There’s no chasing shiny, it’s studiously practical. That makes the tone of the blog post all the stronger for the weight of consideration behind it.
If you’ve any history with designing Web architectures, from on-premise to cloud, chances are you think in terms of servers. Classic architecture diagrams would show two separate datacentres, connected via a “cloud” that represented the internet. Each datacentre in the diagram would contain a collection of boxes with labels like “web server”, “application server”, “database server”. Server.
So long, and thanks for all the patches
These were physical computers, then virtual machines and finally cloud compute instances. There ends the story. The sun sets on the age of the server. Why? Because, frankly, they’re a pain in the proverbial. Physical hard drives crash, SCSI backplanes burn out, NICs fail, UPS units blow fuses, operating systems sprout vulnerabilities like dandelions in your veg patch. Configurations drift out to sea and software rots and becomes undeployable, jangling nerves all the way up the hierarchy and keeping tired people up at night nursing lame systems. Enough already.
As the tech world re-engineers itself to commoditise the pain away, one by one each thing that ends in “server” gets commoditised into a cloud-provider service. First databases, then web servers. Running resilient stateful storage is really hard. I remember halcyon days of installing and curating MySQL servers, working out how to set up master-master replication. Dark halcyon days, mostly spent puzzling over replay logs and scanty, mysterious error messages that were clearly not intended for human consumption. So much time spent doing something other than what I wanted to achieve.
Now we’re commoditising the “application server”. Containers took a big bite when Microservices became the new orthodoxy and now Serverless is munching away what’s left. Think of it like this: containers are basically big functions. Kubernetes is consuming a lot of energy right now, but it’s disappearing fast as the waterline of commoditisation rises. If containers are functions, it follows they should run serverless. Hello Google Cloud Run and EKS on Fargate. I’m sure Microsoft will be along in a minute.
We’ve reached a point where you can design, build and operate serious Internet systems (think Lego.com) and seriously question whether there might not be a single server in that mix.
Here’s my proposal for a Carboni Architecture Evaluation Framework in the serverless age: start with a score of zero and subtract. There are no positive scores here. The aim is to assess the pain that systems are creating for you and for your organisation. Let’s get started.
Step 1: look at the components in your design and subtract 1 for every virtual machine instance. No cheating on autoscaling groups, every instance counts. You’re going to have to nurse those suckers whether they’re cattle or pets. Not something you want to be spending time on. At least they’re disposable instances, so -1 seems fair. They are disposable instances… right? No shame, just pain.
Step 2: look at every component in your architecture that’s also offered as a managed service and subtract 10. You’re going to install, curate, administrate, upgrade, back-up, fail over, recover and generally spend your life running around after these components, pandering to their every whim and wobble. This is migt get you close to the bone, but you don’t get to wriggle out of it if you’re running things like Hadoop or Kubernetes — there are managed services here too. Every node counts and, if you’ve got persistent volumes going on to feed stateful things like database containers, count each one of those containers. No cheating. Being honest with yourself is hard.
Step 3: finally, identify every single component you’re running on-premise and subtract 100. This includes anything hybrid, any VMware, heck even those fancy direct connections to your cloud provider. I’m not saying it’s wrong, I’m just saying you need to be realistic that it’s going to hurt, and it’s going to keep hurting. Every server, every switch, every cable, every load balancer, every physical box with flashing lights. Hire a skip and rip them out if you can. If you can’t, get comfortable with your albatross. Ramp up the budget, downgrade your velocity aspiration, hire some ancient mariners and pray for better days.
If you’re any kind of normal organisation with a realistic level of IT infrastructure that’s more than a couple of years old, you’ll now have a horrifying score. That’s ok. You might also be mentally noting that your tech transformation is heavy going. Exactly. It’s a nice way to appreciate your situation. Maybe it’s a good way to help your boss understand too. Either way, I hope that getting your score closer to zero over time will correlate with an easier tech life.
I’m lucky enough to have been able to work with Policy in Practice, who are doing some really smart work to improve peoples’ lives and I was thrilled to be invited and supported to tell that story. I’d encourage you to check them out if you’re interested in getting involved.
In a deliciously terrifying twist, as I got up to speak, the tech fell away and the delightful slides I was up to the wee hours crafting never made it onto the screen. There comes a point when you just kind of have to step into the unknown and have faith that everything you’ve learned up to this point in life will come together and cary you through.
It was an AFGO moment, but in contrast to the Urban Dictionary Definition, I reckon they’re the best. More often these are the times that bring something new into the world. Personal growth sucks but, like a teabag, you only find your strength when life drops you in hot water.
I stepped out and spoke, from memory, off the cuff, with neither a Power nor a Point to hide behind. Thankfully for me — and presumably for everyone looking on in mild horror and consternation — it worked. In fact, it was a remarkably present experience. It’s left me wondering whether speaking without the distraction of slides is something to explore.
I’d like to thank Matt Lewis and the organising team for putting on a cracking event. In true agile style, being in a new venue presented some interesting challenges, not least of which was whether the venue would be ready in time. Happily it all worked out and I’m sure next year will be one not to miss.
Special thanks go to Policy in Practice for giving me their blessing to tell the story and share how they’re using serverless to free up staff time and get crucial performance data to their clients faster. Thank you to Notbinary for enabling me to be at Serverlessdays.
I’d also like to thank the lovely people I got to talk to and spend time with. I had a bunch of interesting and enlightening conversations and it was good to catch up with a couple of people from my former lives. Special thanks to Matt Hunt, Neville de Mendonca, Siobhan Stephens, Asankha Perera and Aviad Mor, amongst others.
Even with substantial history and experience behind me, I’m continually surprised and delighted by new ways of thinking that technology offers to curious minds. As the industry finds ever more interesting ways to shape our world, I also see those patterns reflected in how we shape our organisations. As in tech, so in life.
The more I work with the interplay of culture and technology, the clearer it becomes that evolutionary change comes through learning, but the kind of disruptive, discontinuous, transformative change we say we want comes from unlearning what we know to be so.