A DevOps engineer / developer is required for automating work with mobile applications in a containerized environment
We are looking for an experienced DevOps engineer capable of developing and automating a system for launching multiple mobile applications in isolated containers using Kubernetes and Docker. An important element is the configuration of sessions for long-term operation and handling requests with minimal human involvement. The system should be optimized for parallel task execution, recovery of active sessions, and efficient resource management.
Main responsibilities:
Developing architecture for running Android emulators in Docker containers.
Setting up and orchestrating containers using Kubernetes, ensuring scalability.
Configuring and optimizing emulators for long-term operation and session isolation.
Automating data retrieval and processing requests from the bot.
Setting up a monitoring and logging system to manage container and session activity.
Required skills:
Experience with Docker, Kubernetes, and application containerization.
Knowledge of mobile automation, experience with Android emulators, Appium, or similar tools.
Experience in configuring and managing networks, including through proxies, to ensure session uniqueness.
Ability to work with APIs and automate the retrieval of temporary data for authorization.
Backend development skills in Python, Node.js, or Go for processing requests and interacting with the system.
Knowledge of CI/CD principles and DevOps practices.
Preferred:
Experience with distributed systems.
Skills in monitoring systems such as Prometheus and Grafana.
---
Technical assignment for the backend part
Goal:
To develop a backend service that processes requests from a Telegram bot and coordinates the launch of containers with mobile applications. The system should support session management, handle account authorization, ensure parallel request execution, and store session data to minimize re-authorization.
Main backend tasks:
1. Receiving and processing requests from the bot:
Requests contain data about the number of required sessions, usernames, and other parameters for the emulators.
Validating data and distributing it across containers based on resource availability.
2. Creating and managing containers:
Creating containers with Android emulators using the Docker API and orchestrating through Kubernetes.
Assigning unique network settings, including proxy bindings, for each container to ensure isolation.
3. Authorization and session management:
Managing the authorization process using a temporary password obtained through the mail API.
Storing session data (cookies, tokens) in a secure storage to avoid re-authorization.
Restoring sessions on repeated requests using saved data.
4. Monitoring and scaling containers:
Supporting parallel execution of containers with emulators, monitoring the status of container operations.
Monitoring container activity and performance (CPU load, memory).
Automatically scaling containers based on load.
5. Processing and sending results:
After the emulator finishes working, sending data (e.g., booking confirmations) through the bot.
Handling errors and sending notifications about the operation status to the user through the bot.
6. Security and logging:
Maintaining logs to track container activity and request processing.
Setting up a monitoring system for control and timely detection of errors.
Requirements for backend architecture:
Programming language: Python, Node.js, or Go.
Containerization system: Docker, with orchestration through Kubernetes.
Monitoring system: Prometheus, Grafana for observing the state of containers.
Storage for sessions: Redis or PostgreSQL for temporary storage of session data.
API for the bot: REST API for processing requests from the bot and retrieving data from Telegram.
Approximate workflow:
1. The bot sends a request → 2. The backend validates the data and selects a container → 3. Launching the container with the emulator → 4. Authorization and working with the session → 5. Saving the session and returning data to the bot