Deployment models have evolved during my time in tech. In the mid-2000s I used to buy dedicated servers from companies like Rackspace. This involved speaking to sales people, negotiating pricing, then waiting a few weeks for the hardware to be deployed.
Virtual Private Servers (VPSs) were also common, but had major performance limitations because of how they were packed and oversold on the host. Slicehost (later acquired by Rackspace) had an innovative “cloud-like” approach which was very similar to what DigitalOcean and Linode offer today. At some point the VPS name changed to Virtual Machine (VM), but they were essentially the same thing. VPSs just weren’t suitable for write-heavy workloads like databases.
Next came Softlayer as a mix of both, but everything was behind an API and you could order dedicated servers that would come online within a few hours. This revolutionized the way components worked because I could have dedicated servers with bare metal performance connected in the same network as virtual machines for CPU-bound workloads.
During this time, AWS was growing. Starting in 2006 with S3, it rapidly launched new products and introduced the industry to a new way of buying infrastructure. Fast-forward to today and AWS is the dominant cloud provider.
Cloud spending has become centralized. It is convenient for both developers and operations teams to use a single provider with a single API, a single UI, and single bill. Tidy and consistent. Multi-cloud is a myth.
The unbundling begins
The innovation of the cloud is how resources are provisioned and billed - near-instant availability and priced based on actual usage. This starts to break down at scale, and can eventually be very expensive, but this approach made experimentation easy and cheap. The cloud works best for new projects, early-stage startups, and where you want to offload undifferentiated management overhead like host-level security updates, replacing failed disks, and database backups.
However, this migration from data center to cloud API has come at a heavy cost - complexity. Software defined everything provides unlimited functionality, but compounds with complexity.
Ten years ago you could provision a new VM on AWS EC2 and get a web server running with a public IP in a few minutes. Today, you have to: log in via SSO, pick an image and CPU architecture, select from many hundreds of instance types, create a key pair, set up a VPC and decide security group rules, configure storage volumes (and types), then optionally pick IAM profiles, shutdown behavior, placement group, whether to reserve capacity, select tenancy profile, apply tags…and so on. It’s complex.
Developer-first startups unbundling the cloud
The complexity and developers frustration has been noticed. Cloud vendors themselves have launched simpler versions of their core services, such as AWS Lightsail, but there are lots of new startups tackling the problem too. Some examples include:
Compute, VMs, Containers
Frontend applications, websites
Developer experience is the common theme
You don’t need to try each product - just visit their websites and scan the docs to see how easy it is to get started. Whether that is through a well-designed CLI or by using a web UI, deployment and management is easy, consistent, and robust. It’s designed for developers.
One challenge will be how these products maintain their developer focus as they scale and add new functionality. AWS was simple and easy to begin with - it’s even in the name of their first service, S3!
Networking will also be a challenge. If you deploy all your resources inside a single cloud region then you have high-speed, low-latency networking with lower egress fees. Unbundling core components, particularly databases, will result in higher latency and paying for egress. How this will be solved remains to be seen.
The cloud market is huge. Services like Fly, PlanetScale and Vercel have already shown they can convince developers to adopt their services with innovative functionality, modern design, and power user features like dark mode, command bars, keyboard shortcuts, CLIs…the focus is the developer.
What else can be unbundled?