Какой был трафик на последнем проекте?

Ответ

На моем последнем проекте — высоконагруженном B2B SaaS-сервисе — мы обрабатывали в среднем ~300 миллионов событий в день. Пиковая нагрузка достигала ~12 000 RPS (запросов в секунду) на основном API-шлюзе.

Архитектура и метрики:

  • Стек: Микросервисы на PHP (Laravel/Lumen) и Go, взаимодействующие через gRPC и RabbitMQ.
  • Инфраструктура: Kubernetes-кластер, автоматическое горизонтальное масштабирование (HPA) на основе CPU и кастомных метрик.
  • Ключевые метрики, которые мы отслеживали в Grafana/Prometheus:
    • Latency: P95 времени ответа API — < 150 мс.
    • Error Rate: < 0.1% для 5xx ошибок.
    • Traffic Patterns: Ярко выраженные пики в рабочие часы по UTC, нагрузка в 3 раза выше, чем ночью.

Пример кода для сбора метрик в PHP-сервисе:

// Использование библиотеки promphp/prometheus_client_php
$histogram = $registry->getOrRegisterHistogram(
    'api',
    'request_duration_seconds',
    'HTTP request duration in seconds',
    ['endpoint', 'method']
);

$start = microtime(true);
// ... логика обработки запроса ...
$duration = microtime(true) - $start;

$histogram->observe($duration, [$request->path(), $request->method()]);
$counter = $registry->getOrRegisterCounter('api', 'requests_total', 'Total requests', ['endpoint']);
$counter->inc([$request->path()]);

Основной задачей было обеспечить стабильность и низкую задержку при таком объеме данных, для чего мы активно использовали кэширование (Redis), оптимизацию запросов к БД и асинхронную обработку фоновых задач.

Ответ 18+ 🔞

А, слушай, вот тебе реальная история из жизни. На моём прошлом проекте — это был такой высоконагруженный B2B SaaS — мы в день обрабатывали ~300 миллионов событий. Ёпта, цифры просто овердохуища. А пики, представляешь, доходили до ~12 000 RPS (запросов в секунду) на основном шлюзе. Там уже не до кофе-брейков, там терпения ноль ебать, если что-то ляжет.

Архитектура и метрики:

  • Стек: Микросервисы на PHP (Laravel/Lumen) и Go, которые между собой через gRPC и RabbitMQ болтались.
  • Инфраструктура: Всё в Kubernetes, конечно. Автоматическое масштабирование (HPA) по CPU и своим кастомным метрикам — без этого просто пизда рулю.
  • Ключевые метрики, за которыми мы в Grafana/Prometheus глаз не спускали:
    • Latency: P95 времени ответа API — меньше 150 мс. Больше — уже хуй с горы, начинаются жалобы.
    • Error Rate: Меньше 0.1% для 5xx ошибок. Иначе доверия ебать ноль у клиентов.
    • Traffic Patterns: Чёткие пики в рабочие часы по UTC. Нагрузка ночью в три раза ниже — можно хоть немного выдохнуть.

Вот, смотри, как мы метрики в PHP-сервисе собирали:

// Использование библиотеки promphp/prometheus_client_php
$histogram = $registry->getOrRegisterHistogram(
    'api',
    'request_duration_seconds',
    'HTTP request duration in seconds',
    ['endpoint', 'method']
);

$start = microtime(true);
// ... логика обработки запроса ...
$duration = microtime(true) - $start;

$histogram->observe($duration, [$request->path(), $request->method()]);
$counter = $registry->getOrRegisterCounter('api', 'requests_total', 'Total requests', ['endpoint']);
$counter->inc([$request->path()]);

И главная задача, чувак, была не накосячить: держать всё стабильным и быстрым при таком потоке данных. Поэтому везде, где можно, — кэш в Redis, запросы к базе оптимизированы до предела, а всё тяжёлое — в асинхронные фоновые задачи. Иначе бы просто накрылись медным тазом в первый же час пика.