О проекте
Издательство «Национальное образование» развивает образовательные сайты: подготовка к ЕГЭ и ОГЭ, педагогический клуб, онлайн-школа, платформа материалов к учебникам. У всех сайтов общий вход — через собственную систему единого входа ЕМАП (сервер авторизации по OpenID Connect: регистрация, вход через VK ID и Яндекс ID, роли и права, организации-школы, админка).
К ЕМАП подключены все продукты, поэтому ошибка в нём останавливает всё. Сейчас систему разрабатывает подрядчик — мы ищем человека, который примет систему, станет её техническим владельцем и будет отвечать за то, как устроен вход и права во всех продуктах.
Нужен не просто разработчик, а инженер с опытом системной архитектуры: разберётся в чужом коде без документации, опишет устройство системы и сам доведёт изменения до прода.
Чем предстоит заниматься
- Архитектура и анализ: разобрать ЕМАП целиком (протокол входа, выпуск и проверка токенов, ключи подписи, сессии, роли, организации, админка, интеграции с сайтами); поддерживать описание системы в актуальном состоянии; принимать архитектурные решения и согласовывать их с техдиректором; превращать запросы бизнеса в задачи с критериями готовности и оценкой.
- Разработка: дорабатывать бэкенд на Python (FastAPI, SQLAlchemy async, PostgreSQL), при необходимости — фронтенды входа, ЛК и админки (Vue 3 + TypeScript); подключать новые сайты и сервисы к единому входу; следить за безопасностью (хранение паролей и ключей, защита от подбора, права в админке); писать и поддерживать автотесты (pytest, Playwright, Schemathesis).
- Эксплуатация: выкладывать версии через GitLab CI вместе с инженерами эксплуатации, проверять подключённые сайты после выкладки; разбирать инциденты по логам и Sentry; следить за нагрузкой в пиковые периоды (начало учебного года, подготовка к экзаменам).
- Команда и подрядчик: 1–2 месяца работать вместе с подрядчиком, принимать работу по результату и забирать знания и доступы; консультировать бэкенд, фронтенд, онлайн-школу и тестировщиков по вопросам входа и прав; вести документацию в Confluence.
Ожидания на первые 3 месяца
- 2 недели: поднять ЕМАП локально и на тестовом стенде, получить доступы, разобраться в протоколе, токенах, ролях, организациях и подключении сайтов; начать самостоятельно исправлять текущие ошибки; расставить приоритеты по задачам.
- 1 месяц: самостоятельно выпускать исправления с проверкой подключённых сайтов и возможностью отката; принимать работу подрядчика по результату, в том числе автотестами; сквозные тесты на основные сценарии при каждой выкладке.
- 2 месяца: принять самостоятельную поддержку ЕМАП; смена ключей подписи токенов и выкладка новых версий проходят без поломки сайтов; схема входа и порядок подключения нового сайта описаны в Confluence.
- 3 месяца: довести первую собственную доработку от требований до прода (например, вход сотрудников школ через организацию); завершить документацию и автоматизацию проверок.
Результат принимается не по календарю: изменение подтверждено автотестами и проверкой на стенде, откат проверен. Если срок не выдерживается — нужен конкретный список препятствий и решение по каждому.
Что нужно уметь (обязательно)
- 5+ лет коммерческой разработки на Python; уверенно FastAPI или другой асинхронный фреймворк, SQLAlchemy.
- Глубокое понимание OAuth 2.0 и OpenID Connect с серверной стороны: authorization code с PKCE, refresh-токены, JWT, JWK, ротация ключей, logout, consent, scopes. Опыт разработки или доработки сервера авторизации, а не только подключения к готовому.
- Опыт проектирования систем: уметь описать архитектуру, выбрать решение и объяснить почему именно его.
- Системный анализ: собрать требования, описать сценарии и критерии готовности, оценить трудоёмкость.
- Безопасность веб-приложений: OWASP Top 10, хранение паролей и секретов, права доступа.
- PostgreSQL: запросы, индексы, миграции, разбор медленных запросов.
- Фронтенд на уровне чтения и правки: Vue 3 или React, TypeScript.
- Docker, Kubernetes на уровне «собрать, выложить, посмотреть логи», GitLab CI.
- Умение разбираться в чужом коде без описания и доводить работу до прода.
- Работа с ИИ-помощниками (Claude Code, Cursor или похожие) как обычная часть процесса.
Будет плюсом
- Опыт с Keycloak, Ory, Authentik — понимание, чем свой сервер отличается от готового.
- Вход через VK ID и Яндекс ID.
- Elasticsearch, Playwright, Sentry.
- Опыт в продуктах с большим числом пользователей и разными типами (ученики, родители, учителя, школы).
- Опыт приёмки работ у подрядчиков.
Технологии
Python, FastAPI, SQLAlchemy (async), PostgreSQL, sqitch, authlib, joserfc, Elasticsearch, Vue 3 + TypeScript + Vite, Playwright, Docker, GitLab CI, Sentry.
Условия
- Удалённо, из любого региона России, полная занятость.
- Оформление в штат по ТК РФ.
- Готовы рассмотреть быстрый выход — старт в течение 1–2 недель.
- Подчинение техническому директору; работа в связке с руководителями групп бэкенда, фронтенда, тестирования и эксплуатации.
- Задачи и документация — Jira и Confluence, код — GitLab.
Этапы отбора
- Разговор с HR.
- Техническое интервью с техническим директором: опыт, протоколы входа, архитектура, разбор реальной ситуации.
- Практическое задание.