Requirements & scope:
- Migrate a single on‑prem OLTP relational DB (primary + replica) to cloud managed RDBMS. Preserve performance SLAs (99.9% p99 latency), allow 2× growth for 24 months, enable HA and backups.
Measure current workload (data-driven):
- Collect 2–4 weeks of metrics during representative load:
- CPU utilization (%), vCPU/core counts, system vs user
- Memory usage (used, cache, working set)
- Disk metrics: avg/peak IOPS (read/write), throughput MB/s, queue depth, latency (ms)
- Storage size: data, indexes, WAL/redo, growth rate
- Connections, transactions/sec, queries/sec, p99 query latency
- Backup/restore I/O, snapshot sizes
Tools: PMM, perf, sar/iostat/blktrace, Windows PerfMon, CloudWatch agents, APM traces, slow query logs.
Create baseline and peaks:
- Compute 95th and 99th percentiles for each metric. Separate steady-state vs peak (batch jobs, backups).
Sizing model:
- vCPU = ceil( observed peak CPU% / target_utilization_per_vCPU ). E.g., if peak 80% on 8 cores and target util is 60% → required vCPU = ceil(8 * 0.8 / 0.6) = 11 → pick 12 vCPUs.
- Memory = max( working_set + buffer, observed peak_mem ) * safety_factor (1.2–1.5). Include OS and page cache.
- IOPS/Throughput = provision for 99th percentile + buffer. For provisioned IOPS services: IOPS_required = ceil(p99_IOPS * growth_factor). For burstable storage, ensure sustained throughput fits limits.
- Storage = current_data + indexes + WAL + retention + monthly_growth*months + snapshot_overhead. Use compression factor if supported.
- HA & replicas: multiply compute/storage by number of nodes; account for read-replicas for read scaling.
- Network: account for inter-AZ traffic (replication), backup egress.
Cost model:
- Line items: instance (vCPU+memory), storage (GB-month), provisioned IOPS (IOPS-month), backup storage, data transfer, licensing (BYOL or paid), monitoring, support.
- Example formula:
MonthlyCost = NumInstances * InstancePrice + StorageGB * $/GB + ProvisionedIOPS * $/IOPS + BackupGB*$ + DataTransferGB*$ + Licensing
- Run scenarios: conservative (no autoscale), dynamic (autoscaling read replicas), reserved vs on‑demand (1yr/3yr savings).
Validation & testing:
- Load test on cloud-sized environment (use replayed production workload): measure p99 latency, CPU, I/O. Increase sizing iteratively.
- Pilot cutover: read-only replica sync, validate queries, then promote.
Risks & mitigations:
- Underprovisioned IOPS → use burstable or scale-up storage, use caching (Redis), optimize queries and indexing.
- Cost surprises → use monitoring, set budgets and alerts, prefer autoscaling and reserved instances where appropriate.
- Latency-sensitive workloads → place DB and app in same AZ, use higher IOPS tiers.
Deliverable: spreadsheet with metric inputs, formulas, three sizing profiles (pilot, production, production+growth), and monthly/yearly cost projections plus runbook for performance validation.