A software product is a dynamic entity that evolves and grows constantly throughout its lifecycle. Software often changes to fix functional or security defects, improve performance, build interoperability or add new features and functions. Each time a development team releases a new software version, IT operations must install that new iteration on every system or server where the software runs. For example, when Microsoft releases an update for Windows Server 2019, it's important to patch and update every server that runs it.
While patching is typically automated in its own right through installers, such as executable installer files or built-in update tools, large patches can still take hours to apply. That time is multiplied by the number of deployments, as well as the frequency of update and patch releases. Consider an environment with 500 VM servers running Windows: If a piece of software is patched several times each month, the aggregate software patch time is substantial. What's more, a piece of software in the organization's own CI/CD pipeline might demand daily patching. Forgetting a patch could leave a deployment instance inoperable or exposed to security flaws.
Consequently, IT administrators often enforce automated patching. In this common example of IT automation, patch management tools -- such as SolarWinds Patch Manager, ManageEngine Patch Manager Plus, ITarian Patch Manager and Automox -- automatically ensure affected systems update successfully.
The notion of immutable infrastructure -- wherein a deployment does not change after it's provisioned -- is slowly supplanting both traditional and automated patching paradigms. With immutable infrastructure, admins create a new deployment instance and redirect traffic to that new instance, while the previous instance is destroyed.