Why serverless matters or how do you want to spend your innovation tokens?

I recently wrote an email to an Irish Entrepreneur about the challenges of using Kubernetes and Kafka. I think both technologies are awesome, but I’ve seen in the past companies trying to integrate them without thinking about the managed services that exist out there.

Kubernetes

If you’re doing it yourself I’d look at https://docs.aws.amazon.com/eks/latest/userguide/getting-started.html which is from Amazon. I’d try to outsource some of the operations challenges to them.  Julia Evans has the definitive guide to why Kubernetes is cool.
For Kafka – https://aws.amazon.com/msk/ or https://aws.amazon.com/kinesis/ are two managed services (which are similar to Kafka) they might suit your needs.
Pick Serverless and Managed services if possible.

My philosophy now is more and more see if you can use a more expensive but more managed service from Amazon or Google. They’re changing all the time, there’s new products out all the time. And even starting with one of them would be a great start as it’ll probably reduce the load on your developer team.
https://www.twitch.tv/aws/videos?filter=all&sort=time is a great source for AWS videos, as is Youtube.
For example for the podcast app I’ve worked on we specifically as the technical directors picked managed services, we picked https://aws-amplify.github.io/ for a lot of the mobile app backend stuff, we use a bunch of APIs for a lot of stuff and we use a load of AWS Lambdas for serverless type stuff (for example resizing mp3s automatically, or adding users to databases), now some of that is actually hard as a developer emotionally.
For the podcast app we picked https://aws.amazon.com/cognito/ for our sign in experience/ identity management. The good part of that is that it worked out of the box, the bad part is that when we deviated from what Amazon wanted us to do, we ran into problems. There’s a cost to the inflexibility of managed services, but often it’s worth thinking what can be used for that. Or how you use as little back-end code as possible. Especially for greenfield projects where developer velocity is super important and code is a liability.
Choose Boring Technology
http://boringtechnology.club is a very powerful essay by the Etsy guy – Dan McKinley, which I regularly re-read and think about.
I naturally want ‘new shiny things’ and left to my own devices will ‘write something in a new fancy language to prove how smart I am’. It satisfies some ‘endorphin rush’ (as mentioned in the boring technology talk/essay) but long term it becomes a pain to manage and maintain, and that’s the biggest cost of software. So it’s a challenge, and I’m still learning it.
Joe Emison has talked a lot about this (he’s cited below). His equation is below.

WeeksResearch + 1 DayDevelopment → NLinesofCodetoMaintain

DayResearch + 2 WeeksDevelopment → 10 ⋅ NLinesofCodetoMaintain

On average, ten times more lines of code is ten times more technical debt, which means increasingly slower and less predictable future development velocity, and systems that cannot be well maintained by the average developer.

 

Takeaways

I’m still fleshing out this thought. So I’ll probably revisit this in the future. However I think there’s a lot of overlaps between ‘choose boring technology’ and ‘choose serverless’
I think the overlaps are from the ‘innovation tokens‘ idea in Dan McKinleys talk. You only have three innovation tokens, what do you want to spend them on.
For some apps it may be ‘spend it on your recommendation engine technology’ or ‘spend it on building the best e-commerce UX experience for selling kittens online’ (I made that last one up), but it probably isn’t ‘produce the worlds most scalable database’ unless you of course work for an enterprise Data Warehouse company. Attention is precious. So choose wisely. Don’t think your job as a developer is to deal with scalability – your job as a developer is to make things people want, and make things people love.
Some other links
https://acloud.guru/series/serverlessconf-sf-2018/view/better-application-architecture-with-serverless is a good talk on serverless and managed services. It’s quite business focused – so it should be accessible to most people.
I hope that helps 🙂

Leave a Reply

Your email address will not be published. Required fields are marked *