Summary: We are still early with the cloud: why software development is overdue for a change by Erik Bernhardsson
Despite the large number of cloud providers and their services, we still write and run code locally
Original article: We are still early with the cloud: why software development is overdue for a change by Erik Bernhardsson (published October 2022)
Motivation: we are still in a phase where we are using "adapter" tools like Docker to bridge the gap between local development and production instead of fully taking advantage of the cloud’s capabilities.
We are still early
Cloud computing has changed how we build software. Building technology is vastly different today than it was a decade ago. Since then, the number of services has grown significantly. However, the user experience has largely remained the same.
The cloud should offer:
infinite scalability,
less time spent on infrastructure,
fewer constraints,
lower costs.
But if the cloud truly delivered, we would be able to run thousands of serverless containers in parallel without having to build images and CI/CD processes manually. We shouldn’t have to think about IP addresses, CIDR blocks, or NATs to connect services A and B.
Slow feedback loops
With cloud and Docker, we have most of the building blocks, but the feedback cycles in writing code are poor. There are still huge differences between local and prod environments. Docker is great, but we merely use it as an adapter, as a “lift and shift“ approach to get the same environment in prod as we used locally. But to improve those slow feedback cycles, we should work locally the same way we do in prod (i.e., in the cloud), not the other way around. Instead of shipping our local development environment to prod using Docker, we should mimic the production environment when writing code. That’s how we can transition from adapters and toy services to finally taking advantage of the cloud capabilities, including flexible resource needs (scaling up/down), pay-as-you-go cost model, and removing big environment differences.
“We're overdue for some larger change in how we develop, deploy, and run code.”
“To be free, we need to break free of our past”
Legacy tools encourage us to think primarily about portability. We want our applications to run the same way in the cloud, locally, and on-prem. But this encourages the ineffective (and wasteful) lift-and-shift approach. Eventually, the abstraction layers will keep moving up, and over time, we’ll keep optimizing for the end-to-end developer experience.
Core message & CTA
“I'm excited for a world where a normal software developer doesn't need to know about CIDR blocks to connect a Lambda with an RDS instance.“