Historical Solutions — Virtual Machines
LEVEL 0
The Problem
So we have this environment problem. Code needs a specific environment. Different machines have different environments. How did we solve this before Docker?
One answer: Virtual Machines.
But to understand VMs, we need to understand what came before even them.
The old way was manual and error-prone.
Someone would set up a server. They’d install the operating system. Install the dependencies. Configure everything. Document the steps (maybe). Then when you needed another server, someone would follow those steps again. And make mistakes. And the two servers would be slightly different.
This was called “snowflake servers” — every server was a unique, hand-crafted snowflake that couldn’t be replicated exactly.
Virtual machines changed that.