This document discusses strategies for evolving existing applications to take advantage of cloud computing capabilities. It outlines four main strategies - lift and shift, containerization, modernization, and building cloud-native applications. Lift and shift involves minimal changes and moves applications to the cloud as-is. Containerization packages applications and dependencies for portability. Modernization utilizes cloud platform services and refactors some components. Cloud-native applications are built from the ground up to be scalable and efficient in cloud environments using microservices and other modern techniques. The best strategy depends on available resources and business priorities, with an emphasis on gradually evolving applications over time to gain cloud benefits.
6. Agenda
▪ Evolution vs. Revolution
▪ The application evolution process
▪ Lift & Shift
▪ Containerization
▪ Modernization
▪ Cloud-native
▪ Making a choice
6
7. About Eran
Eran Stiller
▪ @eranstiller
▪ CTO & Founder at CodeValue
▪ Software architect, consultant and instructor
▪ Founder of Azure Israel Meetup
▪ Microsoft Regional Director & Azure MVP
7
9. Evolution or Revolution, That Is the Question!
10
http://cdaworldhistory.wikidot.com/europe-faces-revolutions
https://commons.wikimedia.org/wiki/File:Human_evolution.svg
16. Advantages
▪ Quick way to the cloud
▪ Put your foot in the door
▪ Possibly better SLA & DR
▪ Enhanced Security
▪ Relief from technical debt
▪ Throw more money at the problem
▪ Possible cost-savings*
▪ Scalability on-demand*
20
17. Drawbacks
▪ Can’t take advantage of cloud-native features
▪ Not always the most cost-effective way
▪ Probably the path with most cloud resource consumption
▪ Can’t always implement cost-optimization to its full extent
21
20. What Is Containerization?
▪ Package software code and all its dependencies in a standard manner
▪ Run uniformly and consistently on any infrastructure
▪ Containerization does not imply cloud-native
▪ It’s a step in the right way
24
22. Drawbacks
▪ Still not utilizing cloud-native resources
▪ “Merely” a more advanced lift & shift technique
▪ Legacy Windows applications can pose a problem
26
24. What Is Modernization?
▪ Platform-as-a-Service (PaaS) or immutable IaaS usage
▪ Refactor some application components to include modern cloud
technologies
▪ Might include containerization
▪ Containerization can be skipped as well
28
29. What is Cloud-Native?
33
An approach (…) that utilizes cloud
computing to "build and run scalable
applications in (…) public, private, and
hybrid clouds". (Wikipedia)
30. Which Technologies Does It Include?
34
Technologies such as containers,
microservices, serverless functions and
immutable infrastructure, deployed via
declarative code are common elements of
this architectural style. (Wikipedia)
31. Advantages
▪ Best efficiency
▪ Best agility
▪ Least management overhead
▪ The best way to start for new cloud-based applications
▪ Revolution
▪ Green-field
35
32. Drawbacks
▪ The most cost to evolve to
▪ A gradual revolution
▪ The most effort to evolve to
▪ Replace/rearchitect pieces one-by-one
36
34. The Choice Spectrum
38
Lift & Shift Containerization Modernization Cloud-Native
Least expensive to implement
Fastest to implement
Less agile
Less scalable
Less efficient
Most cloud resource wasteful
Most management overhead
Technologically behind
Most expensive for evolution
Slowest to evolve to
Most agile
Most scalable
Most efficient
Least cloud resource waste
Least management overhead
Technology forefront
36. Takeaways
▪ Old apps need to either evolve or be revolutionized
▪ There are roughly four strategies for evolving an app
▪ Choose the right strategy based on resource availability and business value
▪ New apps should be typically built cloud-native from the start
40