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

@@ -16,8 +16,11 @@ use PHPUnit\Framework\TestCase;
final class LoadBalancingPerformanceTest extends TestCase
{
private DatabaseManager $database;
private WorkerRegistry $workerRegistry;
private JobDistributionService $distributionService;
private LoadBalancer $loadBalancer;
protected function setUp(): void
@@ -47,7 +50,7 @@ final class LoadBalancingPerformanceTest extends TestCase
PerformanceTestHelper::createTestWorker('worker_2', 15),
PerformanceTestHelper::createTestWorker('worker_3', 10),
PerformanceTestHelper::createTestWorker('worker_4', 25),
PerformanceTestHelper::createTestWorker('worker_5', 30)
PerformanceTestHelper::createTestWorker('worker_5', 30),
];
$this->registerWorkers($workers);
@@ -56,7 +59,7 @@ final class LoadBalancingPerformanceTest extends TestCase
$iterations = 1000;
for ($i = 0; $i < $iterations; $i++) {
$time = PerformanceTestHelper::measureTime(function() {
$time = PerformanceTestHelper::measureTime(function () {
$this->loadBalancer->selectWorker(new QueueName('test_queue'));
});
$selectionTimes[] = $time;
@@ -92,7 +95,7 @@ final class LoadBalancingPerformanceTest extends TestCase
for ($i = 0; $i < $iterations; $i++) {
$job = PerformanceTestHelper::createTestJob("dist_job_{$i}");
$time = PerformanceTestHelper::measureTime(function() use ($job) {
$time = PerformanceTestHelper::measureTime(function () use ($job) {
$this->distributionService->distributeJob($job);
});
@@ -131,8 +134,9 @@ final class LoadBalancingPerformanceTest extends TestCase
echo "Target: {$jobsPerSecond} jobs/second for {$testDuration} seconds\n";
$loadResult = PerformanceTestHelper::simulateLoad(
function($index) {
function ($index) {
$job = PerformanceTestHelper::createTestJob("load_job_{$index}");
return $this->distributionService->distributeJob($job);
},
$totalJobs,
@@ -166,7 +170,7 @@ final class LoadBalancingPerformanceTest extends TestCase
PerformanceTestHelper::createTestWorker('worker_2', 20),
PerformanceTestHelper::createTestWorker('worker_3', 30),
PerformanceTestHelper::createTestWorker('worker_4', 15),
PerformanceTestHelper::createTestWorker('worker_5', 25)
PerformanceTestHelper::createTestWorker('worker_5', 25),
];
$this->registerWorkers($workers);
@@ -185,7 +189,7 @@ final class LoadBalancingPerformanceTest extends TestCase
}
echo "\nFair Distribution Results:\n";
$totalCapacity = array_sum(array_map(fn($w) => $w->capacity->value, $workers));
$totalCapacity = array_sum(array_map(fn ($w) => $w->capacity->value, $workers));
foreach ($workers as $worker) {
$workerId = $worker->id->toString();
@@ -228,7 +232,7 @@ final class LoadBalancingPerformanceTest extends TestCase
PerformanceTestHelper::createTestWorker('medium_worker_1', 15),
PerformanceTestHelper::createTestWorker('medium_worker_2', 20),
PerformanceTestHelper::createTestWorker('large_worker', 50),
PerformanceTestHelper::createTestWorker('xlarge_worker', 100)
PerformanceTestHelper::createTestWorker('xlarge_worker', 100),
];
$this->registerWorkers($workers);
@@ -237,7 +241,7 @@ final class LoadBalancingPerformanceTest extends TestCase
$iterations = 500;
for ($i = 0; $i < $iterations; $i++) {
$time = PerformanceTestHelper::measureTime(function() {
$time = PerformanceTestHelper::measureTime(function () {
$this->loadBalancer->selectWorker(new QueueName('test_queue'));
});
$selectionTimes[] = $time;
@@ -271,7 +275,7 @@ final class LoadBalancingPerformanceTest extends TestCase
$priority
);
$time = PerformanceTestHelper::measureTime(function() use ($job) {
$time = PerformanceTestHelper::measureTime(function () use ($job) {
$this->distributionService->distributeJob($job);
});
@@ -296,7 +300,7 @@ final class LoadBalancingPerformanceTest extends TestCase
$workers = [
PerformanceTestHelper::createTestWorker('worker_1', 2),
PerformanceTestHelper::createTestWorker('worker_2', 3),
PerformanceTestHelper::createTestWorker('worker_3', 2)
PerformanceTestHelper::createTestWorker('worker_3', 2),
];
$this->registerWorkers($workers);
@@ -311,7 +315,7 @@ final class LoadBalancingPerformanceTest extends TestCase
for ($i = 0; $i < $jobCount; $i++) {
$job = PerformanceTestHelper::createTestJob("overload_job_{$i}");
$result = PerformanceTestHelper::measureTimeWithResult(function() use ($job) {
$result = PerformanceTestHelper::measureTimeWithResult(function () use ($job) {
return $this->distributionService->distributeJob($job);
});
@@ -349,6 +353,7 @@ final class LoadBalancingPerformanceTest extends TestCase
WorkerStatus::AVAILABLE
);
}
return $workers;
}
@@ -408,4 +413,4 @@ final class LoadBalancingPerformanceTest extends TestCase
$pdo->exec('DELETE FROM workers');
$pdo->exec('DELETE FROM jobs');
}
}
}