One of the things I learned early on is to design systems that allow for easy ongoing change. How? Cloud or non-cloud system, you build for change by compartmentalizing system components so that they can be configured or changed on their own. A simplistic analogy would be how we can interchange car parts to mix and match system components, having the ability to replace or update components without redeveloping the entire vehicle.
Other approaches leverage services and microservices to centralize and reuse some application behavior and data. This means that updating a specific service in a single location will change the behavior of all systems using that service, for instance, replacing a tax calculation, changing a database model, or even updating a component’s enabling technology, such as moving to containers and container orchestration.