I have been thinking a lot about software deployment models and how they have changed over time. After running this by a few people, it was recommended that I blog about it. Read on to learn more!
As many of you know, I worked at VMware for 5+ years. VMware is known for inventing Virtual Machines (VMs). Before VMs, software was primarily deployed on physical servers. Today, there are various ways to deploy software, and it is interesting to look at the evolution over time and based on the leaders in the space. Here is an illustration:
It is worth pointing out a few notes regarding this illustration:
- The year represents when a disruptive technology was recognized, not necessarily when it was created (e.g., “containers” have been around for a long time)
- The company or product listed is (currently) recognized as the market leader
Upon putting together this illustration, there are a few key takeaways:
- All of these deployment models are in production use today — change is slow
- The landscape is constantly changing, and in recent years, at a much faster rate
- Open source is taking over — or put another way, the infrastructure is being commoditized
- The companies making money on the infrastructure do so primarily as managed hosting providers (i.e., they run the infrastructure for you)
Looking at companies today, most brownfield environments will be heavily VM or heavily PaaS-based. A large percentage, especially in the enterprise, are hosted on-prem. In comparison, most greenfield or more recent environments will be heavily container-based and will mostly be hosted on a public cloud. Don’t believe me? Do your own research, but here are some links:
I would also be remiss if I did not talk about software architecture generations, as they are directly tied to the software deployment models mentioned. You may have heard the terms gen1, gen2, or gen3 applications. The differences between the generations can be mapped over time and are based on the infrastructure that was used.
- Gen1: Up until the early 2000s and mainly focused on mainframe, client-server, and J2EE
- Gen2: Up until about 2014 and mainly focused on Service-Oriented Architectures (SOA) and early cloud adopters based on monolithic applications
- Gen3: Up to today and mainly focuses on enterprise cloud, microservices, containers, serverless, orchestration, service mesh, and Internet of Things (IoT) combined with open source infrastructure and data collection based on open standards.
Why does this all matter? Well, if you are building a greenfield environment, then you need to be up on the latest technology available and decide which you are going to make a bet on. For brownfield environments, you need to determine what migration story will be, at least long-term.
It is an exciting time to be in the software space!
© 2018 – 2021, Steve Flanders. All rights reserved.