This is a story of the state of where we are in the world of containers, serverless, and whatever else you want to call this mess.
The story involves 3 groups of people with their own passions, opinions, and modes of getting stuff done. We’re getting to a point where they are no starting to see things the same way (or getting closer). That is the real exciting part about where we are today.
The people in this story are:
- The Infrastructure people running apps.
- Developers writing backend enterprise and other cool things for the cloud. SaaS developers?
- The Mobile Developers.
This story talks about how all their paths collided and have created the jumbled mess of glory that we have today.
This group of people used to be called System Administrators back when I was a lad. But that is so uncool. They now call themselves Full Stack Engineers, or Site Reliability Engineers, which basically means they are system administrators that know how to write code. Most of the good system administrators I used to work with assumed you did write gnarly bash scripts back in the day but apparently that practice was forgotten so now that is back in vogue again a job description needed to change. We don’t want point and click administrators, we want hacker administrators that can work on our full stack. Whatever.
In the beginning there was your data center, or place where you hosted your machines.
Then came the cloud. And the cloud was vague. Larry Ellison saw the cloud and said it was jibberish, made no sense, and made a chauvinistic comment about women’s fashion. Anyway.
The analysts came, and said the cloud was actually 3 things: IaaS, PaaS, and SaaS. With IaaS, you did everything but the hardware and with SaaS you just consumed the software. PaaS was a strange beast in the middle that was never really defined. People would just say: “You know, like Heroku, or Beanstalk”. They were people with opinions telling you they could take your IaaS to the next level. But it was still weird, and no matter what you can say, it was vague. Sure, NIST got involved and cleared all these definitions up, but there’s still a lot of wiggle room into what a PaaS was.
Then came Docker in 2013. Docker technology wasn’t new. It was just nicely packaged. With a cute friendly whale. Docker actually started as a T-Shirt company, but then took Linux namespaces, cgroups, and a union filesystem and made it fun to work with.
But people said: It’s hard to manage all these containers. Cause if I have on container on a VM, no problem. But what if I have 4? And multiple servers running multiple containers. Container sprawl! Port sprawl! Agh!
So other people said: We will take care of this problem! So they cobbled existing open source tools together to run it. You can use Mesos, Marathon, Consul, etc… Ugh..
Meanwhile Docker said: Hey, we’re still here! We created swarm to run it on multiple nodes. Hurray for Docker!
Then in 2014 Google says: You know, we’ve actually been running containers since forever and we know how to do it pretty well. Anyway, we noticed that we’re having a hard time getting people to notice our superior cloud platform. It is better than Amazon’s in every way except you’re not as smart enough to see why. Typical you. Anyway, here is something called Kubernetes that will hopefully get people to notice our cloud, it is our gift… sort of.
And Kubernetes is awesome. And people were like: Wow, this is how we can all manage containers. So people jumped on that. A community was born! People complained: Docker is too restrictive! It won’t accept my pull request! It’s too monolithic. Whatever. Poor Docker.
So then the old PaaS vendors with their opinions changed and produced another opinion: You know, Kubernetes is a project, so if you want to run it the best way, run it on our project. And so they started having opinions about Kubernetes. And OpenShift, Cloud Foundry, Apprenda, Tectonic, Rancher, etc all offered this to you for a reasonable price and a chance to feel like you were one of the cool kids.
Meanwhile Docker said: We have our own product called Docker Datacenter. And oh.. Kubernetes does that? Ok, we’ll add that in. And we are also very secure!
So that’s where the infrastructure people are at right now. PaaS is basically container stuff. Nothing else really matters.
These cool companies that had been around for a while that were perhaps “Born in the Cloud” started saying: You know, this IaaS stuff is working pretty cool for us, but we have jobs that do other things. You know, solving the real problems that plague society like Silicon Valley is known to do today: How can I spy on my old girlfriend from High School? How can I tell people that I’m having a rough day? How can I exploit Taxi drivers and then replace them with machines some day? These are the issues people.
So let’s imagine that someone uploads a photo to our super amazing site that let’s you share photos “with people that you care about”. They don’t want to maintain VMs for this. They want something like PaaS but they don’t want to manage containers. So Amazon says in November 2014: Hey: We have this thing called Lambda and it just executes functions in responses to events. So if you upload a photo, it will call this function. We’ll package your function and run it on a container and we’ll manage it all for you. Magical!
Pause here and let us all praise Amazon: Oh AWS, you are so magical, so innovative, so insanely focused on your customers! How shall we praise thee? Selah!
Developers love it cause now we can write entire applications without creating virtual machines! Wahoo! We’ve finally freed ourselves from the shackles of the operating system! No more patching. Its all the responsibility of the cloud providers.
Cloud providers are happy to provide it to you because now you will use more of their services (we’ve got you trapped!) and free up our VMs that you customers were idling waisting away anyway.
But it turns out that AWS wasn’t really listening to their customers as fast as you would think. It was only until some other threats started to emerge. Kubdos to AWS for being aware of the threats. Some companies I’ve worked for haven’t been as astute. Back when we started mobile development a two-person shop would start working on the next killer mobile app. This was about 2008 and the mobile developers would spend time working on the front end and making it all work awesome. But then they started to realize: Hey, we could do a lot more cool things (like track our customers and steal their privacy) if we could upload this app information to a cloud platform. But back in those days they couldn’t afford a system administrator (oh sorry, full stack reliability engineer) so what were they to do?
Two great companies were formed to solve this problem and others have emerged. Parse.com and Firebase were created in 2011. Parse was bought by Facebook and Firebase by Google. These companies offered a dashboard to mobile app developers that basically offered SaaS to developers. These services back then were called BackEnd as a Services. And what more is serverless than creating an application that runs in the cloud? Function as a service is just the glue that combines the other elements of the backend. So in a way, the mobile app developers created serverless. Right?
Where AWS and now others have it right is that those serverless systems can go faster because they use containers underneath. You see, Serverless is the combination of all the developments of these different players. Their needs, passions, and desires, all being fulfilled and packaged in a grand thing called Serverless.
Serverless today has a couple of characteristics that make it great:
- You don’t have to manage operating systems (like IaaS, or Container as a Services (the new PaaS?))
- You pay by the transactions instead of by the hour like IaaS
- You buy into a bigger ecosystem of applications that are written for app developers: A database, an identity service, a notification service, an object storage service… Function as a service is a way to tie those together.
The cost is cheaper for everyone, the velocity is vigorous, and the enjoyment is beyond euphoria.