Until 2007, web hosting was a huge expense for companies. If you wanted to make a website or server that handled any serious amount of traffic, you pretty much had to rent your own server.
You then had to put it in a data center, where it would be installed by some sad guy with a ponytail1.
1: Just jealous that my hair fros and I can’t grow a pony tail or man bun.
If you had the budget, you could use a company like Rackspace, where you could either rent their servers or share a server with a few people.
Then, the “VPS” (Virtual Private Server) revolution came in 2007. Amazon launched Amazon Web Services. Basically, anyone could spin up a server and pay Amazon an hourly fee, rather than having to buy the hardware and rent access to a rack in a data center. This reduced hosting costs substantially, especially in the beginning. It’s cheaper to rent a few servers by the hour than to own your own hardware. Once you are spending millions per year in server expenses, people still evaluate the option of owning their own hardware, but the VPS/hourly rental innovation changed the game entirely. Amazon competes in the space with Google Cloud, Salesforce (Heroku), Digital Ocean, Microsoft Azure, etc.
Another benefit to this is that it’s easier to scale up: if your app suddenly becomes an overnight success, you can triple the amount of server usage with the click of a mouse, rather than having to order hardware, drive to the data center, etc. This reduced lag time from weeks (buying the hardware, installing it, setting it up) to days.. or even a few hours of configuration within the AWS / Google Compute Engine / Azure console.
In 2015 or so, another innovation came: “serverless” functions. Instead of having to rent a server by the other, where you would then install/deploy your app/website/software, one may just write their app as a series of functions. Instead of paying to rent the whole server per hour, you instead just pay for the system resources your app is using. For example, let’s say you have an app that uses 100mb of RAM…. when in use. Yet the server has 2GB of RAM. If instead you only pay for the hosting costs of your app while it’s actually being used, you would be paying a fraction of the costs.
Serverless development has a few other benefits too:
- Reduces expenses since you pay for the computing resources you use
- Easy to measure function execution: instrumentation and measurement is built in to the concept
- You no longer have to deal with server management. You don’t have to watch the operating system for vulnerabilities/viruses, you don’t have to upgrade the software, you don’t have to deal with machines that experience hard drive failure. All you have to worry about is your app, rather than the environment it runs on.
- Infinitely scalable: all you have to do is deploy your app to Amazon Lambda/Azure Cloud Functions, and then Amazon figures out how to provision the server resources necessary to execute your app. The “cloud” reduced “time needed to scale” from weeks to days/hours. Serverless reduces “time needed to scale” from days to… nothing. It’s instant!
- Pre-2007: you essentially needed a data center or expensive web host (who had their own data center / hardware) to deploy your code for any serious scale
- 2007: Amazon launches AWS. This of course is the same thing as the cloud. 8 years later, pretty much every big company has a “Cloud” strategy
- 2015: Amazon launches serverless functions. 2 years later, the hardcore techies are enthusiastic about it and taking early advantage. Within 5 years this will be mainstream… TV commercials, etc.
Thanks to Rich Jones for checking my ponytail comment. Thanks to Justin George for underscoring the importance of the time-to-market differences.