{ "type": "service", "pattern": "strangler_fig", "source": "Legacy User Service (Java Spring Boot 2.x)", "target": "New User Service (Node.js + TypeScript)", "description": "Migrate legacy user management service to modern microservices architecture", "constraints": { "max_downtime_minutes": 0, "data_volume_gb": 50, "dependencies": [ "payment_service", "order_service", "notification_service", "analytics_service", "mobile_app_v1", "mobile_app_v2", "web_frontend", "admin_dashboard" ], "compliance_requirements": [ "PCI_DSS", "GDPR" ], "special_requirements": [ "api_backward_compatibility", "session_continuity", "rate_limit_preservation" ] }, "service_details": { "legacy_service": { "endpoints": [ "GET /api/v1/users/{id}", "POST /api/v1/users", "PUT /api/v1/users/{id}", "DELETE /api/v1/users/{id}", "GET /api/v1/users/{id}/profile", "PUT /api/v1/users/{id}/profile", "POST /api/v1/users/{id}/verify-email", "POST /api/v1/users/login", "POST /api/v1/users/logout" ], "current_load": { "requests_per_second": 850, "peak_requests_per_second": 2000, "average_response_time_ms": 120, "p95_response_time_ms": 300 }, "infrastructure": { "instances": 4, "cpu_cores_per_instance": 4, "memory_gb_per_instance": 8, "load_balancer": "AWS ELB Classic" } }, "new_service": { "endpoints": [ "GET /api/v2/users/{id}", "POST /api/v2/users", "PUT /api/v2/users/{id}", "DELETE /api/v2/users/{id}", "GET /api/v2/users/{id}/profile", "PUT /api/v2/users/{id}/profile", "POST /api/v2/users/{id}/verify-email", "POST /api/v2/users/{id}/verify-phone", "POST /api/v2/auth/login", "POST /api/v2/auth/logout", "POST /api/v2/auth/refresh" ], "target_performance": { "requests_per_second": 1500, "peak_requests_per_second": 3000, "average_response_time_ms": 80, "p95_response_time_ms": 200 }, "infrastructure": { "container_platform": "Kubernetes", "initial_replicas": 3, "max_replicas": 10, "cpu_request_millicores": 500, "cpu_limit_millicores": 1000, "memory_request_mb": 512, "memory_limit_mb": 1024, "load_balancer": "AWS ALB" } } }, "migration_phases": [ { "phase": "preparation", "description": "Deploy new service and configure routing", "estimated_duration_hours": 8 }, { "phase": "intercept", "description": "Configure API gateway to route to new service", "estimated_duration_hours": 2 }, { "phase": "gradual_migration", "description": "Gradually increase traffic to new service", "estimated_duration_hours": 48 }, { "phase": "validation", "description": "Validate new service performance and functionality", "estimated_duration_hours": 24 }, { "phase": "decommission", "description": "Remove legacy service after validation", "estimated_duration_hours": 4 } ], "feature_flags": [ { "name": "enable_new_user_service", "description": "Route user service requests to new implementation", "initial_percentage": 5, "rollout_schedule": [ {"percentage": 5, "duration_hours": 24}, {"percentage": 25, "duration_hours": 24}, {"percentage": 50, "duration_hours": 24}, {"percentage": 100, "duration_hours": 0} ] }, { "name": "enable_new_auth_endpoints", "description": "Enable new authentication endpoints", "initial_percentage": 0, "rollout_schedule": [ {"percentage": 10, "duration_hours": 12}, {"percentage": 50, "duration_hours": 12}, {"percentage": 100, "duration_hours": 0} ] } ], "monitoring": { "critical_metrics": [ "request_rate", "error_rate", "response_time_p95", "response_time_p99", "cpu_utilization", "memory_utilization", "database_connection_pool" ], "alert_thresholds": { "error_rate": 0.05, "response_time_p95": 250, "cpu_utilization": 0.80, "memory_utilization": 0.85 } }, "rollback_triggers": [ { "metric": "error_rate", "threshold": 0.10, "duration_minutes": 5, "action": "automatic_rollback" }, { "metric": "response_time_p95", "threshold": 500, "duration_minutes": 10, "action": "alert_team" }, { "metric": "cpu_utilization", "threshold": 0.95, "duration_minutes": 5, "action": "scale_up" } ] }