Описание вакансии
О проекте:
Платформа разработки, валидации, транспорта и развёртывания DWH-объектов между ландшафтами (DEV → TEST → PROD).
Целевые СУБД: ADB (Greenplum) и ADQM (ClickHouse).
В продуктиве — CLI-конвейер Linter → Builder → Deployer.
В работе — интегрированный сценарий: Backend (Repository / Transport / Deploy Orchestration / Load / Admin), Execution Service, Deployment Worker, peer Transport API и Web UI поверх CLI.
Задачи:
— Разработка и развитие модулей toolchain на Python: mors-linter, mors-builder, mors-deployer (CLI на Typer, packaging через uv/Hatchling).
— Доработка и реализация интегрированного сценария на FastAPI: Web API (M-API), модули Repository, Transport, Deployment Orchestrator, Load, Administration; единый error-contract (ApiError), health-checks, OpenAPI.
— Реализация peer Transport API между ландшафтами: multipart/form-data (metadata + artifacts), status poll, маршруты DEV/TEST/PROD; интеграция с Deployment Worker (BUILD_PACKAGE / DEPLOY_PACKAGE) над CLI.
— Проектирование и работа с PostgreSQL: Metadata DB и Operational DB (раздельные инстансы), typed JSONB definitions, dependency index, locks (EDIT/IMPORT), транзакции, FOR UPDATE / очереди на БД (SKIP LOCKED).
— Статический анализ SQL/YAML/конфигов DWH-проектов (sqlglot, sqlparse, networkx); правила именования, namespaces, циклические зависимости, диалекты Greenplum/ClickHouse.
— Логика сборки транспортных артефактов и деплоя: стратегии миграций (create / alter / skip / drop / recreate / shadow), DB locks, логирование в deployer_metadata.
— Интеграции: S3-compatible ArtifactStore (boto3; MVP — BYTEA, S3 — эволюция), Artifactory / private PyPI, GitLab CI.
— Покрытие Unit- и Integration-тестами (pytest), Code Review, рефакторинг, отладка сквозных сценариев Activate / Import / Transport / Deploy.
— Участие в Spec-Driven Development (specs, C4/Structurizr, ADR); стыковка с frontend по JSON/OpenAPI (Repository tree, OBJREQ/OBJTRAN, RUNMON, Admin).
Требования:
— Уверенный Python 3.10+ (желательно 3.11–3.13);
— Опыт FastAPI (routing, Depends, Pydantic-модели, OpenAPI, middleware, multipart upload);
— Опыт CLI (Typer / Click / argparse);
— Понимание asyncio; клиенты httpx / aiohttp для peer-вызовов; uvicorn/gunicorn для сервисов;
— Отличное знание PostgreSQL (транзакции, JSONB, индексы, advisory/FOR UPDATE locks, миграции схем — Alembic или аналог);
— Опыт работы с Greenplum/PostgreSQL DDL через драйвер (psycopg2 / psycopg3);
— Прямой SQL + понимание ORM (SQLAlchemy — плюс);
— Знание SQL / DWH-домена: схемы, таблицы, views, functions, roles, external/FDW, transforms; жизненный цикл объектов склада; чтение и составление сложных SQL;
— Парсинг и графы: sqlglot/sqlparse (или аналоги), графы зависимостей (networkx), топологический порядок выполнения;
— Валидация и конфиги: Pydantic / pydantic-settings, PyYAML, TOML; env-based конфигурация (environs / dotenv);
— Работа с артефактами и файлами: ZIP/архивы, файловая структура проектов, S3 API (boto3);
— Принципы разработки: SOLID, DRY, KISS, YAGNI; модульный дизайн; понимание Clean Architecture / hexagonal на уровне сервисов;
— Инструменты: Git, uv, packaging (Hatchling/wheel), pre-commit (black, isort, mypy), GitLab CI;
— Тестирование: pytest (+ pytest-cov, pytest-mock), Unit и Integration; умение писать тесты на API (TestClient / httpx ASGI);
— Базовые знания фронтенда: JavaScript/TypeScript, HTML/CSS, JSON/AJAX для работы с UI-командой и OpenAPI;
— Адекватная оценка сроков, ответственность за изменения, работа по Agile (Scrum/Kanban), Jira.