"We wanted AWS to grow its ... functionality, and to continually eat away at the bottom of the thin layer of rapidly evolving Netflix specific ... code that we had built"
This. This is what serverless is all about.
(2/n)
Custom code is a liability for everything *except* delivering your core business deliverables.
In other words, if you can run your business without any custom code (programming language, infrastructure as code, templates, HTML, scripts, everything!) then *do it*.
(3/n)
At present the best way I know of doing that is using AWS and AWS Lambda/API Gateway/DynamoDB/SQS etc with AWS SAM/CloudFormation. Using one of the git providers to manage code repositories and a simple project management tool and...
You can build a unicorn on that.
(4/n)
Let me repeat a small part again:
"to continually eat away at ... the ... rapidly evolving ... code that we had built"
That's what serverless always was to me.
It was always about doing far more with much less.
(5/n)
So when someone says "we need open source serverless alternatives" which happens *a lot* my response is generally "you've misunderstood serverless".
AWS Lambda is built on Firecracker.
There are open source API Gateway, DynamoDB, SQS etc equivalents.
They exist.
(6/n)
Do you know what's missing?
Do you know the piece that everybody has ignored?
SAM/CloudFormation
Probably not CF if I'm honest (amazingly)
And don't say "terraform". If you think that does the same thing you don't understand.
(7/n)
The importance of SAM/CF to serverless is immense.
It's not perfect. In fact it's a pain quite a lot of the time.
But once it's working it's a absolute dream.
Because *that* is your application definition.
(8/n)
Once you start to think in terms of SAM/CF instead of code, you start to build applications in a compasable way.
You also build things in a much more distributed and reproducible way.
All of a sudden applications generally become highly scalable, transferable and secure.
(9/n)
When it comes down to it, most applications don't actually do much processing.
Which is why FaaS is so powerful.
And most solutions don't need too many open API routes either.
And when you start building distributed systems using events...
(10/n)
AWS has built this incredible solution that just *does* everything for you.
And anytime anyone says "but only for specific circumstances" really doesn't understand how it works.
Those use cases are vanishingly small now and reducing.
(11/n)
Side note: if you can't code your process to fit into the length of time of a Lambda function *or* work out how to parallelise it or similar then you are in the "very small" set of use cases.
(12/n)
The future beyond serverless is already starting to arrive.
Services built on top of this where you can simply sit in a room and say what you need and a *fully distributed, scalable and secure solution* gets spun up without any need for you to touch anything.
(13/n)
Anyone saying "but open source" at this point is going to wonder what's happening.
When I started out in tech the open source movement was about trying to stop Microsoft and others having a monopoly on the server market.
We did that.
(14/n)
The unintended consequence was that any company in the world could then take linux and... become a web host, then a provider of VMs, and so on.
The open source movement built web frameworks and programming languages too to democratise those worlds too.
(15/n)
But you *can't* stop the innovation on top of open source without breaking open source.
That's what serverless is.
It is an innovation where open *source* cannot go.
If you're not prepared to accept that then don't complain.
Where *open* can go is "open interface".
(16/n)
Just like with S3 the de facto storage API is essentially the S3 API.
If you want to do "open serverless" then you have to replicate the innovation that AWS have done. Maybe not exactly but...
Create the interfaces for FaaS, API Gateway etc...
*AND* SAM/CF.
(17/n)
Because it was never just about the tech.
The ability to deploy and evolve rapidly was always a part of the solution.
That's why SAM/CF matters.
That's why simply building a FaaS with Kubernetes is only about 5% of the solution, and why people misunderstand serverless.
(18/n)
Going back to the original post:
"to continually eat away at ... the ... rapidly evolving ... code that we had built"
You need to be able to rapidly evolve.
All code is a liability.
Removing code is hard.
Have as little code as possible.
Make removing it easy.
(19/n)
I know this started from sharing a post about Platform engineering.
The idea of a Platform team is interesting to me. I think it's useful to a point. But it's not new.
What most people in tech really do not grasp is how to genuinely avoid creating future liabilities.
(20/n)
That's what serverless was all about for me.
When I started using Lambda in 2015 I was literally wanting to avoid running any EC2 instances for the back end of an Android app.
I'd run apps and teams before and maintaining EC2 instances was painful to say the least.
(21/n)
I remember in 2014 when the announcement happened that my first thought was how I could literally never have to run an EC2 instance again.
That never happened with Docker or Kubernetes. They have always just looked like a lot of extra work over Lambda for no benefit.
(22/n)
And that's the point.
The first talk I ever did on serverless, the last slide was of cocktails on a beach.
Because that's what serverless is like for me in comparison to every other way of doing it.
And even 8 years later, nothing has changed.
(23/end)
• • •
Missing some Tweet in this thread? You can try to
force a refresh
We took the decision to take our 9y/o out of school over a year ago now. We don't do (yet) a formal curriculum at home, partly because she struggles to sit still if it's not something she's interested in.
She does like playing computer games.
So I try to give her good games.
She likes playing Minecraft and Roblox. Roblox is not so good because of some of the games that are on there, but minecraft she has got better at. She just likes making houses and little towns for her and her friends to play in.
She names all the animals.
The one that she has got into recently is Stardew Valley.
I love Stardew Valley. It's one of those "it doesn't really matter how you play it" games. I've played it a lot for "relaxation".
However I got told off by my daughter for playing it wrong.
I've got a Scottish grandfather. Everyone other grandparent and parent was born in England. Scotland becoming independent would at least give me another option for citizenship. I have no issue with any of Scotland, Northern Ireland or Wales wanting independence if they so chose.
I've never really understood the arrangement if I'm honest. We are separate nations but... one single entity... somehow?
It all seems very strange to me.
And all this wanting our "sovereignty" back a few years ago? Seems really weird when we've got the arrangement we have.
I don't mind sticking with what we have if everyone is ok with it too. I'm not going to say that we must break up the union. I'm simply saying that the arguments were hypocritical.
Whenever any politician mentions the union I do wonder what they're on about.
If I offer an opinion saying that I think that it's a team failure, and not a technology failure, I'm not saying that I think the *people* are "failures". I'm saying that the structures and processes are wrong/bad/insert synonym here for not correct. People are just people.
It's almost always the people that get things wrong. Sometimes it's individuals being absolute ****s and trying either to be nasty and do bad things, but it's generally just people trying to do a good job and getting it wrong.
Creating and managing teams is *hard*. I'm not very good at it. When it's worked for me, I've always had very good people that have worked *with* me who have a good idea where I'm trying to get to, and who are really good at certain aspects of organisation and management.
What I'm trying to get at here is that I've heard this story before many times.
Replace serverless with microservices or kubernetes or monoliths or agile or lean or something else and replace kubernetes with monoliths or serverless or agile or safe.
Technology adoption is hard!
The problem in this scenario is that it looks very much like they have adopted serverless without at least a quick look at some of the main practices that are widely used by the top practitioners.
There are some real "bad smells" in their criticisms.
What is the most useful programming language to learn right now?
JavaScript/node/typescript is fast becoming my language of choice for everything...
... And yes in my head it's the same language with different characteristics whatever anyone says.
But I'm interested in what the future is.
Cloudflare seems to be betting the farm on workers and that's V8 so... see previous tweet.
I have to say I have a lot of time for that view.
But what about new languages? Compiled languages?
Any created for small distributed systems?
I've tried go and rust and various functional languages others but ... always seems too... pointless or overcomplicated or pretentious or *something* that just gets in the way of doing things.
The JavaScript ecosystem is simple and just works for most things.
I've wanted to try to do OIDC/OAuth the "right way" on AWS for a while.
This gist is my starter.
Cognito isn't the easiest of AWS's services. As an ex-AWS Developer Advocate for Serverless it was part of my job to go out and promote Cognito, and even I found it hard.
The thing is... Identity is hard.
Really hard.
So, I'm trying to make it a bit easier.
The gist is a SAM/CloudFormation starting point.
It creates a User Pool in Cognito, and a Cognito Domain. It also creates a User Pool Client (basically an "app connection") to the User Pool, which then defines what URLs Cognito "turns on".