This thing is basically eight questions stapled together and they expect you to connect them into a coherent design, not just rattle off each part separately.
Start by clarifying requirements and constraints, then walk through the migration in phases: analysis, dual-write, backfill, validation, cutover, and rollback. Emphasize DynamoDB data modeling (access patterns, partition/sort keys, GSIs) and how to handle ongoing writes with change data capture. Conclude with monitoring and rollback strategies to ensure minimal downtime.
Pro tip: Highlight the importance of idempotent writes and a rollback plan that includes a reverse migration path; this shows you think about failure modes and business continuity, which is critical for eBay-scale systems.
Examine the relational schema, identify entities, relationships, and query patterns. Determine which tables need migration and how they are accessed by the application.
Map relational entities to DynamoDB tables using access patterns. Choose partition and sort keys, design GSIs/LSIs, and consider denormalization and single-table design where appropriate.
Set up change data capture (CDC) from the relational database to capture ongoing writes and apply them to DynamoDB. Perform historical backfill in batches, ensuring idempotency and handling conflicts.
Run continuous data validation comparing source and target. Once consistent, gradually shift read/write traffic to DynamoDB using feature flags or canary deployments, monitoring for errors.
Implement comprehensive monitoring for latency, errors, and data consistency. Have a rollback plan to revert to the relational database if issues arise, including reversing dual-writes.
AI-generated suggestions, not part of the candidate's original notes. May be inaccurate — verify before relying on them.