Выполнение тестового задания #3 Время выполнения ~2ч
Создать микросервис Clicks со следующими возможностями:
- Прием ‘сырых’ кликов (из стороннего сервиса) с помощью webhook.
- ~100-200k кликов в день с 1000 запросов в секунду в пике
- Данные приходят в следующем формате: { "click_id": "abc123", "offer_id": 12345, "source": "asd_network_1", "timestamp": "2025-06-11T14:00:00Z", "signature": "hex_hmac_sha256" }
- Возвращает агрегированную статистику кликов за период времени ( с сортировкой по выбранному полю)
- Экспорт кликов в микросервис Finance (аналитический сервис):
- POST /forward?date=YYYY-MM-DD
- Собирает клики за нужную дату и посылает в Finance
- В ридми опишите, каким образом будете получать и хранить данные в микросервисе Finance
- POST /forward?date=YYYY-MM-DD
Примените DI-контейнер из Задачи #1
docker compose builddocker compose up -ddocker compose run --rm clicks-service vendor/bin/phpunit tests/- Nginx.
- Laravel Webhook (/api/clicks)
- Валидация, проверка подписи
- Задание в очередь
- Ответ 202 Accepted
- RabbitMQ
- Laravel Worker
- Чтение 1000 из очереди
- Формирует batch запрос
- Вставляет пачкой в ClickHouse
- Nginx.
- Laravel (/api/stats)
- Валидация параметров
- Запрос в ClickHouse
- Возврат результата