Ищем инженера, который не просто пишет код, а понимает архитектуру и инфраструктуру сложных систем. Это про Node.js на пределе возможностей, микросервисы, WebSocket, отказоустойчивость и big data в real-time.
Что нужно знать и уметь:
— Отличное знание core-механизмов, событийного цикла, ограничений производительности, GC и утечек памяти Node.js (JavaScript, без TypeScript);
— Глубокое понимание построения распределённых систем: проектирование, масштабирование и сопровождение микросервисов, управление их зависимостями, межсервисной коммуникацией (REST, WebSocket, брокеры сообщений), а также интеграциями с внешними системами и API-провайдерами;
— Проектирование и оптимизация real-time коммуникации на базе WebSocket: более 10,000 одновременных соединений, отказоустойчивые механизмы, балансировка, автоматическое восстановление, масштабируемость и минимизация задержек при передаче быстро обновляющихся данных;
— Опыт разработки систем с нагрузкой от 1000 RPS и выше, работа с большими объёмами данных, критичными к времени обработки;
— Понимание принципов работы брокеров сообщений, маршрутизации, очередей, acknowledgement-механизмов и масштабирования (RabbitMQ);
— Эффективное использование Redis как кэша и брокера pub/sub, понимание режимов конфигурации: standalone, sentinel, cluster, а также принципов репликации и персистентности;
— Базовые знания реляционных БД, грамотное написание запросов, понимание индексации, транзакций и производительности;
— Умение писать Dockerfile, сборка, настройка окружений, оптимизация образов;
— Базовое понимание пайплайнов CI/CD, подготовка и проверка кода перед деплоем (GitLab CI, TeamCity, и др.);
— Реализация надёжных и восстанавливаемых архитектур с учётом шардирования, репликации, мониторинга, алертов и failover-процессов.
Что мы ожидаем:
— Уверенный опыт в разработке высоконагруженных и отказоустойчивых Node.js-сервисов;
— Понимание того, как проектируется, строится и поддерживается архитектура распределённых систем;
— Способность работать с real-time данными и системами, критичными к latency;
— Умение находить архитектурные слабые места и предлагать масштабируемые решения;
— Опыт работы в сферах, связанных с ставками на спорт, гемблингом, финтехом или другими нагрузочными вертикалями — будет плюсом.
Будет плюсом:
— Знание Go;
— Опыт работы с Kafka;
— Опыт performance audit и профилирования Node.js-сервисов;
— Участие в проектировании систем с десятками тысяч активных пользователей.