Why are there so many deployment systems?
There is a bewildering abundance of options regarding the installation of packages and configuring them on actual servers, not to mention all the ways to deploy client-side code.
Let's first examine the basics of the problem we are trying to solve.
We have a typical enterprise application, with a number of different high-level components. We don't need to make the scenario overly complex in order to start reasoning about the challenges that exist in this space.
In our scenario, we have:
- A web server
- An application server
- A database server
If we only have a single physical server and these few components to worry about that get released once a year or so, we can install the software manually and be done with the task. It will be the most cost-effective way of dealing with the situation, even though manual work is boring and error prone.
It's not reasonable to expect a conformity to this simplified release cycle in reality though. It is more...