Backend Python developer
Екатеринбург, РоссияМиддл • Сеньор
Удаленная работа
Опыт работы более 5 лет230 000 ₽
Опыт работы более 5 лет230 000 ₽
Есть файл резюме (защищен)
Короткая ссылка: gkjb.ru/gg4F
О себе
На данный момент 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)
Есть файл резюме (защищен)
Интересные кандидаты
Мы используем куки, потому что без кук наш сайт не работал бы, другие сайты не работали бы, да и вообще весь
интернет не работал бы
