BT

Facilitating the Spread of Knowledge and Innovation in Professional Software Development

Write for InfoQ

Topics

Choose your language

InfoQ Homepage Articles Migrating to the Cloud: Is It as Intimidating as It Appears?

Migrating to the Cloud: Is It as Intimidating as It Appears?

Bookmarks

Key Takeaways

  • 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)
  • Stabilization
  • 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

Data Migration

Firstly, let’s look at some of the options for Data Migration.

Static Data

  • BLOB and Static data
  • Migrate using online transfer: UPLOAD, RSYNCH methods
  • Offline methods like transfer appliances or archival media
  • Depends on size

File Data:

  • Files and Directory data
  • Migrate using online transfer - SMB, UPLOAD, RSYNCH
  • Offline methods like transfer appliances or archival media
  • Depends on size

(No)SQL Data:

  • 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:

Rehost:

  • 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:

  • 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:

  • 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:

  • 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.

Business Impacts

What are the positive versus negative impacts?

Like any organizational change, potential impacts need to be considered.

Positive Impacts:

  • Cheaper Costs: You only pay for what you use (metered service)
  • Managed Services: Patching, upgrades, availability, etc., of services are managed for you
  • Elasticity: Services can scale automatically based on demand
  • SRE: Supporting technologies like monitoring, tracing, DRaaS, etc., are provided for you and can be more closely integrated out of the box
  • Control: You can choose the level of control that you want using IaaS and PaaS
  • Empowerment: Teams can now potentially own their services all the way into production

Negative Impacts:

  • Reskilling: Organizational reskilling is required for Ops, Runtime and Dev functions
  • Control: There is some loss of control over environments
  • Processes: Business practices and structures MAY have to change or adapt to better support Cloud (DevOps and Ops/SRE)
  • Refactoring: Applications and services may need to be refactored to make better use of "modern" architectural patterns
  • SRE: Existing solutions for monitoring and recovery may need to be replaced as well, increasing cost
  • Downtime: Downtime for migration might be an issue

How can you potentially mitigate these impacts?

Business

  • 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

Technology

  • 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.

About the Author

Rate this Article

Adoption
Style

Hello stranger!

You need to Register an InfoQ account or or login to post comments. But there's so much more behind being registered.

Get the most out of the InfoQ experience.

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Community comments

  • Personal experience

    by Nico Coetzee,

    Your message is awaiting moderation. Thank you for participating in the discussion.

    First of all, I want to thank the author for attempting to write a good summarized article of a very complex subject. Overall I think it was well written.

    Allow me to share some of the key statements I differ with slightly and where I think my 15 years of cloud migration experience have taught me a slightly different lesson to what was stated in the article.

    1) "Cloud migration is not a drastic change for businesses." - It's actually a pretty big change that requires a whole new thinking. Moving away from capex to opex alone is intimidating enough. It also depends on how large the current investment in on-premise hosting is, and how mature/ingrained it is. Also, don't forget the impact on your IT staff: how many of them need to retrain? How many skills would you need to source externally?

    2) "Cloud Native services refer to applications and services that are built, deployed, and run on the Cloud." - in a very broad sense, yes, but I think it's better to define it as something like applications built around cloud native principles (search for 12 factor and also read more on the CNCF website). The difference is subtle, but very important: you can almost force any application to run on cloud infrastructure (lift-and-shift scenarios), but to optimize an application to truly take advantage of cloud services (elasticity, to name one feature) is a whole new ballgame and it often involves costly re-writes of many bespoke applications. This journey in itself can take anything from 1 or 2 years for small applications, to 10 years or more for a large enterprise suite of applications. Also note that in this time, the business will probably run a hybrid model, which makes for a rather expensive initial investment as both the current on-premise infrastructure must be maintained as well as a growing cloud cost as more and more applications and services are migrated.

    3) "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." - yes, but also no... There is something called a shared responsibility model and the business takes a certain level of responsibility depending on the type of service. Also, by not owning the service there are now other risks to manage, for example keeping up with the cloud providers platform versions, which can sometimes be much more aggressive than what a typical enterprise may be used to. This, by the way, is not a bad thing (in my opinion), but it does potentially add a lot more risk to the business.

    4) In terms of the business impact, I disagree with a number of items, but I will acknowledge that it may differ from business to business and there are some businesses for which the list as provided will be true. I would always recommend that each enterprise does this impact analysis themselves with a trusted partner in order to come up with their own list.

    Cloud migrations is neither cheap, nor easy. It takes years and requires a huge investment in actual money (opex and people investment) and effort. In many cases the business will face brand new risks and they will have to either retrain or hire the skills required for such a journey - and these skills are not as easy to come by. There are a lot of people with certification, but sadly still lack the experience of such an endeavor. You have to see at least one enterprise migration through to the end to appreciate my comments. If anyone wants to engage with me to discuss this further, please reach out.

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

BT