Cloud Migration Strategy and Execution Questions
Planning and executing a move to the cloud: the migration strategies (rehost, replatform, refactor, repurchase, retire, retain), legacy assessment, dependency mapping, cutover planning, and rollback. Covers phased migration roadmaps, workload modernization, risk management during cutover, and validating success post-migration. The end-to-end migration lifecycle, not steady-state operations.
Given a simple three-tier application (web front end, application servers, on-premise SQL database) that must be migrated with minimal changes, which migration approach would you pick and why? Describe one practical migration path and one fallback plan if the chosen path encounters blocking issues.
Sample Answer
Direct answer: For a simple three-tier app that must move with minimal changes, Rehost (lift-and-shift) is the right pick: it gets the workload off the old infrastructure fastest, with the least engineering risk, and "minimal changes" is explicitly the constraint the question states, which rules out Replatform/Refactor as the primary approach.
Structured elaboration. Rehost means: stand up equivalent VMs (or VM-equivalent managed instances) in the cloud, move the SQL database as-is (or via a straightforward VM-based database migration rather than swapping to a managed database service, since that would itself be a "change"), and point the application at the new environment with no code changes. The case FOR Rehost here: fastest path, lowest risk of introducing a new bug, and it doesn't require the team to learn a new managed-service's operational model under time pressure. The case AGAINST going further (Replatform to a managed database, for instance) despite it being generally a good idea: the question's stated constraint is minimal changes, which usually signals either a hard deadline or a team without spare capacity for anything beyond "get it moved." Introducing a managed database swap at the same time as the infrastructure move stacks two changes into one migration event, which raises risk without a stated reason to accept it.
Worked example. A practical migration path: provision equivalent-sized compute in the cloud, migrate the database via a backup/restore or a short-lived replication tool (even for a "minimal changes" migration, a brief replication window beats an offline backup/restore if any downtime tolerance exists at all), cut DNS over, and validate. If the team later has bandwidth, migrating the database to a managed service (RDS-equivalent) is a natural FOLLOW-UP replatform step, deliberately separated from this migration so each change can be validated independently.
Trade-offs & pitfalls. One practical fallback if the chosen Rehost path hits a blocking issue (for example, the on-prem SQL version isn't supported by the target VM image, or licensing terms don't transfer cleanly) is to fall back to a backup/restore-based migration with a longer, explicitly-scheduled downtime window rather than trying to force a live-replication approach under time pressure; a slower but simpler migration path is preferable to an untested complex one when the whole point of the choice was minimizing change and risk.
Plan a migration from 50 self-managed Kubernetes clusters to a managed Kubernetes service (e.g., EKS/GKE/AKS) with zero downtime. Cover control plane migration, node pooling, network and CNI differences, data plane compatibility, cluster config drift, and a phased migration plan including testing.
Sample Answer
Direct answer: Migrating 50 self-managed Kubernetes clusters to a managed service with zero downtime is fundamentally a workload-relocation problem, not a single cutover event: migrate cluster-by-cluster (or in small batches), moving each cluster's workloads to a new managed cluster via a blue-green pattern at the CLUSTER level, and treat control-plane migration as entirely separate from data-plane/workload migration.
Structured elaboration. Control plane migration: since you're moving to a MANAGED Kubernetes service, the control plane itself isn't migrated in the traditional sense: a new managed cluster is provisioned fresh (with its own newly-managed control plane), and the migration is really about relocating WORKLOADS from the old self-managed cluster onto the new managed one, cluster-pair by cluster-pair. Node pooling: size and configure node pools on the new managed cluster to match (or intentionally improve upon) the old cluster's node characteristics, accounting for any differences in available instance types between the self-managed environment and the managed service's node offerings. Network and CNI differences: self-managed clusters often use a specific CNI (Container Network Interface, the plugin standard Kubernetes uses for pod networking) plugin (Calico, Flannel, etc.) whose network policies and IP allocation behavior may differ from the managed service's default or supported CNI options; any NetworkPolicy resources need to be validated for compatibility, not assumed to translate identically. Data plane compatibility: validate that workloads' assumptions about the underlying node OS, container runtime, and any node-level customizations (custom kernel modules, specific sysctls) are satisfied by the managed service's node images, since managed services often restrict node-level customization more than a self-managed cluster allows. Cluster config drift: 50 clusters accumulated independently very likely have config drift between them (different versions, different ad hoc customizations); migration is a natural forcing function to also standardize configuration, but that standardization effort needs to be scoped explicitly rather than silently expanding the migration's blast radius. Phased migration plan including testing: migrate workloads cluster-pair by cluster-pair using a blue-green pattern (new managed cluster stood up alongside the old, workloads deployed and validated on the new cluster, traffic/DNS cut over once healthy, old cluster decommissioned after a bake period), starting with the least critical or most standardized cluster as a pilot to validate the overall pattern before applying it at the remaining 49.
Worked example. Pilot: migrate the smallest, least business-critical of the 50 clusters first, using it to validate the CNI/NetworkPolicy translation, node-pool sizing, and the blue-green cutover mechanics end-to-end. Subsequent waves: batch the remaining 49 by similarity (clusters running similar workload types migrate using the now-validated pattern together), moving progressively larger batches as confidence grows, with each cluster's workloads validated healthy on the new managed cluster before that cluster's old counterpart is decommissioned.
Trade-offs & pitfalls. Treating all 50 clusters as identical and applying one migration runbook uniformly, without first confirming which clusters have accumulated meaningful config drift, risks the runbook working perfectly on the pilot cluster and then failing unexpectedly on cluster 23, which turns out to depend on a NetworkPolicy behavior or node customization the pilot never exercised.
Design a migration approach for stateful Kubernetes workloads (statefulsets, PVCs, databases) running on-prem to a managed Kubernetes service (EKS/GKE/AKS). Cover persistent-volume migration (CSI snapshots, storage replication, Velero), handling storage class differences, service IP and DNS changes, cluster networking, and how to test and validate stateful application behavior after migration.
Sample Answer
Direct answer: Migrating stateful Kubernetes workloads (StatefulSets, PVCs [Persistent Volume Claims], databases) on-prem to a managed service requires migrating the persistent data FIRST via storage-level tooling (CSI (Container Storage Interface, the standard Kubernetes uses to plug in storage systems) snapshots or storage replication), validating it lands correctly on the target's storage classes, then cutting the StatefulSet's control plane over, since the data-migration risk dominates and should be de-risked independently of the Kubernetes-object migration.
Structured elaboration. Persistent-volume migration: CSI snapshots (if both source and target support a compatible CSI snapshot mechanism) give a clean, storage-native way to move volume data; where CSI snapshot compatibility doesn't exist between source and target, storage replication at the block level or a tool like Velero (which handles both Kubernetes object backup AND, via plugins, volume snapshot data) provides an alternative path. Handling storage class differences: on-prem storage classes (often backed by a specific SAN/NAS technology) rarely map 1:1 to a managed Kubernetes service's storage classes (which are typically backed by the cloud provider's own block/file storage); this requires an explicit mapping decision per StatefulSet (which target storage class matches the performance/durability characteristics the workload needs) rather than assuming a default class is equivalent. Service IP and DNS changes: StatefulSet pods often have stable network identities that application logic (or a companion service like a database's own replication config) depends on; migrating to a new cluster changes these identities, so either the application/database config needs updating to the new naming scheme, or a compatibility layer (headless service DNS matching the old naming pattern -- a headless service is a Kubernetes Service with no single cluster IP, so DNS resolves directly to each pod's own stable address instead of load-balancing between them, which is what lets a naming scheme survive the move) needs to be constructed. Cluster networking: validate that whatever east-west traffic patterns the stateful workload depends on (e.g., a database's inter-node replication traffic) work correctly under the new cluster's CNI (Container Network Interface, the standard Kubernetes uses to plug in pod networking) / networking model, which may differ meaningfully from the on-prem setup. Testing and validating stateful application behavior after migration: beyond confirming the pods start and the volumes mount, validate the STATEFUL APPLICATION'S OWN health signals (a database showing all replicas caught up and healthy, not just "pod is Running"), and run an actual failover test post-migration (kill a pod, confirm the StatefulSet's ordered recovery behavior works correctly on the new platform, since subtle differences in the new cluster's node/storage reattachment timing can break assumptions the stateful application's operator or controller made).
Worked example. For a StatefulSet-managed database cluster: (1) take a CSI snapshot of each PVC, (2) restore the snapshots as new PVCs on the target cluster using a storage class chosen to match the source's I/O performance characteristics, (3) deploy the StatefulSet manifests on the target cluster pointed at the restored PVCs, (4) validate each database replica reports healthy and caught up via the database's OWN health/replication-status commands (not just kubectl pod status), (5) run a controlled pod-restart test to confirm ordered StatefulSet recovery behaves correctly, (6) cut application traffic over.
Trade-offs & pitfalls. Assuming the target's default storage class is a safe drop-in replacement for the source's storage, without explicitly comparing IOPS/throughput/durability characteristics, is a common way a stateful migration silently regresses performance; the storage-class mapping decision deserves the same rigor as the data-transfer method itself.
Tell me about a cloud migration you led or participated in. Specify the public cloud provider(s) used (AWS/Azure/GCP), the concrete services and patterns you chose for compute, storage, networking and managed databases, your role in architecture and deployment, and measurable results (for example: latency reduction, cost delta, availability improvement, deployment frequency). Include any follow-up training or certifications that supported your work.
Sample Answer
Direct answer: The strongest version of this story names the specific cloud provider and concrete services/patterns chosen (not a vague "we moved to the cloud"), explains the candidate's actual role in architecture and execution decisions, and closes with measurable, specific results rather than a general "it went well."
Structured elaboration. Public cloud provider(s) used: name it specifically (AWS/Azure/GCP), since a vague answer here is often an early signal to an interviewer that the rest of the story may also lack specificity. Concrete services and patterns for compute, storage, networking, and managed databases: name actual services for all four, not just the ones that come to mind first (networking in particular is easy to skip since it's less visible than compute or storage) (e.g., "we moved a fleet of on-prem VMs to EC2 behind an Application Load Balancer, provisioned a new VPC with public/private subnet segmentation mirroring our existing security zones and per-tier security groups, ran a temporary Site-to-Site VPN back to the on-prem data center specifically to carry replication traffic during the migration window, migrated the database to RDS PostgreSQL via DMS (Database Migration Service) with change-data-capture (CDC)-based replication for a near-zero-downtime cutover, and moved file storage to S3") rather than generic category names, since specificity here is what lets an interviewer probe deeper and distinguish real hands-on experience from a surface-level description. Role in architecture and deployment: be honest and specific about scope (did the candidate design the migration strategy, execute a specific piece of it, lead the team, or contribute as an individual engineer on a defined workstream); overstating scope tends to unravel under a good interviewer's follow-up questions about decisions the candidate claims to have made. Measurable results: latency reduction (with actual before/after numbers if remembered, even approximate), cost delta (a concrete percentage or dollar figure, understanding this may be approximate from memory but should still be a real number, not "it was cheaper"), availability improvement (a specific uptime or incident-rate change), deployment frequency (if relevant, how release cadence changed post-migration due to new CI/CD capability). Follow-up training or certifications: mentioning relevant certifications or continued learning shows the migration wasn't a one-off task but built lasting capability, which is a positive signal beyond the migration itself.
Worked example. A strong answer: "I was the lead engineer on migrating our order-processing service from on-prem VMware to AWS. We used EC2 with an ALB for the application tier, a new VPC with private subnets for the application and database tiers and a temporary Site-to-Site VPN back to our on-prem datacenter to carry DMS replication traffic securely during the migration window, RDS PostgreSQL with DMS-based CDC replication for the database (targeting near-zero downtime), and moved file storage to S3 with a dual-write period during transition. I owned the database migration and cutover plan specifically, while a colleague led the application-tier work. Post-migration, we measured a 30% reduction in p99 latency (mostly from moving off aging on-prem hardware to modern instance types), a roughly 20% reduction in infrastructure cost after right-sizing, and we went from monthly to weekly deploys once we had the new CI/CD pipeline in place. I got my AWS Solutions Architect Associate certification during the project, partly to make sure I understood the platform deeply enough to make good calls during cutover."
Preparing one story for several framings. The same underlying migration experience gets probed from several different angles across a real interview loop, and it is worth preparing one well-detailed story that can flex to answer each: sometimes the ask is this general "walk me through a migration" framing; sometimes it is narrower, "tell me about a time you had to convince skeptical stakeholders to adopt a particular migration approach," which wants the persuasion and technical-evaluation angle foregrounded instead of the end-to-end summary; and sometimes it is "tell me about a time priorities shifted mid-migration," which wants the adaptability and communication angle foregrounded. Rehearsing the same real project along all three angles, rather than having only one fixed narration of it, means a candidate isn't caught flat-footed when the interviewer's specific phrasing doesn't match the version they rehearsed.
Trade-offs & pitfalls. A common weak version of this answer stays at the category level ("we moved to managed services and it was faster and cheaper") without naming specific services, specific numbers, or a specific role; interviewers use exactly this kind of question to distinguish candidates who did hands-on migration work from those who were adjacent to a project without deep involvement, and specificity is the main signal that separates the two.
Describe the primary methods to migrate relational databases from on-prem to cloud: offline backup/restore, storage replication and lift, logical replication using CDC, vendor-specific migration services, and homogeneous vs heterogeneous migration approaches. For each method outline key prerequisites, typical downtime characteristics, schema conversion considerations, and validation techniques you would use to ensure data integrity post-migration.
Sample Answer
Direct answer: The main methods are offline backup/restore, storage-level replication and lift, logical replication via change-data-capture (CDC), and vendor-specific migration services, spanning a spectrum from simplest/highest-downtime to most complex/near-zero-downtime; the choice also depends on whether the migration is homogeneous (same database engine, e.g., MySQL to MySQL) or heterogeneous (different engines, e.g., Oracle to PostgreSQL, which additionally requires schema and query translation).
Structured elaboration. Offline backup/restore: take a full backup, transfer it, restore on the target; prerequisites are minimal (just backup/restore tooling), downtime equals transfer-plus-restore time (can be substantial for large databases), schema conversion is only needed for heterogeneous moves, and validation is a straightforward row-count/checksum comparison post-restore. Storage replication and lift: replicate at the storage/volume layer (e.g., a SAN (Storage Area Network) snapshot or block-level replication) rather than the database layer; prerequisites include storage-layer access and compatible replication tooling, downtime is lower than backup/restore for very large databases since replication can run continuously up to a final short sync, schema conversion doesn't apply (it's a byte-for-byte copy, so only viable for homogeneous or same-storage-format migrations), validation focuses on confirming the copy is bit-identical and the database starts cleanly on the target storage. Logical replication using CDC: capture and replay changes at the row/transaction level (e.g., reading the database's write-ahead log or binlog -- the engine's own running record of every committed change, which a replication tool reads and replays elsewhere); prerequisites are CDC tooling with the right permissions and a full initial sync mechanism, downtime can approach near-zero (cutover window is just the final lag-drain), works for both homogeneous and heterogeneous migrations (heterogeneous CDC tools can translate row-level changes across engines), validation requires ongoing reconciliation (row counts, checksums) since data is changing throughout the migration window, not just at one snapshot point. Vendor-specific migration services (e.g., a managed database-migration service): typically wrap CDC or logical replication with a managed UI/orchestration layer; prerequisites are provider account access and IAM permissions, downtime and validation characteristics mirror the underlying CDC approach, with the service handling much of the schema-conversion tooling for heterogeneous moves.
Worked example. For a mission-critical OLTP (online transaction processing) database that can tolerate at most a 10-minute maintenance window: CDC-based logical replication is the only method on this list that reliably hits that target, since offline backup/restore and even most storage-replication approaches for a database of meaningful size take longer than 10 minutes to complete a final sync. For a reporting/analytics database that can tolerate an overnight maintenance window, offline backup/restore is simpler to implement and validate, and the added complexity of CDC tooling isn't justified by the downtime tolerance available.
Trade-offs & pitfalls. Heterogeneous migrations are frequently underestimated: teams plan around the DATA transfer method but under-budget the SCHEMA and QUERY translation effort (stored procedures, proprietary SQL dialects, data-type mismatches), which is often the larger and riskier part of a cross-engine migration.
Unlock Full Question Bank
Get access to all Cloud Migration Strategy and Execution interview questions and detailed answers.
Sign in to ContinueJoin thousands of developers preparing for their dream job.