We now know how to migrate applications to the cloud: We have lift and shift, partial refactoring, and complete refactoring.
Lift and shift simply pushes the application code and data (or their images) to the cloud. Partial refactoring means rewriting parts of the application to better use cloud features. Complete refactoring means rewriting most of the application to be cloud-native.
Which is the best approach? Public cloud providers are promoting the lift-and-shift approach -- because it gets you to the cloud faster, though at the expense of inefficient applications. This brings income to the cloud providers sooner and gives them more revenue because of the wasted resources you end up paying for every month. They love that.
The reality is that enterprise application workloads are like snowflakes -- they are all different. The only common pattern is that most applications are not designed well for the cloud. They might not take advantage of threading, or their data is too tightly coupled to the application, for example.
These design issues can eliminate the efficiencies you seek from the public cloud or even cost you more on the operations side. I’ve seen applications take unnecessarily huge footprints in the cloud, which can translate into millions of dollars tossed away in wasted cloud resource usage. It's like using a 20-year-old refrigerator in a new house: Of course it's going to use too much power, because it wasn't designed in an era where power efficiency mattered.
The long and the short of it: You’ll have to modify most of your applications heading for cloud. That's hard work, which means your migration will be slow. But if you don't spend the effort and time, to get a quick "win," you’ll have crap running in the cloud that will cost you dearly. It'll likely even claim your job once your leadership figures out that this new platform is costing the company more than its traditional systems.
However, don't let this stop your move to the cloud. Do it right, and avoid the temptation of shortcuts.