Instead of looking at a well-worn example, let’s look at a hypothetical example of a typical on-premises software company facing a new cloud competitor. From a high-level technology perspective, the difference is clear between cloud and on-prem. Digging into those details, however, one realizes that the architectural approaches are totally different (scale out v scale up). Continuing through the technology stack, you start to think about the tools and languages used which contribute to how the product is built — for example, integrations with third-party APIs via services compared to injecting customization code. One can look at the product from the systems management perspective and consider that most on-prem software was designed to be tweaked, customized, and actively managed by a nearby IT professional compared to cloud software that aims to bring simplicity, reliability, security by minimizing those touch-points. At the extreme, one (me) might assert that if you have on-prem software then something approaching zero lines of your existing code is “appropriate” to developing a modern cloud solution to compete.