описание
Мы строим classified-маркетплейс для рынка ЕС (web + mobile), где пользователи размещают объявления о товарах, недвижимости, услугах и вакансиях, находят нужное рядом с собой и договариваются напрямую. Продукт уже работает. Бэкенд написан на Python/Django, новые сервисы пишутся на Go, и функциональность постепенно переносится туда. Поиск построен на OpenSearch. Геолокация и мультиязычный поиск лежат в основе продукта.
задачи
- Разработка и развитие сервисов на Go, участие в постепенном переносе функциональности с Django на Go.
- Поддержка и развитие существующего бэкенда на Python / Django / DRF.
- Разработка фронтенда на React + TypeScript: страницы объявлений, поиск, фильтры, личный кабинет.
- Геофункции: поиск по радиусу и bounding box, карта объявлений с кластеризацией, геокодирование адресов, работа с PostGIS.
- Развитие поиска на OpenSearch: mappings, анализаторы, многоязычный поиск, фильтры и фасеты, геозапросы, индексация.
- Проектирование API, межсервисного взаимодействия и фоновых задач (Kafka, Celery, Redis).
- Работа с PostgreSQL: схемы, индексы, оптимизация запросов под большие объёмы данных.
- DevOps: Docker, Kubernetes, Helm, GitLab CI/CD. Выкладка, диагностика по логам и метрикам (Prometheus, Grafana, Sentry), разбор упавших сборок и деплоев.
- Тесты, код-ревью, техническая документация.
требования
- От 5+ лет коммерческой разработки, опыт работы как на бэкенде, так и на фронтенде.
- От 3+ лет коммерческой разработки на Go: конкурентность, контексты, обработка ошибок, тестирование, опыт сопровождения сервисов в продакшене.
- Практический опыт с Python, Django и Django REST Framework.
- React + TypeScript: компонентный подход, управление состоянием, работа с API, производительность интерфейса.
- PostgreSQL и SQL: транзакции, индексы, EXPLAIN, оптимизация запросов.
- Продакшен-опыт с OpenSearch или Elasticsearch: индексы и mappings, поисковые запросы, фильтрация, индексация документов.
- Опыт работы с геоданными: PostGIS, geohash или geo-запросы в OpenSearch/Elasticsearch, фильтрация по расстоянию и bounding box.
- Опыт работы с картами на фронтенде: Leaflet, Mapbox GL / MapLibre или OpenStreetMap, включая маркеры, кластеризацию и синхронизацию карты с результатами поиска.
- Понимание микросервисной архитектуры, HTTP / REST API и асинхронного взаимодействия.
- Опыт с Redis, очередями сообщений и фоновыми задачами.
- Docker и основные сущности Kubernetes (Pod, Deployment, Service, Ingress, ConfigMap, Secret). Умение посмотреть статусы, события и логи подов и разобраться с причинами перезапусков.
- Умение поправить Helm chart или values и пайплайн GitLab CI/CD, разобраться с ошибкой сборки или развёртывания.
- Внимательность к деталям и ответственность за результат своих изменений.
- Самостоятельность: вы доводите задачу от идеи до продакшена.
- Умение аргументированно объяснять технические решения.
- Понятные тикеты, комментарии к PR и документация.
- Будет плюсом: Kafka: продюсеры, консьюмеры, гарантии доставки; Next.js / SSR и SEO для страниц объявлений; React Native или опыт мобильной разработки; Геокодинг и маршрутизация: Nominatim, Photon, Google Maps / Mapbox API; Векторный и гибридный поиск, ML-ранжирование; Prometheus, Grafana, OpenTelemetry, настройка алертов; Интеграции внешних API: платежи, переводы, телефония и подобные; Антифрод и модерация контента
условия
- Участие в амбициозном продукте и место в core-команде.
- Реальное влияние на архитектурные и продуктовые решения.
- Минимум бюрократии, максимум доверия.
- Удалённая работа.
- Возможность последующей релокации в Европу (Люксембург, Германия, Франция, Бельгия).