Back in 2000, I was working for a small Internet startup in Tel-Aviv. We were building a Windows desktop sidebar (they were kinda popular back then) and of course were about to take over the world by storm. Naturally, we had to have a strong backend to support all of our millions of expected users. But first, we needed servers.
This was before cloud, or at least before Amazon made the cloud accessible to everyone. So first we had to find a small warehouse and make sure we had enough power. We ordered a bunch of servers which back then involved talking to actual salespeople from Dell and HP. Then we had the distinct pleasure of dealing with the phone company and Internet providers to make sure our servers could actually connect to the Internet.
Linux was already the goto OS for hackers like us so after a few days of tinkering with installs, patches, DNS, NFS, network boot and routing we had our cluster of servers up and running. Next was setting up a database. MySQL saved us a bunch of money in Oracle licenses. This was pre-NodeJS days and Python was still in its infancy, so we choose Java as our programming language. Install J2SE, Tomcat and source control. Finally, four months into the process we could finally start coding.
We ended up owning a pretty deep stack:
And so did every other startup on our street. None of these were differentiated in any way and none had any business value except letting us run our apps.
In 2006 Amazon changed this reality for many companies. With the combination of a new technology called virtualization and massive capital investment, they turned the ordeal of acquiring a new machine into a self-service 5-minute process that required nothing but a credit card. It was cheap too, so you didn’t even have to get your boss to approve and could simply expense it at the end of the month.
A four-month ordeal turned into a couple of weeks of setting up software. That was a game changer. By outsourcing physical infrastructure to the cloud provider, companies could focus on their software stack and applications. They could build faster and deliver more value to their customers.
Cloud-based companies no longer owned physical infrastructure, only software:
My old startup was long gone at that point (really, who needs desktop sidebars?) but others fared better and were indeed serving millions of users. As web turned into mobile, those millions of users turned into tens and hundreds of millions. That required more servers, more features, and more complex architectures. In an increasingly competitive landscape, the pressure to release often became stronger than ever.
Companies started embracing a new architecture called Microservices. They broke down their code into smaller independent units accessible over the network. Now different two-pizza teams could work on different microservices in parallel. The development organization could scale better and build faster.
As the number of microservices grew, virtual infrastructure became more and more complex. Old IT organizations morphed into highly sophisticated DevOps teams that had to deal with thousands of virtual servers, networking, deployment, containers, artifact management and more. Not to mention security. Running optimized infrastructure at scale became a challenge in and of its own.
Over the years, different attempts have been made to offer managed infrastructure, often referred to as Platform-as-a-Service (PaaS). Some of these were more successful than others, but it wasn’t until 2014 and the announcement of AWS Lambda that things began to shift for real.
AWS Lambda was the first serverless platform. A serverless platform (not to be confused with on-prem FaaS) provides a fully managed runtime environment for application code. By outsourcing virtual infrastructure to the serverless provider, developers can focus on application and business logic. They can build faster and deliver more value to customers.
Serverless offers many advantages that were very hard to achieve before:
- Fully managed infrastructure lets developers focus on application logic and build way faster than before.
- Cost reduction resulting from the fact that users only pay of actual compute time used (applications code effectively runs at 100% utilization).
- Highly granular code in the form of functions empowers individual developers and encourages sharing and reuse of code.
- Simplified programming model makes the cloud more approachable to more developers and even business (citizen) developers.
- Secure runtime with isolation built into the infrastructure and highly granular (least privileged) permission applied to individual functions.
Lambda was soon followed by offerings from Azure, IBM and Google. In the four years since its debut, serverless gained incredible momentum amongst developers and enterprises alike. Still, as we enter 2019, serverless functions are limited to very specific use cases. Performance limitations and pricing model makes serverless suitable for DevOps and background processes, but if we wanted to use serverless as backend for our desktop sidebar (or for that matter, any modern web or mobile application) it would have been an utter failure.
That’s why we founded Binaris. We envision a future where applications are built entirely out of serverless functions. Our fully managed cloud-based serverless platform, now in beta, runs over 10x faster and over 10x cheaper than alternatives. In fact, it is probably faster and cheaper than running your own handcrafted cloud services. Binaris functions can be used in a wide variety of use cases including web and mobile backends, game backends, microservices, AI, streaming data analysis and more. Any real-time always-on service can now be deployed as a serverless function.
For us, this is the beginning of an amazing journey towards a better developer experience and a faster way to build applications. We believe serverless functions will completely change how we build software and rewrite business rules in the process. Stay tuned.