Требуется DevOps-инженер / разработчик для автоматизации работы с мобильными приложениями в контейнерной среде
Ищем опытного DevOps-инженера, способного разработать и автоматизировать систему запуска множества мобильных приложений в изолированных контейнерах с Kubernetes и Docker. Важным элементом является настройка сессий для долгосрочной работы и обработка запросов с минимальным участием человека. Система должна быть оптимизирована для параллельного выполнения задач, восстановления активных сессий и эффективного управления ресурсами.
Основные обязанности:
Разработка архитектуры для запуска Android-эмуляторов в Docker-контейнерах.
Настройка и оркестрация контейнеров с использованием Kubernetes, обеспечение масштабируемости.
Настройка и оптимизация эмуляторов для долгосрочной работы и изоляции сессий.
Автоматизация получения данных и обработки запросов от бота.
Настройка системы мониторинга и логирования для управления активностью контейнеров и сессий.
Требуемые навыки:
Опыт работы с Docker, Kubernetes и контейнеризацией приложений.
Знание мобильной автоматизации, опыт с Android-эмуляторами, Appium или аналогичными инструментами.
Опыт настройки и управления сетями, в том числе через прокси, для обеспечения уникальности сессий.
Умение работать с API и автоматизировать получение временных данных для авторизации.
Навыки бэкенд-разработки на Python, Node.js или Go для обработки запросов и взаимодействия с системой.
Знание принципов CI/CD и DevOps-практик.
Приветствуется:
Опыт работы с распределенными системами.
Навыки работы с системами мониторинга, такими как Prometheus и Grafana.
---
Техническое задание для бэкенд-части
Цель:
Разработать бэкенд-сервис, обрабатывающий запросы от Telegram-бота и координирующий запуск контейнеров с мобильными приложениями. Система должна поддерживать работу с сессиями, управлять авторизацией учетных записей, обеспечивать параллельное выполнение запросов и сохранять данные сессий для минимизации повторной авторизации.
Основные задачи бэкенда:
1. Прием и обработка запросов от бота:
Запросы содержат данные о количестве требуемых сессий, имена пользователей и другие параметры для эмуляторов.
Проверка валидности данных и распределение по контейнерам на основе доступности ресурсов.
2. Создание и управление контейнерами:
Создание контейнеров с эмуляторами Android с помощью Docker API и оркестрация через Kubernetes.
Назначение уникальных сетевых настроек, включая привязку прокси-серверов, для каждого контейнера для обеспечения изоляции.
3. Авторизация и управление сессиями:
Управление процессом авторизации с помощью временного пароля, получаемого через почтовый API.
Сохранение сессионных данных (cookies, токены) в безопасном хранилище, чтобы избежать повторной авторизации.
Восстановление сессий при повторных запросах с использованием сохраненных данных.
4. Мониторинг и масштабирование контейнеров:
Поддержка параллельного выполнения контейнеров с эмуляторами, контроль статуса работы контейнеров.
Мониторинг активности контейнеров и их производительности (нагрузка на CPU, память).
Автоматическое масштабирование контейнеров на основе нагрузки.
5. Обработка и отправка результатов:
После завершения работы эмулятора отправка данных (например, подтверждения бронирования) через бота.
Обработка ошибок и отправка уведомлений о статусе операции пользователю через бот.
6. Безопасность и логирование:
Ведение логов для отслеживания активности контейнеров и обработки запросов.
Настройка системы мониторинга для контроля и своевременного выявления ошибок.
Требования к архитектуре бэкенда:
Язык программирования: Python, Node.js, или Go.
Система контейнеризации: Docker, с оркестрацией через Kubernetes.
Система мониторинга: Prometheus, Grafana для наблюдения за состоянием контейнеров.
Хранилище для сессий: Redis или PostgreSQL для временного хранения сессионных данных.
API для бота: REST API для обработки запросов от бота и получения данных с Telegram.
Примерный ход работы:
1. Бот отправляет запрос → 2. Бэкенд валидирует данные и выбирает контейнер → 3. Запуск контейнера с эмулятором → 4. Авторизация и работа с сессией → 5. Сохранение сессии и возврат данных боту