DEV Community

loading...
Roost.io

The swing of the "works on my machine" pendulum!

rishiyadav
Kubernetes and container enthusiast
・2 min read

Why dev-prod disparity is such a big issue?

We need to get to the history of the gap between development and production systems. Once upon a time, during the era of punching cards, there was no gap between development and production systems. If there were no errors, time to deploy was close to zero. If there was even a single error, developer had to start all over again (almost, though there was some reusability) and wait in line to get a chance to schedule next run. There was no WOMM issue at that time as the giant mainframe was everyone's machine.

Next era was the era of thick clients. Think of visual basic running on MS Access database. This was the brief golden age of WOMM being true. If it worked on developer machine, it had to work on the production machine (unless machine was corrupted).

Next era was of client-server. To scale applications, a server component was added and that brought in server administrators. Servers were beefier machines. They were mostly Unix (like Solaris, HP-UX). Initially developers worked on these machines but it was not a very scalable model. This problem was solved with the popularity of Java. The slogan "write once, run anywhere" actually meant "write on cheap machines and run on expensive machines. This was the sunset era of WOMM. If it worked on developer machine, mostly it worked on the production systems.

Next era was the era of Linux. Though Linux was invented in early 90s, its real value became visible only in early 2000s. There were various factors which worked as perfect storm. One of them was the dot-com bust and companies looking for cheaper alternatives. Another was Google making server farms a cool and popular idea. As more and more applications started being deployed in scaled out fashion using server farms, the dark ages for WOMM started. There was too much traffic on the network and applications not only had to care about their own reliability but also network reliability.

Next came the cloud-era (no pun intended). Migration to cloud, presented an opportunity to rethink application design. This also got help of the popularity of service oriented architecture. Initial popularity of services, led to microservices and now nano-services. This created the peak of dark ages for WOMM. Now not only servers were scaled out but even functions were spread out on the network. This also created the opportunity for a lot of policing between developer and production. This policing has only made the production problems worse as now developer to production gap is at its worst.

Discussion (0)