Cloud Migration- The detailed story
Cloud migration is the process of transferring an application, data or other critical elements to a new more modern cloud native architecture for improved performance, cost reduction and effective operation. However, if the organization lack a clear roadmap, understanding of best practices, and potential risks, the whole initiative might get ruined.
But don’t worry, this article will help you by offering a sample template for solutions, guidance, and insights on software migration. So Stay tuned!
Any cloud migration is determined by the synergies between People, Process and Technology. The healthy balance between change rate and stability within and between above factors bring long term effective migration for legacy application.
What’s People - It’s the two teams that execute the entire show i.e. Product Team- responsible for building, deploying, and operating business software applications. This team consists of software developers, architects, quality assurance specialists, database administrators, operations engineers, and DevSecOps engineers and the Platform Team- that builds, deploys, and operates platform-type services, such as infrastructure, networking, security, and enterprise productivity services. This team consume the cloud provider’s and third-party services, while providing their Software as a Service (e.g. IaaS) to the Product team.
What’s Technology — The migration roadmap is built on cloud soundness pillars i.e. Cloud-native technology, Operational excellence, Cost optimization, Quality, performance, and reliability, Security. The system workload is classified as cloud-ready, cloud-friendly, cloud-resilient, or cloud-native etc and a right migration strategy (from 7 Rs of migration) is selected.
What’s Process — The migration process combines a static view of the migration domain in three phases i.e. Planning, Migrate and Operate. It consists of Arch, Dev, Sec, DevSecOps, Ops, and Infra creating a dynamic process view that identifies each migration steps. Hence delivering tangible results in the form of architecture and software artifacts.
For this post, we will consider a sample application [under review current architecture] discussed later much in detail. The system migration starts with following phases:
Define Business Goals:
The migration process starts with defining the business goals. After identifying the pain points of legacy systems— such as slow performance, frequent downtime, scalability limitations, security vulnerabilities, high operating costs, or inadequate support for new business initiatives or technologies, the goals of migration should be well decided and understood. The goals of the system migration process should be aligned with the organization’s broader business objectives, such as improved performance, reduced costs, increased scalability, or better alignment with future technology trends.
Software Development Migration and activities:
Develop Target Architecture:
Developing the target architecture starts with
Defining Objectives:
- Application cloud migration objectives: build a cost-efficient and secure cloud environment, refactor the code to migrate the application utilizing the CICD automated approach, and take advantage of cloud computing characteristics such as elasticity, automation, and innovation to enable efficient and high-quality cloud operations.
- Application business (functional) requirements: support current business processes and functions.
- Application architectural (non-functional) requirements: architecture should meet reliability, availability, maintainability, reliability, performance, security, extendibility, manageability, and cost-efficiency.
Deciding Deliverables:
The deliverables include Solution Architecture Document (SAD), Cloud Provider Selection Matrix, Proposed Target State Architecture (as part of SAD), Components Change Summary, Risk Analysis Document, Resource Capacity and Cost Planning, which will be discussed later more in details.
Review Current State Architecture:
The current architecture of sample application to be migrated, is broken into tiers — Client (any desktop or mobile browser), Web (JavaScript, HTML, CSS and Angular Framework/ UI technology), Business (Java Spring Boot Framework/ .net / Backend solution), and Data (SQL RDBMS Database).
Select Cloud Provider:
The right choice of cloud provider — that has the best set of capabilities and the best cost model and will satisfy application’s workloads, business, and architecture requirements, can be selected based on Cloud Selection Matrix shown below. Based on below criteria and client ecosystem capability, cloud provider is ranked and best fit is selected.
Select Migration Strategy:
Right Migration strategies are chosen based on the varying complexities of system workloads, cost to be incurred, and the level of disruption they cause to an existing architecture. Below image shows the choice of migration strategy considered, for our three-tier application based on above factors.
Replatform [from 7R s of migration] components here is - deploying them to the Kubernetes cluster that provides automation and elasticity to scale applications up and down, to match the workloads.
Propose Target State Architecture:
After a selection of right choice of cloud provider, migration strategy and containerized platform … the target architecture is proposed. The solution should be cloud-native, vendor-agnostic, cost-efficient, and supported by the open-source community. Logging, monitoring and alerting services are also chosen[discussed later in detail].
Analyse Components Change Summary And Risk Log:
Once baseline and future architecture is ready, components change summary is prepared. A sample tech stack for current app migration, the choice of technology can be chosen in these five areas as shown below.
Finally, a brief change summary of changes for migration is prepared.
Conduct cost analysis & selection of tools, techniques and best practices:
Next, come up with total cost for setting up the target architecture in X-cloud environment.
Tools, or techniques mentioned here are aligned with the cloud migration design principles and will allow us to take full advantage of the cloud deployment model, the cloud services model, the migration strategies, and the cloud computing characteristics.
Build Secure Cloud Environment:
After design and planning, the implementation phase starts with setting up secured environment for infrastructure, services, application, and data. There is a shared model between cloud provider and the team, where the earlier is responsible for the security of the cloud, including its physical infrastructure, compute, storage, and networking components. The team is responsible for the security in the cloud, including configuration of the cluster data plane (security groups control traffic from the Kubernetes control plane into the VPC/VPN), nodes, containers, firewall rules, and identity and access management.
Application data will be protected by data encryption in-flight via SSL/TLS and at-rest via disk-level encryption and Zero Trust security mode, where the network security access model is based on strict identity verification processes. After all the security considerations taken by the product and platform team, below is the expected output from this phase.
Migrate application:
Once the cloud infrastructure is setup, this phase includes the set of development activities by Product team- Developer, Operations Engineer, Quality Analyst, and Agile Master. Code Changes are implemented to the application, data, and configuration files to make the code ready for the cloud infrastructure deployment. Application components are packaged into Docker containers and running in Kubernetes. Application data is migrated to X- cloud relational SQL database service with backup, replication, and restore capabilities.
The table above shows the complete migration process of UI, business and Data Tier as application components to Kubernetes. Tools, Techniques and best practices must be followed well to attain horizontal scalability, elasticity, reliability- self healing capabilities, manageability- automated deployment, service discovery, and load balancing for the application.
Monitoring, Logging and Alerting:
Once the application is completely migrated to cloud provider infrastructure, we need to continuously monitor and observe the application state and its behaviour in cloud. The implementation & operation of Cloud-native monitoring, logging, and alerting solutions is delivered over the network as XaaS(Everything as a service), hence separating concerns and dependency between product & platform team.
Software Delivery Migration and activities
Procure Software Delivery Environment:
Now when the Software is developed and migrated, cloud native software delivery model needs to be designed. It considers set of tools that support collaboration and synergy between the core organizational and cloud migration success factors: People, Process, and Technologies.
The Objectives of this phase are:
Below are the inputs highlighted required for activities — design the automated continuous integration and delivery process, and to select and provision the necessary software tools and services. The deliverables for this phase are also listed below:
Build Automated Pipelines:
Once software delivery environment is up, an automated DevSecOps pipeline needs to be built for application, data, configurations, and security within GitLab. It helps delivering customer features to the market faster, without compromising quality, compliance, or security. The application components packaged in a docker container inside Kubernetes cluster [as understood in previous topics] is delivered in different environment via automated pipelines using Kubernetes templates. This pipeline provides the Product team with continuous integration, continuous deployment and continuous delivery capabilities to deploy, upgrade, roll back, and delete application releases for Dev, QA, UAT, and Prod environments. The image below shows how the pipelines are built in Gitlab.
Software Operation Migration and Activities
Transition, Runbook and Disaster Recovery:
Once the application is migrated to the production environment and starts receiving client requests, a migration readiness checklist and production migration plan is needed to capture mandatory activities (including rollback) and resolve the impact within an enterprise and across external stakeholders. We will build cloud operations runbook to ensure smooth and express resolution of any post-migration or operational incidents and also design and implement an efficient Disaster Recovery (DR) solution.
Cloud Native Operation:
Now when we have provisioned cost-efficient, reliable, secure, and observable operational environments on the cloud provider infrastructure and deployed application code and data via an automated pipeline within the comprehensive DevSecOps ecosystem, we need to develop cloud-native software operational model which will help plan, organize, monitor, control, and optimize cost-efficient cloud software operations. Application operating cost is a shared responsibility for Product and Platform team for application and infrastructure respectively. The process consisting of Plan, Organize, Monitor, Control, Optimize [as shown in diagram below] helps the teams establish efficient cost management, plan workload resources, create and maintain assets inventory, monitor and control utilization rate, create budgets and alerts, and apply manual and/or automated (policy-based or machine learning-based) optimization practices.
Once the Cloud resources are identified, a total cost of solution is calculated[as shown below]. The resource and services with a low utilization rate or high cost are identified and cost optimization technique is applied for Compute, Data, Networking and Storage.
Below is the list of operation deliverables within cloud prod environment.
And, finally we come to the end and I would like to thank each of you, for spending your valuable time and effort in reading this blog. I hope this post had helped you in building a comprehensive view of the cloud computing world, its characteristics and models, its paradigm changes and related opportunities and challenges. Hence forth you must be able to objectively evaluate technologies and solutions to make sound decisions in designing, migrating and delivering your cloud native applications.