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.
You need to migrate 10 PB of historical data and live ETL from a legacy on-prem Hadoop cluster to a cloud lakehouse (S3 + Delta Lake) with minimal downtime and no data loss. Prepare a detailed migration strategy: initial bulk transfer approach, live-sync strategy (CDC), validation checks, cutover plan, incremental testing phases, cost estimate, and mitigation for unexpected data drift or format incompatibilities.
Sample Answer
Direct answer: For 10PB of historical data and live ETL with zero data loss and minimal downtime, split the problem in two: bulk-transfer the HISTORICAL data using a physical or high-throughput parallel transfer method on its own timeline (it's static, so there's no downtime pressure on it), while migrating the LIVE ETL pipeline via change-data-capture (CDC)-based continuous sync with a short final cutover, and only cut over application traffic once both are verified caught up and consistent.
Structured elaboration. Initial bulk transfer approach: at 10PB, pure network transfer is almost always too slow and too costly (egress and time) compared to a physical transfer appliance (or, if network capacity genuinely supports it, a scheduled high-throughput parallel-transfer job run over weeks); this decision is a straightforward cost/time trade-off calculation once the org's actual available bandwidth is known. Live-sync strategy (CDC): once bulk transfer of the historical baseline completes, start CDC replication from the point the bulk transfer's snapshot was taken, so the target catches up to "now" and then stays current; this requires the source system to retain enough change-log history to bridge the gap between when the bulk snapshot was taken and when CDC starts consuming from it. Validation checks: row/record-count and checksum comparison at the PARTITION level (not the whole 10PB as one unit, which is both slow and gives poor failure localization), so a discrepancy can be traced to a specific partition/time-range rather than triggering a full re-transfer. Cutover plan: once CDC lag reaches near-zero and partition-level validation passes across the full dataset, pause the live ETL write path briefly, drain final lag, do one last validation pass, and cut the application/ETL over to the new lakehouse. Incremental testing phases: validate correctness incrementally as bulk-transfer batches complete (don't wait for all 10PB before testing anything), so schema or format incompatibilities are caught on batch 3 rather than batch 300. Cost estimate: physical appliance/transfer cost plus cloud storage cost for the target (accounting for storage-class strategy: cold-tier for genuinely historical/rarely-accessed data, not uniformly hot storage for all 10PB) plus the engineering cost of the CDC pipeline and validation tooling. Mitigation for data drift/format incompatibilities: run a schema-compatibility check as an early, cheap gate before committing to the full bulk transfer (validate against a representative sample first), and build the CDC pipeline to explicitly reject and quarantine (not silently drop or silently coerce) any record that doesn't match the expected schema, surfacing it for manual review. Metadata/catalog migration: for a Hadoop-based source, the Hive metastore (the catalog mapping table/partition names to their actual file locations and schemas) has to migrate alongside the raw data, not as an afterthought; a lakehouse target needs that same table-to-file mapping rebuilt or imported, or every downstream query breaks even though the underlying files transferred correctly. Source-specific tuning: if the source is a petabyte-scale system like Oracle Exadata, the target lakehouse layout should be designed around the ACCESS PATTERNS the source's own indexing and partitioning reveal (which columns Exadata's indexes were built on, and which partitioning scheme kept its hot queries fast) rather than a generic flat migration, since those patterns are the cheapest available evidence for how to lay out partitioning and file sizing in the new lakehouse. Business impact: track and report the business consequence of the migration in progress, not just its technical status, e.g. the specific reports or SLAs that depend on data freshness during the transition, so stakeholders see a business-relevant view (data as fresh as before vs. degraded) rather than only "batch N of 300 complete."
Worked example. A pragmatic 3-month incremental phasing: month 1, transfer and validate the metastore/catalog mapping plus the coldest, lowest-business-risk partitions first (proves the pipeline and the Hive-metastore rebuild work before anything business-critical rides on it); month 2, transfer the bulk of the remaining historical data in parallel batches by partition/time-range, each validated via checksum before being marked complete, while CDC replication starts catching up live ETL changes since the month-1 baseline snapshot; month 3, close the remaining gap, run the final partition-level validation pass across the full 10PB, and execute the brief write-pause cutover. Concretely, in calendar terms: weeks 1-8 cover the bulk historical transfer described above, week 9 onward is CDC catch-up running in parallel with the tail of the transfer, and the final validation-and-cutover window lands in month 3 once CDC lag is confirmed near-zero.
Trade-offs & pitfalls. Attempting to network-transfer all 10PB directly without first modeling the actual achievable throughput against available bandwidth is a common and expensive mistake; the appliance-vs-network decision should be made from a real bandwidth-and-cost calculation, not a default assumption that network transfer is always simpler.
Describe a quantitative effort-and-risk estimation method for migration tasks. Propose a scoring model with at least five factors (technical complexity, downtime risk, data volume, compliance, team familiarity), explain scoring range and how you'd convert scores to estimated effort and priority.
Sample Answer
Direct answer: A quantitative effort-and-risk scoring model for migration tasks should combine at least technical complexity, downtime risk, data volume, compliance sensitivity, and team familiarity into a weighted score, converting the score into both an effort estimate (via a calibrated mapping, not a raw formula) and a priority ranking, since these two outputs (effort and priority) shouldn't automatically move together.
Structured elaboration. Five factors: technical complexity (how many moving parts, how much custom/undocumented logic), downtime risk (how sensitive is this workload to any service interruption), data volume (raw size, which affects transfer time and validation effort), compliance (does this workload carry regulatory obligations that add process overhead beyond the pure technical work), team familiarity (has the team migrated something like this before, or is this genuinely novel territory requiring a learning curve). Scoring range: a simple 1-5 scale per factor is usually sufficient granularity (finer scales tend to imply false precision that the underlying judgment doesn't actually support). Converting scores to estimated effort: rather than a raw formula (summing or multiplying the five scores directly into an effort number, which tends to produce numbers that FEEL precise but aren't grounded in anything), calibrate the mapping against a small set of ALREADY-COMPLETED migrations (if any exist, even from a pilot wave): score those retrospectively, compare to their actual measured effort, and use that calibration to inform how a new workload's score maps to an effort estimate, rather than trusting an uncalibrated formula from day one. Converting scores to priority: priority isn't simply "do the highest-risk items first" or "do the highest-effort items first"; it should combine the RISK score with business value (a factor from OUTSIDE this specific model, typically owned by the broader wave-prioritization framework) so effort/risk scoring informs but doesn't solely determine sequencing.
Worked example. After a pilot wave of 5 migrations, retrospective scoring shows the model's raw, unweighted formula (plain sum of the five 1-5 scores) correlated only loosely with actual measured migration effort (in person-days); recalibrating by weighting compliance and team-familiarity 1.5x (since the pilot data showed those two factors drove effort overruns more than the model initially assumed, while the other three factors weighted plain effort reasonably well on their own) produces a materially better fit. Tracing one concrete task through the recalibrated model end to end: "migrate the customer order-history database (contains PII) to a new managed service" scores complexity=3, downtime risk=4, data volume=2, compliance=5, team familiarity=2 (the team hasn't done this specific migration before). Weighted score = complexity(3x1) + downtime(4x1) + volume(2x1) + compliance(5x1.5) + familiarity(2x1.5) = 3+4+2+7.5+3 = 19.5 out of a possible 30. The pilot's calibration table (built by scoring the 5 completed migrations the same way and comparing to their real logged effort) maps weighted-score bands to effort: 0-10 -> ~5 person-days, 10-15 -> ~10 days, 15-20 -> ~20 days, 20-25 -> ~35 days, 25-30 -> ~60 days (the mapping is deliberately non-linear, since the pilot data showed compliance-heavy tasks blow up disproportionately rather than scaling smoothly). A weighted score of 19.5 lands in the 15-20 band, giving an estimated effort of roughly 20 person-days. For priority: this task also carries a HIGH business-value rating from the separate wave-prioritization framework, so combining that with its risk/effort score places it in the earliest priority tier (P1) despite the real effort cost, rather than deferring it the way a pure effort-minimization sequencing would. This produces a materially better fit for the remaining, larger set of migrations than the unweighted formula did, and the calibration table itself gets revisited with periodic re-calibration as more real data accumulates.
Trade-offs & pitfalls. Trusting an uncalibrated scoring formula's OUTPUT NUMBER as if it were a precise estimate ("this migration will take exactly 14 person-days because it scored 14") rather than treating it as a RELATIVE ranking tool refined by real data over time is a common overreach; the model is much more reliable as "this is roughly twice as risky/effortful as that one" than as an absolute prediction, especially before it's been calibrated against any real completed migrations.
Plan a migration of Lyft's analytics warehouse from Redshift to Snowflake with minimal downtime. Requirements: ensure correctness of reporting tables, keep streaming ingestion active during migration, provide validation queries, and detail a cutover and rollback plan. Discuss CDC or dual-write approaches and data validation strategies.
Sample Answer
Direct answer: Migrating an analytics warehouse from Redshift to Snowflake while keeping streaming ingestion active requires running both warehouses in parallel with change-data-capture (CDC) / dual-write into Snowflake, validating query-result parity on the reporting tables before any cutover, and treating streaming ingestion as its own migration sub-problem (repoint the stream's target once, not incrementally).
Structured elaboration. Correctness of reporting tables: identify the specific tables that feed reporting (usually a small, well-known subset of the full warehouse) and prioritize validating THOSE first and most rigorously, since reporting correctness is the stated hard requirement, not full-warehouse parity from day one. Keeping streaming ingestion active during migration: rather than pausing the stream, fan it out to write to BOTH Redshift and Snowflake during the transition (dual-write at the ingestion layer, which is more tractable here than dual-write at the application layer because there's a single, well-understood ingestion point rather than many application write paths), or alternatively replicate Redshift's ingested data into Snowflake via CDC/ETL if the ingestion pipeline can't easily be duplicated. Validation queries: write parity-check queries that run the SAME aggregation logic against both warehouses and diff the results (row counts alone aren't sufficient for a data-warehouse migration; the actual reported NUMBERS have to match, since a schema or type-conversion bug can silently shift an aggregate while preserving row counts). Cutover and rollback plan: once dual-write/CDC has run long enough that parity checks are consistently clean across multiple reporting cycles (not just once), cut reporting queries over to Snowflake first (lower risk, easy to revert by pointing dashboards back at Redshift), THEN cut the ingestion stream over to Snowflake-only once reporting has been stable on the new warehouse for a defined bake period. CDC or dual-write approaches: dual-write at ingestion is simpler to validate (both warehouses see the same events at write time) but doubles ingestion infrastructure cost during the transition; CDC/ETL replication from Redshift to Snowflake avoids touching the ingestion pipeline but adds replication lag that has to be accounted for in parity checks.
Worked example. Weeks 1-2: stand up Snowflake, backfill historical data, validate schema/type conversions against a sample. Weeks 3-6: dual-write new streaming events to both warehouses, run daily parity checks on the reporting-critical tables (aggregate revenue, active-user counts, etc.), fixing any type-conversion or timezone-handling discrepancies found (a common source of subtle mismatches between warehouse engines). Week 7: cut reporting dashboards over to Snowflake, keep Redshift as the ingestion target of record for one more week as a safety net. Week 8: cut ingestion to Snowflake-only, decommission Redshift after a further bake period.
Trade-offs & pitfalls. The most common failure mode in a cross-engine warehouse migration is validating SCHEMA correctness (columns match, types are compatible) but not validating COMPUTATIONAL correctness (does SUM() over a decimal column produce the identical value given the two engines' different rounding/precision behavior); the parity checks above are deliberately built around comparing actual reported numbers, not just structural equivalence.
Create a high-level cost estimation and sensitivity model for migrating 5 PB of storage plus associated compute workloads to a public cloud. Include assumptions for storage tiering (hot/warm/cold), expected ingress/egress patterns and costs, data transfer acceleration and appliance costs, compute sizing and licensing, expected growth rate, and sensitivity to changes in egress and storage-class pricing.
Sample Answer
Direct answer: Build the cost model as separate line items for one-time transfer cost and ongoing post-migration cost, each with an explicit sensitivity range (not a single point estimate), since a 5PB migration's dominant cost drivers (egress, transfer method, and post-migration storage tiering) each have wide enough uncertainty that a single number would be misleading.
Structured elaboration. Storage tiering assumptions: split the 5PB by access pattern (hot: actively queried, warm: occasionally accessed, cold: archival/compliance-retention-only), since storage-class pricing typically varies by an order of magnitude between hot and cold tiers, and getting the hot/warm/cold split roughly right matters far more to the total estimate than precision on any single tier's unit price. Ingress/egress patterns and costs: ingress (data coming IN to the cloud) is typically free or low-cost on major providers; egress (data leaving, including the one-time migration-out cost if data is being moved FROM another cloud, or ongoing egress for any workload that serves data back out) is usually the dominant and most-underestimated cost component, so the model needs an explicit egress-volume assumption with a stated confidence range. Data-transfer acceleration/appliance costs: compare a physical transfer appliance's flat cost against network-transfer cost at the org's actual available bandwidth; at 5PB, this comparison typically favors an appliance unless the org has substantial dedicated bandwidth already provisioned. Compute sizing and licensing: separate from the storage cost entirely, model the compute needed to actually USE the migrated data (query engines, processing clusters), including any licensing costs that don't disappear just because the data moved (some legacy software licenses are tied to deployment model, not just data location). Expected growth rate: the 5PB figure is a snapshot; the ongoing cost model needs a growth assumption (e.g., X% per quarter) since post-migration storage cost compounds. Sensitivity to egress and storage-class pricing changes: run the model at low/base/high assumptions for both egress volume and storage-class pricing, since these are the two inputs most likely to be wrong in the initial estimate and most likely to move the total by a large margin.
Worked example. At 5PB with an assumed 60% cold / 30% warm / 10% hot split: cold-tier storage cost is typically an order of magnitude cheaper per GB than hot, so the split assumption alone can swing the ongoing monthly storage estimate by 3-5x depending on whether the org's real access pattern is closer to 60/30/10 or, say, 20/30/50. A sensitivity table showing total cost at three different hot/cold splits (rather than one blended number) gives the actual decision-makers a much more honest picture of the range they're committing to.
Trade-offs & pitfalls. Presenting a single point-estimate total cost for a 5PB migration, rather than a range with the dominant sensitivity drivers called out explicitly, sets the project up to look like it's "over budget" the moment reality (an inevitably-imperfect initial hot/cold split, or higher-than-assumed egress) diverges even slightly from the point estimate; a sensitivity-based model manages that expectation upfront.
Given three migration options for a core customer-relationship module (refactor to cloud-native services, repurchase a SaaS CRM, or rehost), perform a concise cost-benefit analysis. State assumptions about migration cost, annual maintenance, expected business benefit, and time-to-value, then recommend an option.
Sample Answer
Direct answer: Given roughly comparable annual maintenance and business benefit, repurchasing a mature SaaS CRM usually wins on time-to-value and lowest ongoing engineering burden; refactoring to cloud-native wins only when the CRM module has genuinely differentiating, hard-to-replicate business logic that a generic SaaS product can't express; rehosting is rarely the final answer for a core CRM but can be the fastest stopgap.
Structured elaboration
Assumptions to state up front, per option. Refactor to cloud-native: migration cost is the highest of the three (a full redesign of the CRM's data model and business logic), annual maintenance drops significantly post-refactor (managed infrastructure, modern codebase), business benefit is the app can be tailored exactly to the org's sales process, time-to-value is the longest (a multi-quarter to multi-year engineering effort). Repurchase (SaaS CRM): migration cost is moderate (mostly data migration and process re-mapping, not code), annual maintenance becomes a subscription fee (predictable, but often larger in aggregate over years than infrastructure cost alone, since it's also paying for the vendor's product development), business benefit is fastest access to modern CRM capabilities (built-in email/calendar integration, mobile apps, AI features) without engineering investment, time-to-value is fastest of the three. Rehost: migration cost is lowest, annual maintenance stays roughly where it is today (no architectural improvement), business benefit is minimal (the org keeps whatever limitations the current CRM has), time-to-value is fast but doesn't solve the underlying problem motivating the migration in the first place.
Recommendation framework. The deciding question is: does this org's sales process depend on CUSTOM logic a generic SaaS CRM can't express (a genuinely unusual approval workflow, a pricing model no CRM vendor supports out of the box, deep integration with a proprietary system)? If no (the common case for most orgs), Repurchase wins: sales/CRM is rarely the place where custom-built software is a competitive advantage, and the fastest path to modern CRM capability with the lowest ongoing engineering burden is almost always a mature SaaS product. If yes, and the custom logic is genuinely central to how the business wins deals, Refactor is worth the investment, because forcing that logic into a SaaS product's customization limits often costs more in workarounds over time than building it properly once.
Worked example. A mid-size B2B company with a standard sales-qualification and quoting process: Repurchase (say, a Salesforce or HubSpot-class product) typically costs $50-150/user/month depending on tier, versus an estimated 12-18 months and $600k-1.2M to refactor an equivalent system in-house, for a feature set the SaaS product already provides. Unless the company's pricing/quoting logic is genuinely unusual (multi-party revenue-share deals, highly regulated approval chains no CRM vendor supports), the SaaS repurchase pays for itself in avoided engineering cost within the first year even before counting the faster time-to-value.
Trade-offs & pitfalls. The most common mistake is under-costing the DATA MIGRATION and PROCESS RE-MAPPING effort for a SaaS repurchase: teams price the subscription but not the effort to map custom fields, workflows, and integrations into the new product's model, which can be a genuinely large hidden cost. The second mistake is choosing Refactor out of a belief that the org's process is more unique than it actually is; most sales processes fit within what mature CRM platforms already support, and the custom-logic bar for justifying a refactor should be set high.
Unlock Full Question Bank
Get access to all 44 Cloud Migration Strategy and Execution interview questions and detailed answers.
Sign in to ContinueJoin thousands of developers preparing for their dream job.