DevOps-инженер (Terraform, Ansible)
Summary
DevOps engineer manages cloud infrastructure as code (Terraform, Ansible) for a marketplace blending gaming, fintech, and e-commerce. Daily tasks include designing reproducible environments, optimizing Terraform state, automating deployments, and maintaining observability, backups, and cost tracking across multi-cloud setups.
Зарплата: от 300000 RUR (до вычета налогов)
Playerok — это маркетплейс цифровых товаров и услуг. Мы соединяем покупателей и продавцов, берём на себя безопасность сделки и запускаем собственные продукты. Строим масштабный бизнес на быстрорастущем рынке, на стыке гейминга, финтеха и e-commerce.
Инфраструктуре несколько лет, она под нагрузкой, есть технический долг — это не Greenfield. Мы ищем инженера (middle/senior) с опытом коммерческой эксплуатации от 3 лет, который умеет принимать самостоятельные решения и готов отвечать за них в проде.
Чем придется заниматься:
-
Воспроизводимая инфраструктура как код
Всё, что касается окружений, описываем в коде (Terraform, Ansible, YAML-спеки). Твоя задача — довести контуры до состояния, когда любое окружение можно поднять с нуля одной командой. -
Работа с Terraform
Управление состоянием, импорт созданных вручную ресурсов, перемещение ресурсов без пересоздания (moved), использование for_each вместо копипаста модулей. У нас версия Terraform 1.5+. -
Фабрика стендов
Описания стендов в YAML → автоматическое развёртывание ресурсов в облаке. Валидация описаний до применения, синхронизация стендов с продакшеном. -
Второе облако (Selectel)
Там находятся внутренние сервисы компании (SSO, VPN-оверлей, бастион-хосты, dev/QA-стенды, раннеры). Нужно будет настраивать сеть, доступы и всю сопутствующую инфраструктуру. -
Управление Ansible
У нас парк из нескольких десятков ролей (PostgreSQL, Kafka, Elasticsearch, ClickHouse, Sentry, VictoriaMetrics, GitLab, Netbird, Teleport и др.). Ожидаем, что ты умеешь писать идемпотентные роли, понимаешь приоритеты переменных, используешь --check и --diff, не злоупотребляешь shell без проверки изменений. -
Развитие внутреннего движка раскатки на Python
Это наш самописный инструмент, который оркестрирует Terraform и Ansible через Python API (ansible-runner, ansible-vault). Нужно будет вникать в существующий код, дописывать новые фичи, поддерживать тесты и CI. -
Аналитическое хранилище и CDC-потоки
Принять под эксплуатацию аналитику, описать её кодом, настроить доступы, бэкапы и оркестрацию. -
Бэкапы и восстановление
Проектирование стратегии бэкапов с чёткими RPO/RTO. Главный принцип: бэкап считается рабочим только после успешного восстановления и проверки данных. -
Учёт затрат в облаках
Настроить тегирование, раскладку расходов по проектам и владельцам, чтобы на любой вопрос «сколько стоит этот проект» был готовый ответ. -
Эксплуатационная рутина
Ротация логов, мониторинг дисков, репликационных лагов, блокировок БД, рост баз — постоянный контроль состояния. -
Доступы и VPN
Выдача и отзыв доступа к внутренним ресурсам по процедуре. -
Инфраструктурный код в монорепозитории
Централизованное хранение секретов — нужно будет спроектировать и поддерживать.
Что мы ждём от кандидата
-
Опыт работы с Terraform на уровне состояния — понимаешь, чем import отличается от пересоздания, зачем нужен moved, как работает for_each при смене ключа, что такое ForceNew в плане. Умеешь валидировать сложные фабрики на fileset/try.
-
Глубокое знание Ansible — приоритеты переменных, работа с --check/--diff, использование --limit для страховки. Отличаешь идемпотентный модуль от небезопасного shell. Быстро разбираешься в чужих ролях и видишь, что сломается на втором прогоне.
-
Python — обязательный навык. Наш движок раскатки написан на Python, поэтому нужна способность вникать в чужой код, разбираться в документации, писать свои части с тестами и проходить ревью.
-
Linux и сети — уверенное владение ss, strace, tcpdump, dig, systemd, работа с лимитами, дисками, маршрутами. Понимаешь разницу между drop и reject в iptables и как это влияет на диагностику.
-
PostgreSQL как эксплуатант — знаешь про блокировки, очередь ожидания, lock_timeout перед DDL, последствия упавшего CONCURRENTLY, цену массовых UPDATE без батчей. Умеешь оценивать миграции (например, CREATE INDEX без CONCURRENTLY на горячей таблице) и проверять их до прода.
-
Kubernetes и Helm — не в роли администратора кластеров, но понимаешь, как работают чарты, умеешь рендерить helm template, разбираешься в каскадах values по окружениям.
-
Kafka и Redis — понимаешь цену ребаланса, лаг, идемпотентность обработки, умеешь читать сообщения из топика вручную. Знаешь про проблемы с горячими ключами и поведение клиента Redis при недоступности.
-
TypeScript — уметь читать и дебажить, чтобы ревьюить миграции или разбирать инциденты в коде разработки (писать самому не нужно).
-
Наблюдаемость и бэкапы — работа с метриками, логами, трейсами, уверенное составление PromQL, проектирование алертов с действиями. Бэкапы — в терминах RPO/RTO и проверенного восстановления.
-
Секреты — работа с ansible-vault и шифрованными значениями, ротация, что делать при утечке в git.
-
Самоорганизация и коммуникация — умеешь сообщать о проблемах и срыве сроков заранее, не ждёшь подсказки на каждом шагу, после ошибки участвуешь в разборе, не исчезаешь. Инциденты случаются, мы разбираем их вместе.
Будет плюсом
-
Опыт с ClickHouse (бэкапы, Keeper, TTL, обновления между мажорами).
-
Работа с аналитическим контуром (Airflow, dbt, CDC, оркестрация).
-
Умение поднимать окружение с чистого облачного аккаунта целиком и доказывать это учениями.
-
Опыт учёта облачных расходов (теги, проекты, утилизация).
-
Знание werf (сборка, рендер, секреты).
-
Администрирование самохоста GitLab, Sentry, Elasticsearch, Netbird, Teleport или аналогичных решений.
Что предлагаем
-
Удаленный формат сотрудничества с редкими встречами в Москве (местонахождение в Москве очень желательно).
-
300 000 руб — стартовая вилка, итоговая сумма обсуждается по опыту.
-
Возможность выбрать форму сотрудничества и оплаты (все налоги — наша забота).
-
Онбординг-квест — не бросим в бой без подготовки, введем в курс дела и подключим к команде.
-
Занятость 5/2 с 8-часовым рабочим днем.
-
Команда профи— работаешь с инициативными и увлеченными коллегами.
-
Пауза на восстановление — «перезагрузиться» можно в оплачиваемом отпуске или на больничном.
Откликайся на вакансию — это первый шаг к тому, чтобы стать частью команды, которая меняет правила игры. Ваш ход! 🎮