Мы — студия разработки игр на аутсорсе, базирующаяся на Кипре и работающая с 2018 года. Мы занимаемся разработкой мобильных игр полного цикла, а также поддерживаем существующие проекты, создаем прототипы и выполняем проекты по портированию.
Недавно мы начали разработку AAA-шутера для мобильных платформ — мобильной адаптации известной игры для ПК. Мы ищем опытного и самостоятельного C#/.NET Backend Developer для участия в проекте.
Обязанности
Основное внимание в данной роли будет уделяться разработке бэкенда, микросервисной архитектуре, стабильности системы и производительности.
Требования
C# и .NET
- 5+ лет коммерческого опыта разработки на C#/.NET для высоконагруженных онлайн-сервисов.
- Экспертные знания асинхронного программирования, многопоточности, управления памятью и сборки мусора, ASP.NET Core и продакшн-профилирования — достаточно глубокие для принятия архитектурных решений, выявления коренных причин сложных проблем и ревью кода других разработчиков.
- Глубокие знания .NET 10, включая производительность, новые возможности, внутреннее устройство CLR, async/await и многопоточность.
- Практическое применение инженерных лучших практик и паттернов, включая Clean Architecture, DDD и SOLID.
- Опыт проектирования, реализации и поддержки REST, gRPC и WebSocket API.
- Опыт работы с UDP и небезопасным кодом (unsafe code).
Архитектура и распределенные системы
- Опыт проектирования распределенных систем, включая границы сервисов и транзакций, идемпотентность, слабую согласованность (eventual consistency) и поведение при частичных сбоях.
- Подтвержденный опыт масштабирования распределенных систем под нагрузкой, начиная от нескольких тысяч запросов в секунду и десятков тысяч одновременных соединений, с конкретными примерами выявленных и устраненных узких мест.
- Способность выявлять и устранять узкие места в производительности до того, как они повлияют на игроков.
- Опыт построения отказоустойчивых систем, предотвращения каскадных сбоев между сервисами и реализации контролируемой деградации при перегрузке.
- Опыт проектирования схем данных, основанных на реальных бизнес-процессах и моделях доступа.
Данные и хранилища
- Сильные навыки работы с PostgreSQL или MS SQL Server, включая написание и оптимизацию запросов, индексирование, планы выполнения, блокировки и миграции на «живых» базах данных под нагрузкой.
- Опыт работы с нереляционными базами данных, такими как MongoDB или аналогичными технологиями.
- Глубокие знания Redis, включая структуры данных, стратегии инвалидации кэша и ограничения распределенных блокировок.
- Опыт работы с потоковой передачей событий и брокерами сообщений, такими как Kafka, NATS или RabbitMQ, включая гарантии доставки, партиционирование, обработку дубликатов, повторные попытки и очереди «мертвых» писем (dead-letter queues).
Инфраструктура и операции
- Практический опыт работы с Kubernetes в продакшене, включая запросы ресурсов и лимиты, probes, HPA, StatefulSets, автоматическое масштабирование и устранение неполадок кластера.
- Опыт создания и развертывания контейнеризованных сервисов с помощью Docker.
- Уверенные рабочие знания как минимум одной облачной платформы: AWS, GCP или Azure.
- Опыт самостоятельного построения CI/CD-пайплайнов с использованием GitHub Actions, GitLab CI или TeamCity, включая этапы сборки, тестирования и развертывания.
- Практический опыт наблюдаемости (observability) с использованием Prometheus, Grafana, Alertmanager, распределенной трассировки и централизованного логирования, включая способность создавать дашборды и алерты для продакшена.
Качество и практики разработки
- Опыт написания автоматизированных модульных и интеграционных тестов.
- Большой опыт работы с системами контроля версий и практиками ревью кода.
Будет плюсом
- Опыт разработки игровых бэкендов, включая игровые сессии, матчинг, серверную авторизацию и оркестрацию игровых серверов с состоянием.
- Опыт эксплуатации систем реального времени для многопользовательских игр под нагрузкой.
- Опыт интеграции игровых платформ и сервисов, таких как Epic Online Services, PlayFab и магазинов платформ.
Условия
- Удаленная работа на условиях частичной/полной занятости.
- Зарплата в $.
- Нулевая бюрократия, минимальное микроменеджмент и оптимизированные процессы согласования.
- Небольшие дружные Agile-команды.
- Уроки английского языка в группах по 3-4 человека.