{"from":"Node.js + MongoDB + Vercel","to":"Go + PostgreSQL + Kubernetes","feasibility":{"effort_engineer_weeks":8,"cost_dollars":50000,"timeline_weeks":10,"downtime_hours":4,"risk_level":"high"},"cost_breakdown":{"engineering_salaries":40000,// 8 weeks × 4 engineers"infrastructure_setup":3000,// Kubernetes cluster setup"testing_and_qa":2000,// Migration testing"consulting_fees":5000// Go/Kubernetes specialists},"timeline":{"week_1_2":"Parallel: Start building Go services, set up Kubernetes","week_3_4":"Migrate first microservice (low-risk service)","week_5_6":"Migrate core services (with fallback to old system)","week_7_8":"Full cutover, run both systems in parallel","week_9_10":"Monitor, optimize, fix issues"},"payback_period":8,// months until savings offset cost"roi":{"monthly_savings":2000,// Go scales cheaper than Node at their scale"annual_savings":24000,"breakeven_months":25// 50k / 2k per month},"risk_assessment":{"data_loss_risk":0.02,// 2% chance of data loss"downtime_risk":0.05,// 5% chance of >4hr unplanned downtime"budget_overrun_risk":0.25,// 25% chance of going 25% over budget"timeline_overrun_risk":0.4// 40% chance of taking 12+ weeks},"mitigation_strategies":["Run both systems in parallel for 2 weeks (verify data consistency)","Implement circuit breakers (if Go service slow, fall back to Node)","Canary deployment (route 5% traffic to Go, verify works)","Comprehensive test suite (validate data integrity)","On-call rotation (engineer available if issues arise)"],"can_do_gradual_migration":true,"gradual_path":["Week 1-2: Build Go API for new features only","Week 3-4: Route new feature requests to Go, old features to Node","Week 5-6: Migrate historical data incrementally (background job)","Week 7-8: Route more features to Go (30% traffic)","Week 9: Route majority to Go (70% traffic)","Week 10+: Retire old Node system once fully stable"],"recommendation":"Worth it only if scaling to >1M DAU. Otherwise cost outweighs savings."}
1. Is the migration forced?
a) Yes (old tech no longer supported): DO IT
b) No (voluntary): go to step 2
2. How much will we save annually?
a) <$10k/year: Don't migrate (not worth effort)
b) $10-50k/year: Marginal (do if team capacity allows)
c) $50k+/year: Worth investigating
3. What's the payback period?
a) <12 months: ✅ DO IT (quick ROI)
b) 12-24 months: ⚠️ MAYBE (reasonable if business stable)
c) >24 months: ❌ DON'T (too long to justify)
4. Do we have team capacity?
a) Dedicated team (can pause feature work): ✅ Good
b) Shared capacity (features paused 2 months): ⚠️ Okay
c) No capacity (features continue): ❌ Too risky
5. Can we do gradual migration?
a) Yes (architecture supports parallel): ✅ Much safer
b) No (big bang required): ⚠️ Higher risk
→ Decision:
Forced migration OR (savings > $50k AND payback < 18 months AND team capacity available)
→ DO IT
Anything else: Wait (improve ROI or find different problem to solve)
Real-World Migration Examples
Example 1: Dropbox (2010-2012)
From: Python → Python + Rust (for file syncing) Cost: Estimated $5-10M over 2 years Payoff: 40% reduction in sync latency, better battery life ROI: Millions per month (core product improvement) Lesson: Strategic migrations (improve product) have higher ROI than cost migrations
Example 2: Heroku to AWS
From: Heroku (managed) → AWS (self-managed) Cost: $100k over 3 months (migration + consulting) Savings: $500k/year (self-managing cheaper than Heroku premium) Payback: 2.4 months ✅ (very quick ROI) Timeline: 3 months (longer than estimated due to DevOps learning curve) Lesson: Migrations from expensive managed → cheap self-managed always worth it
Example 3: Company Still Running Python 2.7 (2023)
Problem: Python 2 end-of-life (no security patches) Migration to: Python 3 Status: Still not done! (4 years overdue) Cost: Estimated $1-2M to do now (would have been $100k in 2018) Lesson: Don't delay forced migrations (cost grows exponentially)
Usage in Commands
In /architect:recommend-stack
// After recommending Go option:
if user_concerned_about_switching_later:
simulate_swap("Node.js", "Go")
show: "If you scale to 1M DAU and want Go, it costs $50k and 10 weeks"
help user: "Is Node.js cheaper for your growth path?"
In /architect:blueprint-variants
// For each variant:
if switching_cost_significant:
add_to_report: "Switching from baseline to this option later costs $X"
help_user: "Choose baseline now to keep switching options open"
New command: /architect:simulate-migration
/architect:simulate-migration --from node --to go
→ Estimates cost, timeline, risk, ROI of migration
Related Skills
constraint-solver/ — picks initial stack (reduces need to migrate)
stack-compatibility/ — helps pick compatible stacks (easier to migrate between)