Python - разработчик
Прямой работодатель ЛитРес ( litres.ru )
Опыт работы от 1 года до 3х лет
ЛитРес – лидер рынка электронных книг в России и СНГ.
Мы создаем книжные продукты более 16 лет. Каждый месяц 12,5 млн человек покупают, читают или слушают книги у нас.
В группу компаний входят: онлайн-магазин litres.ru, приложения «Литрес: Книги!» и «Литрес: Слушай», сервис для чтения по подписке MyBook, платформа для новых авторов «Литрес: Самиздат» и для чтецов – «Литрес: Чтец», социальная сеть для читателей LiveLib и другие сервисы.
Мы учредили первую в России премию в области электронных и аудиокниг «Электронная буква».
В связи с расширением команды ищем Python разработчика:
О технологиях
Наша команда переводит монолит на микросервисы. Монолит на Perl, сервисы — на асинхронном Python 3.9 и FastAPI. Для этой вакансии Perl знать не нужно.
У нас настроены пайплайны на Gitlab CI, в которых запускаются MyPy, Flake, Black и интеграционные тесты на PyTest. Сервисы на FastAPI в тех же пайплайнах собираются в образ Docker и деплоятся в кластер Kubernetes.
Клиенты общаются с сервисами по REST, используем спецификацию OpenAPI, в шаблоне типового проекта настроен Swagger
Базы — MySQL, ORM через асинхронную SQLAlchemy, кэши на Redis. Для поискового индекса будем использовать Elasticsearch.
Мониторинги - Sentry, Prometheus, Grafana
Ожидается > 3k rps только на само апи, так что нас можно назвать хайлоадом, любой неоптимальный sql запрос или квадратичный алгоритм вместо линейного сразу же сказывается на производительности приложений.
Команда
В команде 6 разработчиков, которые от квартала к кварталу объединяются в разные группы для достижения квартальных целей (при этом команда/дейли/ретро общие, просто делим проекты друг с другом). Эта вакансия для разработчика, который бы помог с построением поиска на Elasticsearch в группе из двух человек.
Про процессам раз в неделю планирование и ретро, то что приоритетно выбираем в начале недели. Каждый день обсуждаем затыки на дейли.
- База знаний, статус проекта - Confluence, Miro, Jira
- Общение - Slack, Google Meet
Испытательный срок
За время испытательного срока, в первые три месяца, нужно будет исправить два бага в продакшен-поиске (баги предоставим), сделать удобным изменение маппинга индекса и прочитать одну книжку. Это критерии прохождения испыталки, но не единственные задачи.
В перспективе предстоит прикрутить к поиску историчность, персонализацию, админку и интернационализацию. Не обязательно в таком порядке.
Какой опыт поможет
В перспективе года задачи не ограничатся взаимодействием с Эластиком по API, понадобится делать что-то ещё.
Из хардов будет тяжеловато без:
- Владения Python и фреймворком веб-разработки на его основе (django, flask).
- Опыта разработки и проектирования функционала REST API
- Опыта работы с БД (Mysql/PostgreSQL), чтения EXPLAIN и оптимизации запросов
- Опыта написания интеграционных тестов
Желательно также иметь:
- Опыт с асинхронным Python
- Асинхронным веб-фреймворком (fastapi, aiohttp).
- Знания веб-архитектуры: клиент-серверного взаимодействия, особенностей синхронной и асинхронной модели выполнения, кандидат знает в каком случае что применять.
- Умения спроектировать MVP сервиса на знакомых технологиях по требованиям бизнеса, предварительно их уточнить и спланировать его масштабирование в случае наплыва пользователей.
Мы предлагаем:
- Комфортный офис в Москва-Сити башне «Меркурий»
- Стабильную белую заработную плату + премию по результатам работы
- Смешанный формат работы после онбординга (офис+ 1-2 дня удаленка)
- Стандартную рабочую неделю пн-пт с гибким временем прихода и без ненормированного графика
- После успешного прохождения испытательного срока: ДМС со стоматологией, фитнес, курсы английского языка
- Частичную компенсацию парковки
- Неограниченный доступ ко всем электронным и аудиокнигам
- Оплату профильных курсов, участия в конференциях