Wymagany inżynier DevOps / programista do automatyzacji pracy z aplikacjami mobilnymi w środowisku kontenerowym
Szukamy doświadczonego inżyniera DevOps, który potrafi zaprojektować i zautomatyzować system uruchamiania wielu aplikacji mobilnych w izolowanych kontenerach z Kubernetes i Docker. Ważnym elementem jest konfiguracja sesji do długoterminowej pracy oraz przetwarzanie zapytań z minimalnym udziałem człowieka. System powinien być zoptymalizowany do równoległego wykonywania zadań, przywracania aktywnych sesji i efektywnego zarządzania zasobami.
Podstawowe obowiązki:
Opracowanie architektury do uruchamiania emulatorów Android w kontenerach Docker.
Konfiguracja i orkiestracja kontenerów z użyciem Kubernetes, zapewnienie skalowalności.
Konfiguracja i optymalizacja emulatorów do długoterminowej pracy i izolacji sesji.
Automatyzacja pozyskiwania danych i przetwarzania zapytań od bota.
Konfiguracja systemu monitorowania i logowania do zarządzania aktywnością kontenerów i sesji.
Wymagane umiejętności:
Doświadczenie w pracy z Docker, Kubernetes i konteneryzacją aplikacji.
Znajomość automatyzacji mobilnej, doświadczenie z emulatorami Android, Appium lub podobnymi narzędziami.
Doświadczenie w konfiguracji i zarządzaniu sieciami, w tym przez proxy, w celu zapewnienia unikalności sesji.
Umiejętność pracy z API i automatyzacji pozyskiwania danych tymczasowych do autoryzacji.
Umiejętności backendowe w Pythonie, Node.js lub Go do przetwarzania zapytań i interakcji z systemem.
Znajomość zasad CI/CD i praktyk DevOps.
Preferowane:
Doświadczenie w pracy z systemami rozproszonymi.
Umiejętności pracy z systemami monitorowania, takimi jak Prometheus i Grafana.
---
Specyfikacja techniczna dla części backendowej
Cel:
Opracowanie usługi backendowej, która przetwarza zapytania od bota Telegram i koordynuje uruchamianie kontenerów z aplikacjami mobilnymi. System powinien wspierać pracę z sesjami, zarządzać autoryzacją kont, zapewniać równoległe wykonywanie zapytań i przechowywać dane sesji w celu minimalizacji ponownej autoryzacji.
Podstawowe zadania backendu:
1. Przyjmowanie i przetwarzanie zapytań od bota:
Zapytania zawierają dane o liczbie wymaganych sesji, nazwach użytkowników i innych parametrach dla emulatorów.
Sprawdzanie poprawności danych i przydzielanie do kontenerów na podstawie dostępności zasobów.
2. Tworzenie i zarządzanie kontenerami:
Tworzenie kontenerów z emulatorami Android za pomocą API Docker i orkiestracja przez Kubernetes.
Przydzielanie unikalnych ustawień sieciowych, w tym przypisanie serwerów proxy, dla każdego kontenera w celu zapewnienia izolacji.
3. Autoryzacja i zarządzanie sesjami:
Zarządzanie procesem autoryzacji za pomocą tymczasowego hasła, uzyskiwanego przez API pocztowe.
Przechowywanie danych sesyjnych (ciasteczka, tokeny) w bezpiecznym magazynie, aby uniknąć ponownej autoryzacji.
Przywracanie sesji przy ponownych zapytaniach z użyciem zapisanych danych.
4. Monitorowanie i skalowanie kontenerów:
Wsparcie równoległego wykonywania kontenerów z emulatorami, kontrola statusu pracy kontenerów.
Monitorowanie aktywności kontenerów i ich wydajności (obciążenie CPU, pamięć).
Automatyczne skalowanie kontenerów na podstawie obciążenia.
5. Przetwarzanie i wysyłanie wyników:
Po zakończeniu pracy emulatora wysyłanie danych (np. potwierdzenia rezerwacji) przez bota.
Przetwarzanie błędów i wysyłanie powiadomień o statusie operacji użytkownikowi przez bota.
6. Bezpieczeństwo i logowanie:
Prowadzenie logów do śledzenia aktywności kontenerów i przetwarzania zapytań.
Konfiguracja systemu monitorowania do kontroli i wczesnego wykrywania błędów.
Wymagania dotyczące architektury backendu:
Język programowania: Python, Node.js lub Go.
System konteneryzacji: Docker, z orkiestracją przez Kubernetes.
System monitorowania: Prometheus, Grafana do obserwacji stanu kontenerów.
Magazyn dla sesji: Redis lub PostgreSQL do tymczasowego przechowywania danych sesyjnych.
API dla bota: REST API do przetwarzania zapytań od bota i uzyskiwania danych z Telegram.
Przykładowy przebieg pracy:
1. Bot wysyła zapytanie → 2. Backend waliduje dane i wybiera kontener → 3. Uruchomienie kontenera z emulatorem → 4. Autoryzacja i praca z sesją → 5. Przechowywanie sesji i zwrot danych do bota