feat(Production): Complete production deployment infrastructure

- Add comprehensive health check system with multiple endpoints
- Add Prometheus metrics endpoint
- Add production logging configurations (5 strategies)
- Add complete deployment documentation suite:
  * QUICKSTART.md - 30-minute deployment guide
  * DEPLOYMENT_CHECKLIST.md - Printable verification checklist
  * DEPLOYMENT_WORKFLOW.md - Complete deployment lifecycle
  * PRODUCTION_DEPLOYMENT.md - Comprehensive technical reference
  * production-logging.md - Logging configuration guide
  * ANSIBLE_DEPLOYMENT.md - Infrastructure as Code automation
  * README.md - Navigation hub
  * DEPLOYMENT_SUMMARY.md - Executive summary
- Add deployment scripts and automation
- Add DEPLOYMENT_PLAN.md - Concrete plan for immediate deployment
- Update README with production-ready features

All production infrastructure is now complete and ready for deployment.
This commit is contained in:
2025-10-25 19:18:37 +02:00
parent caa85db796
commit fc3d7e6357
83016 changed files with 378904 additions and 20919 deletions

View File

@@ -227,7 +227,15 @@ final readonly class MigrationRunner
}
/**
* Rollback migrations
* Rollback migrations (only SafelyReversible migrations)
*
* This method will ONLY rollback migrations that implement the SafelyReversible interface,
* ensuring no data loss occurs during rollback operations.
*
* @param MigrationCollection $migrations Available migrations
* @param int $steps Number of migrations to rollback
* @return array<Migration> Successfully rolled back migrations
* @throws FrameworkException If attempting to rollback unsafe migration
*/
public function rollback(MigrationCollection $migrations, int $steps = 1): array
{
@@ -258,6 +266,28 @@ final readonly class MigrationRunner
continue;
}
// CRITICAL SAFETY CHECK: Ensure migration supports safe rollback
if (! $migration instanceof SafelyReversible) {
throw FrameworkException::create(
ErrorCode::DB_MIGRATION_NOT_REVERSIBLE,
"Migration {$version} does not support safe rollback"
)->withContext(
ExceptionContext::forOperation('migration.rollback', 'MigrationRunner')
->withData([
'migration_version' => $version,
'migration_class' => get_class($migration),
'migration_description' => $migration->getDescription(),
'requested_rollback_steps' => $steps,
'current_position' => $currentPosition,
])
->withMetadata([
'reason' => 'Migration does not implement SafelyReversible interface',
'recommendation' => 'Create a new forward migration to undo the changes instead of rolling back',
'safe_rollback_guide' => 'See SafelyReversible interface documentation for guidelines',
])
);
}
try {
// Validate rollback safety
$this->validator->validateRollbackSafety($migration, $version);