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

@@ -6,13 +6,7 @@ namespace Tests\Framework\Queue\Performance;
use App\Framework\Database\DatabaseManager;
use App\Framework\Queue\Distribution\JobDistributionService;
use App\Framework\Queue\Jobs\Job;
use App\Framework\Queue\Jobs\JobPriority;
use App\Framework\Queue\Jobs\JobStatus;
use App\Framework\Queue\Queue\QueueName;
use App\Framework\Queue\Workers\Worker;
use App\Framework\Queue\Workers\WorkerCapacity;
use App\Framework\Queue\Workers\WorkerId;
use App\Framework\Queue\Workers\WorkerRegistry;
use App\Framework\Queue\Workers\WorkerStatus;
use PHPUnit\Framework\TestCase;
@@ -20,7 +14,9 @@ use PHPUnit\Framework\TestCase;
final class MultiWorkerThroughputTest extends TestCase
{
private DatabaseManager $database;
private WorkerRegistry $workerRegistry;
private JobDistributionService $distributionService;
protected function setUp(): void
@@ -134,7 +130,7 @@ final class MultiWorkerThroughputTest extends TestCase
['workers' => 1, 'jobs' => 50, 'capacity' => 50],
['workers' => 5, 'jobs' => 250, 'capacity' => 20],
['workers' => 10, 'jobs' => 500, 'capacity' => 15],
['workers' => 20, 'jobs' => 1000, 'capacity' => 10]
['workers' => 20, 'jobs' => 1000, 'capacity' => 10],
];
$results = [];
@@ -146,7 +142,7 @@ final class MultiWorkerThroughputTest extends TestCase
$results[] = [
'worker_count' => $case['workers'],
'throughput' => $result['throughput'],
'efficiency' => $result['throughput'] / $case['workers'] // Jobs per worker per second
'efficiency' => $result['throughput'] / $case['workers'], // Jobs per worker per second
];
$this->cleanupJobs();
@@ -190,7 +186,7 @@ final class MultiWorkerThroughputTest extends TestCase
PerformanceTestHelper::createTestWorker('worker_2', 30),
PerformanceTestHelper::createTestWorker('worker_3', 20),
PerformanceTestHelper::createTestWorker('worker_4', 10),
PerformanceTestHelper::createTestWorker('worker_5', 5)
PerformanceTestHelper::createTestWorker('worker_5', 5),
];
$this->registerWorkers($workers);
@@ -229,7 +225,7 @@ final class MultiWorkerThroughputTest extends TestCase
$batchStartTime = microtime(true);
foreach ($jobs as $job) {
$measureResult = PerformanceTestHelper::measureTimeWithResult(
fn() => $this->distributionService->distributeJob($job)
fn () => $this->distributionService->distributeJob($job)
);
$distributionTimes[] = $measureResult['time_ms'];
}
@@ -279,7 +275,7 @@ final class MultiWorkerThroughputTest extends TestCase
foreach ($jobs as $job) {
$measureResult = PerformanceTestHelper::measureTimeWithResult(
fn() => $this->distributionService->distributeJob($job)
fn () => $this->distributionService->distributeJob($job)
);
$distributionTimes[] = $measureResult['time_ms'];
}
@@ -292,7 +288,7 @@ final class MultiWorkerThroughputTest extends TestCase
'throughput' => round($throughput, 1),
'total_time_ms' => round($totalTimeMs, 1),
'distribution_stats' => PerformanceTestHelper::calculateStatistics($distributionTimes),
'jobs_processed' => $jobCount
'jobs_processed' => $jobCount,
];
}
@@ -306,6 +302,7 @@ final class MultiWorkerThroughputTest extends TestCase
WorkerStatus::AVAILABLE
);
}
return $workers;
}
@@ -383,4 +380,4 @@ final class MultiWorkerThroughputTest extends TestCase
$pdo = $this->database->getConnection();
$pdo->exec('DELETE FROM jobs WHERE status IN ("COMPLETED", "FAILED")');
}
}
}