As companies attempt to implement Digital Transformation, they need to modernize their in-house software systems and build new ones. This modernization process often includes transitioning the software to the public cloud, using modern technologies, implementing a SaaS system, changing the system's architecture (Microservices anyone?), and delivering a new user experience (UX) to customers. However, we rarely get the opportunity to rebuild our systems from scratch. The customers are still there, the business is still running, and stakeholders still want everything to operate at the same operational level as it was until now.
So how can we do it? Can we have our cake and eat it too? There is no silver bullet, and trade-offs comprise our every choice. The trick is knowing which questions to ask and how to choose our strategy.
Join us in this session as we review the technical methods we have to modernize our software systems. We'll review the questions we should ask ourselves and the strategies that we can employ. Starting from lift & shift through containerization to cloud-native apps - we'll take you on a journey that's relevant for any modern software's stakeholder.
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