- Cloud migration is not a drastic change for businesses. Becoming “Cloud Native” is crucial for business success in the current business landscape.
- Cloud refers to a network of remote servers that are accessible through the internet, where organizations can rent infrastructure and services from a “Hyperscaler” on a pay-per-use basis.
- Cloud Native services refer to applications and services that are built, deployed, and run on the Cloud. These services are designed to take advantage of the features and capabilities offered by the Cloud, such as scalability, high availability, and elasticity.
- Strategies and approaches for cloud migration include the 6-Rs approach, which involves rehosting, re-platforming, repurchasing, refactoring, retaining, or retiring services. The typical cloud migration project methodology involves several key stages: discovery, assessment, migration, and run state.
- Migrating to the cloud provides organizations access to a range of IT resources and services without the burden of owning and maintaining the underlying infrastructure. Cloud native services provide a powerful and flexible infrastructure that can help organizations to modernize their applications, improve scalability, and reduce operational costs.
Being Cloud Native is often considered crucial for business success in the current business landscape. However, the perception of becoming “Cloud Native” as a drastic change for a business might not necessarily be accurate. In this article, we will delve into the concept of Cloud Migration and its effects on the IT support infrastructure of your business.
What are Cloud and Cloud Native Services?
“Cloud” refers to a network of remote servers that are accessible through the internet, where organizations can rent infrastructure and services from a “Hyperscaler” on a pay-per-use basis.
There are three main types of Clouds:
- Public Clouds: Cloud services are available to the public and can be rented by anyone, such as AWS.
- Hybrid Clouds: an environment combines “on-premise” and Cloud-hosted services or infrastructure.
- Private Clouds: Cloud services are built, owned, and used exclusively by a single organization.
“Cloud Native” services refer to applications and services that are built, deployed, and run on the Cloud. These services are designed to take advantage of the features and capabilities offered by the Cloud, such as scalability, high availability, and elasticity.
What is a Cloud Provider?
A Cloud Provider is a company that provides Cloud-based infrastructure and services to organizations. These services can be rented on a pay-as-you-go basis, allowing organizations to save on both the upfront and ongoing costs associated with building and maintaining their own infrastructure.
The Cloud Provider is responsible for hosting the infrastructure and investing in the necessary upgrades and maintenance. This includes investing in hardware, software, and personnel to ensure that the services remain secure and reliable. The costs associated with these investments are passed onto the consumers through operational expenses rather than capital expenses.
In the long run, it is often more cost-effective for organizations to rent the services they need from a Cloud Provider, as it enables them to avoid the upfront costs of building their own infrastructure. Additionally, organizations can scale up or down as needed without incurring the costs of adding or removing physical hardware.
In conclusion, using a Cloud Provider provides organizations with access to a range of IT resources and services without the burden of owning and maintaining the underlying infrastructure.
What are “Cloud Native Services”?
“Cloud Native Services” are those services and infrastructure specifically designed to run on cloud platforms, hosted and maintained by Cloud Providers. These services can include a variety of offerings, such as virtual machines (VMs), application servers, VPNs, load balancers, routers, databases, and disk storage. They can be divided into three main categories: compute services, network services, and storage services.
- Compute services: The “do” services like VMs, application servers, etc.
- Network services: The “connect” services like VPNs, LBs, and routers.
- Storage services: The “data” services like databases, disk storage, etc.
Cloud native services provide a powerful and flexible infrastructure that can help organizations to modernize their applications, improve scalability, and reduce operational costs.
Strategies and Approaches for Cloud Migration
What is Cloud Migration?
Cloud Migration is about moving all or parts of your data, infrastructure, or compute services to a cloud provider.
Here is an overview of the “6-Rs” approach to Cloud Migration planning: Migration Types
- Rehost (Lift and shift): virtualize and move services “as is” to Cloud resources. They are usually used for proprietary application services like web applications or on-premise applications.
- Re-platform: move on-prem services “as is” to the Cloud using Cloud Native alternatives—e.g., Cloud managed databases. It can also include moving to PaaS services.
- Repurchase: move services (where available) to a SaaS offering—like Office365 for email, documents, etc.
- Refactor: partially or fully redesign your service architecture to make the best use of Cloud Native Services, e.g., microservices.
- Retain: keep some services—usually Legacy or highly custom backends—where they are
- Retire: replace existing services with Cloud Native Services as you can discontinue previous services.
Typical Cloud Migration Project Methodology
Throughout the entire project, it is essential to continuously monitor and manage the cloud environment to ensure that it remains secure, cost-effective, and aligned with the business objectives. This may involve ongoing maintenance and support, as well as periodic optimization and updates to the infrastructure and applications. The typical methodology for a cloud migration involves several key stages, including:
Discovery: Discovery is used to define the business and technical case/scope, plus assets to migrate.
- Scope of migration
- Business due diligence
- Technical due diligence
- Asset and CMDB Discovery
Assessment: Assessment is used to plan the migration and see potential methods of execution.
- Business Assessment
- Technical Assessment and PoC(s)
- Migration and backlog and MVP
- Migration Planning and Approval
Migration: Migration is used to run the planned migration steps, both technical and organizational.
- Technical Migration
- Organization Migration (Processes and Structures)
- Prep handover to SRE/OPs
Run State: Designated run team maintenance going forward.
- SRE/DevOps team(s) manage as appropriate
What services and features might typically get migrated?
When you migrate, what do you typically migrate or set up? The following is a sample of the common ones:
- DATA – Static, SQL, NoSQL, File-stores
- NETWORK – Topology, VNETS, Subnets, LB4/7, Firewalls, VPNs, Routers, Connectivity, etc.
- COMPUTE – Applications and Servers
- DEVOPS – Build, Test, and Deployment processes
- PROJECTS and BU—Organizational structures
- SECURITY – WAFs, Security groups, isolation, peering, secrets, keys, certificates, monitoring, etc.
- BUDGET – Controls and Monitoring
- OBSERVABILITY and SRE – Monitoring, Logging, Tracing, Alerts, Incident Management, Patching, etc.
- IAM – Users, Roles, Groups, Privileges, AD/LDAP, etc.
- CONTROL – Management and Oversight
Migration Use Cases—Technical Scenarios
Migration use cases are specific scenarios or situations where a business may need to migrate their IT infrastructure and services to the cloud. These use cases can vary depending on the type of business and the current state of their IT infrastructure. A variety of use cases can drive cloud migration and technical scenarios, including:
- DATA – Static, File, and Databases
- NETWORK INFRASTRUCTURE
- COMPUTE RESOURCES and APPLICATIONS
Firstly, let’s look at some of the options for Data Migration.
- BLOB and Static data
- Migrate using online transfer: UPLOAD, RSYNCH methods
- Offline methods like transfer appliances or archival media
- Depends on size
- Files and Directory data
- Migrate using online transfer—SMB, UPLOAD, RSYNCH
- Offline methods like transfer appliances or archival media
- Depends on size
- Database data
- Export and Import
- Instance “synch‘ing’”
- ETL methods
- Migration utilities
- Database file transfer
- Virtualization lift and shift
Secondly, let’s look at some of the options for Network and Topology migration.
“Network” and Topology Migration
Network migration is usually the most manually intensive as it requires mapping physical infrastructure and topology to cloud provider-specific IaaS. A typical approach might be:
Lastly, let’s look at some options for Compute Service Migration.
Compute Service Migration
Compute migration deals with migrating application servers, applications, and server clusters to the cloud. It is not just about migrating infrastructure but can also be about refactoring service architectures for cloud as well. Common approaches are:
- Rehosting servers: Lift and shift approach used to mirror existing servers “as-is” to the cloud
- Virtualize your on-premise host and upload images to the Cloud
- Create instances OR instance groups from those Cloud image(s)
- Can also use on-prem migration utilities from some Cloud Providers to guide the process
- Easiest to do, but does not take full advantage of Cloud architecture
- Re-platform services: Migrate services to similar Cloud-Native technologies
- Application services—like Web Servers, WebAPIs, REST applications—can be “Dockerized” and hosted on container engines (like Kubernetes). Deployed directly onto Cloud-managed application sandboxes like EBS or AppEngine
- Application binary is not refactored. It is just deployed “as-is” to a Cloud Managed service
- Refactor Services: Refactoring is about refactoring your application architecture to best fit available Cloud services
- This is highly dependent on your architecture, but would most likely include things like:
- Decomposition of application logic into appropriate Microservices or Macro services
- Dockerize and deploy to container service like Kubernetes
- Using native messaging and event services to provide inter-service communication
What is Docker and Kubernetes?
Docker and Kubernetes are two critical technologies you need to be aware of to benefit from migrating your applications to the Cloud.
Containerization and Docker:
- Containerization is the process of building a very lightweight, self-contained image that has all the OS, middleware, and deployed application binaries dependencies baked in.
- Images, once built, can be deployed on any Docker-supporting OS (which most do) and run “as-is.”
- Unlike VMware-type images, they are very small and easily scale on any OS.
- They are key to many Cloud Native technologies but are portable to any of them.
- Kubernetes is a “container orchestrator” platform that is an “all-in-one” technology for managing the deployment, monitoring, scaling, security, load-balancing, health, and inter-service communication of any containers deployed to it.
- It is one of the most common de facto standards for properly using Cloud benefits—like scalability, managed services, and cost.
Let’s take a closer look at the business impacts of cloud migration, both positive and negative.
What are the positive versus negative impacts?
Like any organizational change, potential impacts need to be considered.
- Cheaper CostsYou only pay for what you use (metered service)
- Managed ServicesPatching, upgrades, availability, etc., of services are managed for you
- ElasticityServices can scale automatically based on demand
- SRESupporting technologies like monitoring, tracing, DRaaS, etc., are provided for you and can be more closely integrated out of the box
- ControlYou can choose the level of control that you want using IaaS and PaaS
- EmpowermentTeams can now potentially own their services all the way into production
- ReskillingOrganizational reskilling is required for Ops, Runtime and Dev functions
- ControlThere is some loss of control over environments
- ProcessesBusiness practices and structures MAY have to change or adapt to better support Cloud (DevOps and Ops/SRE)
- RefactoringApplications and services may need to be refactored to make better use of “modern” architectural patterns
- SREExisting solutions for monitoring and recovery may need to be replaced as well, increasing cost
- DowntimeDowntime for migration might be an issue
How can you potentially mitigate these impacts?
- Do your migration incrementally
- Scope and control your migration; you do not need to do it all at once
- Brownfield vs. Greenfield
- For brownfield projects, use rehost, re-platform, or hybrid cloud to start. Do not try to refactor everything at the beginning
- Greenfield projects should be designed with Cloud in mind
- Staff and Teams
- Retrain existing staff in Cloud technology or augment them with new hires
- For Ops functions, keep structures the same or move them into project teams
- Budgeting Control and Funding models
- Do use a centrally funded ops function approach or distributed project funding
- Review which approach works best for you
- Service Migration
- First, start with data services, then compute, then network, but beware of “source of truth” issues and complexity.
- Always implement Security, IAM policies, budget controls, and observability in line with the services migrated.
- Have a cohesive end-state in mind, even if only migrating parts into it.
- Use Hybrid and Re-platform Solutions where appropriate
- Microservices and Containerization
- Cloud technologies work best with containerization technology.
- New application architectures should be designed with that in mind.
Migrating to the cloud may seem intimidating at first, but with careful planning and the right resources, it can be a straightforward and relatively painless experience.
Why is migration not intimidating?
Key things to remember: When looking at Cloud Migration, it is essential to remember the following points and the mental maturity model.
- Migration can be done incrementally
- Many services can be transferred “as-is”
- Only migrate what makes sense to
- Hybrid cloud approaches allow the “best of both worlds”
- Refactoring of services can be done gradually
- Migration tools do exist to help with the process
Summary and Conclusion
Cloud Services refer to managed infrastructure as a service (IaaS) or platform as a service (PaaS) offerings that are hosted in the cloud. Cloud Migration involves transferring data, infrastructure, and applications to these managed services in the cloud. A successful Cloud Migration strategy must consider technical and business objectives and prioritize incremental migration based on business priorities. Utilizing “rehost,” “re-platform,” or hybrid cloud strategies can help minimize the work involved in the migration process. Although refactoring migrated services can help optimize their use of the cloud, it is not an essential step. If you plan it right, you can do it in small bits at a time and still get great benefits.