Fullstack Engineer
Summary
Builds and maintains Python-based backend services (FastAPI/Django) for computer vision products like self-service scales, mailboxes, and retail analytics, focusing on REST APIs, PostgreSQL, Docker, and real-time video/image processing with OpenCV/NumPy.
Зарплата: 9360–14040 BYR (до вычета налогов)
Обязанности:-
Разработка и поддержка backend-сервисов на Python (FastAPI/Django) для продуктов на базе Computer Vision (весы самообслуживания, почтоматы, ретейл-аналитика)
-
Проектирование и разработка REST API для взаимодействия с frontend, периферийными устройствами и ML-сервисами
-
Работа с PostgreSQL через SQLAlchemy: проектирование схем, миграции, оптимизация запросов
-
Контейнеризация и деплой сервисов (Docker, Docker Compose)
-
Разработка асинхронных обработчиков видеопотоков (RTSP, HTTP-стриминг, локальные камеры) с использованием OpenCV/NumPy: захват кадров, ресайз, кроп, конвертация цветовых пространств — без блокировки event loop
-
Интеграция backend с сервисами инференса нейросетей: проектирование протоколов обмена данными (сериализация, base64/бинарная передача)
-
Взаимодействие с оборудованием и IoT-устройствами (камеры, весовые модули, принтеры) по сети и локально, работа с периферией на Linux
-
Обеспечение взаимодействия backend и frontend (HTTP/WebSocket, авторизация, CORS)
-
Участие в архитектурных решениях с учётом ограничений по производительности (CPU/GPU, RAM/VRAM, накладные расходы IPC)
-
Профилирование и оптимизация критичных по производительности участков кода
-
Участие в код-ревью и техническом документировании.
-
Backend (обязательно):
-
Отличное знание Python.
-
Опыт коммерческой разработки на FastAPI и/или Django.
-
Опыт работы с SQLAlchemy (желательно 2.x) и реляционными БД (PostgreSQL).
-
Уверенное владение Docker и Docker Compose.
-
Понимание принципов построения REST API, асинхронного программирования (asyncio), многопоточности и многопроцессности в Python.
-
Желателен опыт работы с Linux, сетями, устройствами или IoT (взаимодействие с оборудованием, протоколами, периферией).
-
Опыт работы с библиотеками компьютерного зрения (на базовом уровне): уверенное использование OpenCV (cv2), NumPy для захвата кадров, ресайза, кропа и конвертации цветовых пространств.
-
Работа с видеопотоками и изображениями: понимание того, как эффективно читать видео (RTSP, HTTP-стриминг, локальные камеры), извлекать кадры и не блокировать при этом Event Loop (FastAPI/asyncio).
-
Интеграция с ML-модулями: опыт построения взаимодействия между web-бэкендом и сервисами инференса нейросетей. Понимание форматов передачи мультимедиа-данных (сериализация, base64 vs бинарная передача).
-
Frontend (обязательно понимание):
-
Уверенные знания JavaScript/TypeScript: event loop, async/await, промисы.
-
Понимание процесса сборки frontend-приложений (Vite/Webpack, npm/pnpm/yarn).
-
Понимание того, как frontend взаимодействует с backend (HTTP, WebSocket, авторизация, CORS и т.д.).
-
Базовое понимание современных frontend-технологий (React/Vue/Angular — не обязательно писать код ежедневно, но понимать архитектуру).
-
Computer Science / System Design:
-
Хорошее понимание процессов и потоков ОС, работы планировщика ОС
-
Понимание накладных расходов (overhead) при межпроцессном взаимодействии (IPC) и передаче тяжёлых данных (изображений/тензоров) по сети
-
Понимание работы оперативной и виртуальной памяти, взаимодействия CPU и памяти
-
Понимание того, как Python использует потоки и процессы (GIL, multiprocessing)
-
Базовое понимание аппаратной части:
-
Что такое CPU и GPU, в чём разница между RAM и VRAM
-
Как происходит обмен данными между оперативной памятью и видеопамятью
-
Понимание, где возникают узкие места по производительности
-
Будет большим плюсом:
-
Опыт программирования на Go или Rust.
-
Любой опыт оптимизации высоконагруженного или вычислительно сложного кода, когда удалось добиться производительности значительно выше, чем на Python.
-
Понимание профилирования приложений и поиска bottleneck'ов.
-
Опыт работы с системами компьютерного зрения, AI/ML, потоковым видео или обработкой изображений.
-
Опыт работы с очередями сообщений (RabbitMQ, Kafka, Redis Streams).
-
Опыт работы с gRPC или высокопроизводительными брокерами сообщений для общения с ML-сервисами.
-
Базовое знакомство с FFmpeg или GStreamer для низкоуровневой работы с видео.
-
Опыт работы с разделяемой памятью (Shared Memory) в Python для передачи кадров между процессами без копирования.
-
Опыт разработки под Linux и понимание сетевого стека.
официальное трудоустройство в соответствии с трудовым законодательством РБ;
достойный уровень заработной платы;
возможности для обучения и развития;
современный и комфортный офис;
корпоративную культуру, которая мотивирует и заряжает позитивом;
работу в социально ответственной компании, которая следит за трендами, ценит идеи сотрудников и развивается вместе с ними;
медицинское страхование за счет компании.