App Modernization, Cloud Native, Microservices – Overview, Strategy and Techniques

Disclaimer: This blog content has been taken from my latest book:

“Cloud Native Microservices with Spring and Kubernetes”

These are important objectives for app modernization, cloud migration or containerization and building new applications from the scratch!

These are essential steps to start thinking about modernization (Cloudification). I will cover 101 high-level view of modernization strategy and techniques in bullets, will try to cover these topics in detail in my upcoming blogs! Please keep on following my blog and share your queries in “Leave a Reply” section. Thanks for reading my blog! Happy learning 🙂

What is Modern Application?

Modern application is also called cloud native application which follows 12-factor/ 15-factor principals, microservice architecture practices and containerized on cloud.

What is Cloud Native Application?

“cloud-native” a little more narrowly, to mean using open source software stack to be containerized, where each part of the app is packaged in its own container, dynamically orchestrated so each part is actively scheduled and managed to optimize resource utilization, and microservices-oriented to increase the overall agility and maintainability of applications.

The CNCF defines

According to my knowledge and experience, I think this is the magic formula of cloud native modern applications:

Cloud-native app development=  12-factor/ 15-factor principals + microservices + modern database + agile methodology + cloud platforms + containers (like Kubernetes and Docker) + devops (CI) + continuous delivery (CD)

Source: https://www.infoworld.com/article/3281046/what-is-cloud-native-the-modern-way-to-develop-software.html

“A cloud native app is architected specifically to run in the elastic and distributed nature required by modern cloud computing platforms,” says Mike Kavis, a managing director with consulting firm Deloitte. “These apps are loosely coupled, meaning the code is not hard-wired to any of the infrastructure components, so that the app can scale up and down on demand and embrace the concepts of immutable infrastructure. Typically, these architectures are built using microservices, but that is not a mandatory requirement.”

Because of this, you really want to have a platform-as-a-service (PaaS) model. A PaaS is not required, but it makes things a lot easier. The vast majority of cloud customers start out with infrastructure-as-a-service (IaaS), which helps abstract their apps from the underlying hardware. But PaaS adds an extra layer to abstract the underlying OS, so you can focus entirely on the business logic of your app and not worry about making OS calls.

Cloud Native Application Journey: Modernization 15 Factors Spectrum – Containerization and beyond!

A picture is worth a thousand words!

Simple app to Cloud Native journey!
Picture credit: Shaun Anderson & Joseph G Szodfridt

What is Microservice?

Microservice architecture – a variant of the service-oriented architecture (SOA) structural style – arranges an application as a collection of loosely coupled services. In a microservices architecture, services are fine-grained and the protocols are lightweight. Microservice is an independent module which can be deployed separately and easily maintained with no dependency on other microservice.

There are Microservices challenges also. Please refer my following blog for detail:

10 Challenges and Solutions for Microservices

https://cloudificationzone.com/2020/03/16/10-challenges-and-solutions-for-microservices/

References: Good microservice resources and patterns are available here- https://microservices.io/

To know more about Docker OCI Image, Docker Engine, Container fundamentals

https://cloudificationzone.com/2020/01/15/docker-oci-image-docker-engine-container-fundamentals/

Need for Application Modernization

  • High Availability
  • Containerization and platform automation to save operational cost
  • Modern Polyglot Applications development 
  • Managing heterogeneous workloads
  • Developer productivity challenges
  • Deliver applications and features faster for GTM (Go to Market)
  • Urgent H/W capacity needs
  • S/W and H/W quick updates and no outage deployment
  • Address security threats and patching
  • H/w and S/w Cost saving

Migration Strategies

  • Lift-and-Shift (Rehost)
  • Lift, Tinker and Shift (Replatform/Rebase)
  • Refactor
  • Complete Rebuild
  • Retire

Migration Techniques

  • Event storming
  • SNAP Analysis
  • DDD – Domain Driven Design
  • Self Isolated services
  • Business Driven services
  • Front end teams separation

Transition from Monolithic to Microservices

These are the important considerations when migrating from Monolithic to Microservices. We should double click on each and then try to apply these essential features of any cloud native applications and infrastructure:

Monolithic Vs Microservices
  • Scalability
  • Service Discovery
  • Load Balancing
  • Reactive Systems
  • Event Driven
  • Persistence
  • API Gateway
  • Split Apps on VM and Container
  • Cross-Cutting Concerns
  • Automation
  • Performance
  • Monitoring
  • Data Migration
  • Container support of legacy apps

Cloud Native Migration Paths

Published by

Rajiv Srivastava

Principal Architect with Wells Fargo

3 thoughts on “App Modernization, Cloud Native, Microservices – Overview, Strategy and Techniques”

Leave a comment