Virtual Machines pave the way for automating more aspects of our infrastructure to provide resources at a much faster pace and a lower cost. Containers improve utilization even more, and they allow us to build highly resilient and elastic solutions. However, you still have to think about servers. For example, you have to address concerns such as scalability (which instance type and size?) and fault tolerance (how to configure redundancy and load balancing?). You have to think about what operating system to use and how to do patch management, and you also need to make sure access is secured.
To summarize, managing servers takes a lot of time, and it is an ongoing effort. At the same time, it is an important task – wrong configurations can cause system outages, and infrequently patched systems can cause data loss or, worse, leakage. This is why, traditionally, enterprises have entire teams that only concentrate on these tasks. However, that’s not only expensive. It can also often lead to conflicts and gaps between developers and operations. This has an impact on the speed and quality of your releases.