Backend Python developer

Екатеринбург, Россия
Миддл • Сеньор
Информационные технологии • Разработка • Backend • Bash • Python • Django • Flask • ClickHouse • MariaDB • MongoDB • MySQL • PostgreSQL • Redis • Amazon S3
Удаленная работа
Опыт работы более 5 лет
230 000 ₽
Есть файл резюме (защищен)
О себе

На данный момент Backend Python developer.

Мои компетенции и опыт

"Harper invest"

Backend-разработчик python. Март нужен доступ к резюме Март нужен доступ к резюме года)

  • Разобрался как работает блокчейн. С помощью провайдеров разных блокчейнов получал данные о событиях в сети и сохарнял на диск при попутном или последующем анализе данных.
  • Имел массу челленджей с хранением данных популярных блокчейнов: оптимизация структуры БД (схема и индексы), скорость выполнения запросов, просто писал слложные запросы которые раньше не писал. Вобщем прокачался в SQL.
  • Написал, поддерживал и развивал бекендную часть проекта из пордка 10 микросервисов на FastAPI. Все покрыто тестами примерно на 70-80%.
  • Организовал fanout шину сообщений на Redis Streams для быстрой коммуникации микросервисов. Так же сделал RPC на редисе для внутренник вызовов м/у микросервисами (вместо REST как могло бы быть).
  • Попробовал новые технологии: Neo4j, web3, playwright, amazon SQS
  • Много работал с сопряжениями со сторонними АПИ (писал коннекторы/клиенты к ним, добивался их надежной работы) и парсеров данных с сторонних ресурсов (добивался их стабильной, повторяемой работы например для данных защищенных от парсинга)
  • ETL: Парсил большие объемы данных (гигабайты) из открытых и полузакрытых источников (beautifulsoup, crawl4ai, playwright) данных в интернете, обрабатывал и чистил их (python, pandas) и грузил в БД так чтобы данные сразу участвовали в бизнес-логике. Для больших объемов данных использовал стриминг (s3 streaming, ijson, duckdb), очереди, асинхронную загрузку, чанкование данных и горизонтально масштабируемые воркеры.
  • Освоил работу с ИИ-агентами (Copilot в vscode, Claude code, Chat GPT, Deepseek). Теперь решаю более сложные задачи требующие ресёрча лучше и быстрей чем прежде.

За время работы в компании несколько лет проходил курсы английского B2 и C1 на Skyeng и Italki с разными нэйтив-тьюторами.

"Камера Биай"

Backend-разработчик python. Декабрь нужен доступ к резюме Январь нужен доступ к резюме год и 2 месяца)

  • Написал, поддерживал и развивал микросервис как компонент ОС linux для анализа трафика. Анализом трафика занималлся ML-модель. ML занимался коллега.
  • Сэмулировал ряд известных атак, отловил и проанализировал трафик, создал для них правила Suricata, добавил в продукт.
  • Создал загрузочный ISO и консольный графический инсталлятор для продукта для удобной установки клиентами. Наладил процесс сборки ISO-образов "в один клик" с помощью Gitlab pipeline.
  • Провел нагрузочные тесты продукта, задокументировал как это делать для коллег.
  • Немного разобрался с ansible.
  • Занимался диагностикой и починкой багов связанных с nginx, modsecurity, suricata, vector и linux.
  • Учавствовал в разработке сервиса для управления/обслуживания объектами недвижимости, вникаю особенности новой сферы. например широкое использование JSON филдов в PostgresQL так как есть много кастомизируемой пользователями логики в админке.
  • Глубоко рефакторил и потом поддерживал и развивал старое легаси (flask), покрываю тестами новый (fastapi) и старый код
  • Помогал решать задачи связанные с версионированием АПИ для мобильных клиентов с поддержкой старого АПИ и развитием нового.
  • Занимался настройкой CI/CD для сервисов в Azure DevOps.

"Enjoy Pro"

Backend-разработчик python. август нужен доступ к резюме декабрь нужен доступ к резюме месяцев)

  • Сделал интеграцию с платежным шлюзом в сложных условиях: разработка в putty через RDP с уточнением АПИ (спецификация была устаревшая) на ходу у другой компании и отладкой в паре с QA.
  • В остальном развивал, поддерживал и чинил многочисленные баги в микросервисной архитектуре на FastAPI/SQLalchemy с довольно запутанной логикой и сложными SQL запросами.

" нужен доступ к резюме "

Backend-разработчик python. Февраль нужен доступ к резюме август нужен доступ к резюме год и 7 месяцев)

Принимал участие в разработке и сопровождении микросервисной платформы для создания чат-ботов. За время работы над продуктом сильно погрузился в ООП, изучил ряд паттернов проектирования, и постоянно их применял при разработке, рефакторинге, развитии микросервисов платформы и их взаимодействия м/у собой.

Получил много опыта в ООП. Начал писать свои приложения более модульно, лучше соблюдая принципы SRP, инкапсуляции и изолированности. Например изоляция пакетов (python package) друг от друга как принято в Django или изоляция слоев: прием/валидация данных, проверка прав доступа, бизнес-логика/модификация данных, хранилище.

Некоторые шаблоны проектирования которые я освоил тут: event-driven architecture самой платформы, layered architecture микросервисов, старался применять принципы DDD для принятия решений о выделении новых микросервисов. Некоторые ООП паттерны которыми пользовался: visitor, factory, composition/aggregation, prototype, adapter, mediator, singleton. Писал много декораторов: параметризованных и простых.

Написал микросервис ограничивающий пропускную полосу входящих сообщений в платформу на основе индивидуального лимита для компании на кол-во сообщений в секунду. Лишние сообщения копятся в python dequeue, и могут пройти в платформу позже, или быть отброшенными после критично долгого ожидания в очереди как устаревшие и более не актуальные.

Боролся с дефектами платформы, например переделал общий класс AMQP-мессаджинга м/у микросервисами так чтобы недоставленные сообщения уничтожались в AMQP после N неуспешных попыток недоставки, ввел работу с нативными RPC-вызовами и мессаджингом, т.к. по факту RPC паттерн общения часто использовался но был реализован на fanout очередях.

Много работал с GraphQL на базе python-graphene. Создавал новые АПИ, глубоко рефакторил старые совместно с фронтенд-программистами.

Писал АПИ для сопряжения с омниканальными системами мессаджинга (вебим, битрикс24 open lines и т.д.).

Навел порядок в докер образах и процессе запуска тестов микросервисов. Например микросервисы не останавливались а убивались так как сигналы не отлавливались питонным приложением, так как внутри контейнера они запускались не с pid 1. С kubernetes работал только для просмотра логов, иногда для exec внутрь контейнера: посмотреть данные в БД/редис, пропатчить код в сервисе "на горячую" в рамках дебага проблем. Немного правил yaml-конфиги pod'ов, ingress'а но не более.

Много занимался задачами стабилизации платформы (багфиксы, рефакторинг, общение м/у компонентами системы), что требовало погружения в работу всей платформы, дебага плавающих сайд-эффектов сразу по всей платформе, внесения правок одновременно в ряд компонентов. Для этого надо было держать в голове общую картину (а не абстрактные слои) и оперировать ей. Это был один из самых сложных аспектов в работе над продуктом.

Освоили вместе с командой практику митапов планирования (разработки архитектуры) задач поступающих от продуктовой команды (понимание задачи, декомпозиция, покер-планирование) после которых сам процесс разработки стал проходить ровнее и лучше параллелиться, а так же уменьшилось кол-во возвратов задач от QA. Во многом на этом процессе настоял я, и примал активное участие в начале его становления. Пока мне не становилось ясно как именно надо реализовать задачу - я не переставал задавать вопросы, предлагать решения.

Из предыдущего пункта и прежнего опыта у тимлида команды - мы ввели практику создания диаграмм разрабатываемых компонентов (UML) при декомпозиции и планировании задач. По началу было сложно и неудобно, но потом мы все ощутили пользу от UML-диаграмм в условиях сложного продукта и большого bus factor у разработчиков. Диаграммы потом так же служат в качестве документации.

Много писал тесты (юниттесты, но если учитывать подключение postgres/redis/rabbitmq к test environment то такие тесты уже считаются интеграционными), освоил ряд хороших техник и подходов написания тестов на pytest. Разобрался с разными формами mock кода в pytest. Активно участвовал в внедрении единого стиля написания тестов, формализации и следования ему всей командой.

Запустил процесс линтинга (pylint, mypy, isort) кода микросервисов. Учитывал и накапливал замечания по процессу работы и внедрения линтинга членами команды и несколько раз переделал инфраструктуру для линтинга чтобы она оптимально подходила под нужды разработчиков и devops'ов. Так же активно способствовал принятию стандартов по линтингу кода в команде.

Помог тимлиду запустить процесс согласования процессинговых и технических разногласий внутри команды в виде формального документа предложения в который могут вносить все, а закреплять все + тимлид в ходе публичного ревью. На данный момент это позволило избавиться от особо горячих споров в ревью. Есть продлжительный спор - значит есть необходимость согласовать его с командой, закрепить решение и закончить тред.

Много работал со следущими технологиями Python: asyncio, aiopika, aioredis, gino (async orm), graphene, botocore (AWS API), protobuf

  • прочитал книги : 'Чистый Python. Тонкости программирования.', 'Грокаем алгоритмы', 'Functional Python Programming', документацию по pytest в виде книги
  • прошел половину курса по ML от Яндекс но бросил так как понял что не мое и не хочу этим заниматься.
  • прошел курсы английского B2 и C1 на нужен доступ к резюме , сейчас решаю книгу Murphey's Engish Grammar (blue)


Есть файл резюме (защищен)


Интересные кандидаты