Обязанности:
1. Назначение и архитектура решения.
- Требуется разработка микросервисной архитектуры на Golang для интеграции услуги лотереи Столото в экосистему МТС B2C. Решение должно выставлять канонический REST API для взаимодействия с системой управления заказами (EP) как сервис-провайдер. Архитектура строится на принципах: один сервис работает с одной сущностью, только один сервис имеет доступ к БД, использование Golang как основного языка разработки. Система должна обеспечить гибкое управление подписками абонентов и полный жизненный цикл билетов лотереи через интеграцию с внешней системой Столото.
2. Функциональные компоненты системы.
Система должна включать:
-EP Adapter для активации/терминации сервиса через REST-интерфейсы добавления и удаления подписок;
-Main Service для управления подписками и билетами с функциями замены номера абонента;
-Buying Tickets Service с расписанием автоматической закупки билетов;
-Stoloto API Adapter для интеграции с внешним API;
-PostgreSQL базу данных для хранения подписок, билетов и истории со сменой статусов;
-Kafka для асинхронной обработки событий в топике "ticket-data".
Функционально система должна обеспечивать добавление подписки с автоматическим заказом 3 билетов, удаление подписки с уведомлением, замену номера с сохранением активных билетов, отслеживание полного жизненного цикла билета и хранение шифрованных данных.
3. Нефункциональные требования и масштабируемость.
Система должна обеспечивать:
-Покупку подписок - нагрузка 250 000 в год (≈1000 в день);
-Смену статуса билетов - 4 млн вызовов по воскресеньям (утром и вечером);
-Получение данных по билетам - запросы до 1 млн абонентов одновременно с минимальной
пропускной способностью 10 RPS;
-Обработку данных от Столото пачками по 1000 номеров с частотой 1 вызов в секунду.
Система должна быть способна к горизонтальному масштабированию, особенно в точках критической нагрузки (API получения данных по билетам в воскресенье). Требуется реализация криптографического шифрования данных при передаче и механизма повторных попыток для обеспечения надежности обработки запросов.
Требования:
- Микросервисная архитектура;
- Опыт написания ПО на языке Golang не менее года;
- Знание архитектурного стиля REST;
- Понимание событийной архитектуры, работа с очередями Kafka;
- Знание основ шифрования (шифрование файлов по ключу шифра);
- Знание основ SQL, БД Postgre;
- Знание CN (K8S)