1. Cloud Migration is the journey, the end-to-end lifecycle whereby thing move from other locations (on-prem, other clouds) and into the GCP GCP is the destination where these things migrate to, and which re often modernized/optimized in-cloud afterwards
  2. Types of Migration
    1. Rehost -> Lift and Shift
      1. Moving applications as they exist to the cloud
      2. When to use it
        1. Applications that can run unmodified in the cloud
        2. Speed is necessary
        3. Little appetite or need for change
        4. Minimal risk
      3. Use
        1. Google Cloud Bare Metal Solution (specialized workloads)
        2. Google Cloud VMware Engine (managed infrastructure)
        3. Migrate for Compute Engine
        4. Migrate for Anthos
      4. Pros
        1. Easiest migration
        2. Use existing tools
        3. Use existing skills
        4. No tools change
        5. Supports off the shelf software
        6. Fast way to migrate to the Cloud
      5. Cons
        1. Not inherently cloud-ready
        2. Scales vertically (generally)
        3. In not highly managed
        4. Does not work for all apps
        5. Does not leverage cloud pricing (generally)
    2. Replatform -> Lift and Optimize
      1. Lift the existing workloads and then optimize them for the new cloud environment
      2. When to use it
        1. To take advantage of all the core competencies of the cloud (elastic computing, redundancy, improved performance, security)
      3. Use
        1. Google Kubernetes Engine
        2. Google Compute Engine
        3. Cloud SQL
    3. Refactor -> Move and Improve
      1. Modify the workloads while migrating them to the cloud, or even before migrating them, e.g.; to take advantage of cloud-native capabilities (elasticity, scale, managed services)
      2. When to use it
        1. Improving the application's structure and code without modifying the architecture
        2. A major update to the workload is necessary
      3. Use
        1. Google Kubernetes Engine (managed Kubernetes / containers)
        2. App Engine (managed app platform - refactor)
        3. Google Cloud Dataproc
      4. Pros
        1. Portable
        2. Scalable
        3. Highly available
        4. Environmental consistency
      5. Cons
        1. Often requires refactoring
        2. May not work for off the shelf apps
        3. Requires new tools
        4. Requires updated skill sets
        5. Need to re-evaluate existing plans
        6. Takes longer than lift & shift
    4. Re-architect -> Continue to Modernize
      1. Instead of restructuring how the workload code works (Refactor), re-architect migrations change how that code functions.
      2. When to use
        1. Modify the application's architecture to adapt it to the cloud
      3. Use
        1. Cloud Functions
    5. Rebuild -> Remove and Replace
      1. Decommission an existing app and completely redesign and rewrite it as a cloud-native app
      2. When to use it
        1. The current app isn“t meeting your goals
        2. Take full advantage of Google Cloud features
      3. Use
        1. Cloud Functions
        2. Cloud Run
        3. Cloud Build
        4. Cloud Deploy
      4. Pros
        1. Takes full advantage of the cloud
        2. Removes technical debt
        3. Easily scalable
        4. Highly available
        5. Highly managed
      5. Cons
        1. Doesn't work for off the shelf apps
        2. Requires significant code rewrite
        3. Takes longer / more effort than lift & shift
        4. May not support niche scenarios
        5. Requires new tools
        6. Requires updated skill sets
        7. Need to re-evaluate existing plans
    6. Repurchase
      1. Moves from a purchase on-premises workload to cloud-hosted SaaS equivalent
      2. Use
        1. Google Cloud Transfer Appliance
        2. Cloud Storage Transfer Service
  3. Migration Path
    1. Assess / Discover
      1. Collects details of on-prem or source cloud environment (How many VMs, types of VMs, how VMs are configured, what interactions machines have)
      2. Assess and analyze the data collected and use it to make decisions about migration type, target architecture, licensing, resource allocation, and prioritization
      3. Input
        1. Business objectives
        2. Key stakeholders
        3. Technical assumptions
        4. Security approval for tooling
      4. Activities
        1. Stage1: Automated discovery to see what's really there
        2. Stage 2: Surveys and interviews to add context and scope
        3. Stage 3: Analyze, pick a first mover, and start Wave planning
        4. Stage 4: Generate inputs to foundation
      5. Output
        1. Workload grouping
        2. First mover workloads identified
        3. Refined TCO/ROI analysis
        4. High-level effort estimations
    2. Plan / Foundation
      1. Putting together the team, agreeing on project management protocols and defining and building GCP environment into which will migrate the VMs (Landing Zone preparation--billing account taxonomy, IAM rules, Resource Groups, Network and firewall rules, etc.)
      2. Input
        1. Application/VM grouping
        2. First mover workloads identified
        3. Initial sorting of groups to move
      3. Activities
        1. Establish IAM and organization structure
        2. Create/configure the network resources
        3. Cloud operations suite setup
        4. Billing export/labels
        5. Plan the pilot
        6. Rough out migration waves
        7. Create the migration factory
      4. Output
        1. Delivery of foundations/landing zones scripts
        2. Organization structure
        3. Agile migration factory
      5. Tools
        1. Configuration Management
          1. Ansible, Puppet, Chef
        2. Infrastructure as Code (IaC)
          1. Deployment Manager
          2. Terraform
      6. Cloud Foundation
        1. Create a well-designed GCP environment to run migrating workloads (Landing Zone)
        2. Identity & Access
          1. Define IAM policies
          2. Determine structure of the resource hierarchy
          3. Create projects and folders until organization is mature
          4. Authentication
          5. On-prem Active Directory as IdP
          6. Azure AD as IdP
        3. Networking
          1. Create networks, subnets, network devices (Cloud Routers, VPNs, and LB)
          2. Create firewall rules, unless maintained by the security admin
        4. Instrumentation
          1. Define baseline monitoring
          2. Build Cloud Monitoring dashboards
          3. Initial alerting groups and processes
        5. Cost Control
          1. Set up a billing account
          2. Define billing export and resource labelling
    3. Migrate
      1. Migrate workloads (VMs, DB, Containers or Data) from the source environment into GCP
      2. Input
        1. GCP migration landing zone
        2. Migration backlog
        3. Business prioritisation
      3. Activities
        1. Install and configure Migrate for Compute Engine
        2. Create waves and runbooks
        3. Define configurations for special apps
        4. Migrate waves of applications
      4. Output
        1. Successfully migrated workloads
        2. Lessons learned
        3. Updated operating model
      5. Tools
        1. Migrate to Virtual Machine (formerly Migrate for Compute Engine)
    4. Optimize
      1. Optimizing your environment and workloads
      2. Input
        1. Migrated VMs
        2. Business objectives
        3. Relationships with app owners
      3. Activities
        1. Update and prioritize backlog of optimizations
        2. Design and test strategy for specific optimizations
        3. Implement optimizations
      4. Output
        1. Updated workloads