As part of my role as CTO at PureSec, I get to meet many organizations around the world and discuss serverless with architects, developers, analysts and so forth. I recently noticed that I can pretty much classify the people that I meet with (and who understand what serverless is) into two groups.
The first group, are people who know what serverless is, but feel it will be "contained" to only certain use cases – mostly related to the public clouds.
The second group, which I consider myself and my colleagues at PureSec to be a part of – are people who see serverless as the true natural evolution of modern software - a superior software design paradigm, which is bound to take over the majority of software projects that will be developed in the (not so far) future.
My brother-in-law, is a hardware-wizard. He builds hardware prototypes for a living – some of which are the craziest things you can ever imagine. From home automation systems, to robotic hands for surgeons. My brother-in-law loves to program FPGAs for a living, and I couldn't program an FPGA if my life depended on it. Every time I visit him, he ends up taunting me about how I don't understand real programming, or real software. For him – if you can't touch the hardware, let alone program it, you're an amateur.
I know what my brother-in-law thinks about serverless. It's that vague thing that happens 200,000ft. above the hardware that someone else built. For him, it's no different than object-oriented programming or any other kind of passing software fad. But he is missing the point – you see, he’s in the first group of people...
True serverless believers (including yours truly), understand that serverless is not just another option for designing, building or deploying software. It's much bigger than that.
It's what software developers have been hoping for all along. A way to build software, without having to think about anything else. We want to build software without thinking about the hardware, or about how our software will scale, or how to deploy it, or even where to deploy it.
While serverless made it’s first and most prominent appearance in public clouds, I really don’t expect it to stay there for long. Just recently, we saw both IBM and Oracle offer frameworks for “DIY serverless” - aimed for private clouds. I trust IBM and Oracle - after all, these are two organizations that are closely coupled to the enterprise developer community.
Just look at how many options you have for developing serverless today:
- AWS Lambda
- Azure Functions
- Google Cloud Functions
- IBM Cloud Functions
Frameworks for DIY Serverless:
- Oracle FN project
- VMWare Dispatch
- SpotInst functions
Different people think of serverless in many different ways - it seems to be a very emotional issue. For example:
Paul Johnson’s post, which states that:
AWS defines serverless as: no server management, flexible scaling, high availability and no idle capacity.
A Serverless solution is one that costs you nothing to run if nobody is using it
I personally like what Ken Fromm wrote about serverless back in 2012, in his article "Why The Future Of Software And Apps Is Serverless"
The phrase “serverless” doesn’t mean servers are no longer involved. It simply means that developers no longer have to think that much about them. Computing resources get used as services without having to manage around physical capacities or limits.
With regards to the “not having to pay for idle resources” statement - that’s a terrific by-product of (current, public cloud) serverless, which probably helps to convince C-level managers to hop on the serverless wagon. It’s definitely not the main incentive.
This pretty much sums what I believe as well. Having experienced how simple it is to develop and deploy a sophisticated system in less than 3 days using AWS lambda - I can’t think of a better way to build modern software. Servers and hardware belong with IT folks.
Developers prefer serverless.