Вообще все курсы Хекслета бесплатные! Но только до 15 декабря. Всё, что нужно → принять вызов
Остап Кормильцев (error1number404), 21 год, Россия, БарнаулОстап Кормильцев (error1number404), 21 год, Россия, Барнаул

Остап Кормильцев

Бэкенд разработчикСредний (Middle)
От 200 000 ₽Рассмотрю предложения

Контакты

Войти
Возраст: 21 год
Опыт работы: 3 года и 6 месяцев
Регистрация: 09.10.2022
Последний визит: 3 месяца назад
Гражданство:
Местоположение: Россия, Барнаул
Дополнительно: готов к удаленной работе
Знание языков:

Навыки

Redis
Python
PostgreSQL
Docker
Nginx
MongoDB
Django
Flask
RabbitMQ
Apache Kafka

Участие в профсообществах

Опыт работы

  • Универсальный сервис для планирования вашего идеального путешествия
    МоскваОт 100 до 1000 сотрудников
    Python backend разработчик
    Январь 2023 — По настоящее время (2 года)

    Разработка backend на Python с использованием:
    FastAPI, Tornado
    MongoDB, Postgres

    Различные задачки на selenium и другое.

    Разработал либу для работы с конфигами.

    Разработал бота для внутренних вопросов, уведомления по расписанию: дни рождения, отгулы, и др. Интерфейс в тг, интеграции с RocketChat для отправки уведомлений

    Разрабатывал бекэнд для высоконагруженного сервиса командировок

    Писал юнит тесты

  • ETICON
    Томск
    Python backend разработчик
    Июль 2021 — Октябрь 2022 (1 год и 4 месяца)

    Я разрабатывал backend приложения на Django

    1. Я внедрил автогенерируемую документацию Swagger. Это необходимо было для команды фронтенда.

    2. Спроектировал архитектуру приложения.

    3. Внедрил отличную от стандартной систему авторизации в Django

    4. Оптимизировал запросы к базе данных. Эффективность выросла в 7 раз

    5. Написал API на django rest framework (DRF) по документации openapi

    6. Настроил загрузку данных из таблицы Excel в базу данных

    7. Настроил выгрузку записей из базы данных в Excel

    Стек технологий: Python, Django, DRF, openpyxl, Postgres, SQL, drf-yasg

  • Компания, которая развивает самую популярную в России поисковую систему и десятки других сервисов
    МоскваБолее 5000 сотрудников
    Асессор-разработчик
    Июль 2021 — Январь 2023 (1 год и 7 месяцев)

    Поддержка и развитие поиска для разработчиков. Ревью кода.

Дополнительное образование

  • Яндекс Практикум

    Обучаем разработчиков, тестировщиков, аналитиков, дизайнеров, интернет-маркетологов
    Апрель 2022 — Ноябрь 2022 (7 месяцев)

    Сразу уточню все проекты запускались в докере, чтобы не описывать это позже.
    Планировали сервисы с использованием PlantUML. Процесс разработки шёл по методологии Agile

    В начале разбирали тонкости Django, генератор перевода полей, основы работы с ORM, ускорение работы ORM при помощи prefetch_related и select_related, разбиение настроек на модули, настраивали django админку. Узнали о замечательном инструменте дебага django приложений как django-debug-toolbar, очень помогает для оптимизации SQL запросов Django ORM. Так же изучили некоторые тонкости SQL: индексы, EXPLAIN,  ANALYZE, ddl. Здесь же познакомились с основами Nginx, об отдаче статики, о том как работают location, о хидерах.

    После писали ETL из postgres в Elasticsearch.

    До этого были одиночные проекты, начиная с этого пошли командные.
    Дальше писали сервис на FastAPI для взаимодействия с Elasticsearch, изучили и использовали на практике dependency injection в этом фреймворке. Ответы кешировали в Redis для более быстрой обработки одинаковых запросов за одну минуту. Пришлось немного изменить открытую библиотеку пагинации для FastAPI т.к она пагинировала по готовым данным, что как мне кажется, не простительно дорого в ресурсах. Этот и все последующие проекты были спроектированы при учете SOLID архитектуры.
    Протестировали API с помощью pytest, использовали fixtures, для отправки запросов использовали AioHTTP.


    Дальше писали сервис авторизации на Flask с использованием JWT токенов, одним из требований была возможность отозвать все refresh токены если это потребуется. Сделали Flask асинхронным при помощи gevent. Сюда же добавили OAuth от Google, с возможностью добавить любые другие в последствии. БД была PostgreSQL. Здесь же сделали рейтлимитер по средствам Leaky Bucket в самом Flask приложении. Добавили Jaeger для трасировки приложения! Ручки работали не дольше 200мс. После этого интегрировали авторизацию в FastAPI для ElasticSearch. Токены проверялись посредством открытого ключа, и если они были валидными и не были сильно просрочены, то пропускали для пользования API (для того, чтобы если Auth сервис упадет и не сможет обновлять токены, была возможность дальше пользоваться остальными сервисами). Авторизация по такой же схеме использовалась в последующий сервисах. Так же партицировалии одну из таблиц по дате создания записей. Протестировали API с помощью pytest, использовали fixtures, для отправки запросов использовали AioHTTP.  

    Дальше писали UGC сервис: лайки, прогресс просмотра фильма. Данные, что поступали в API на FastAPI, отправлялись в топики Apache Kafka, а Clickhouse через Engine = Kafka + View забирал данные к себе в таблицы. Clickhouse был запущен на 2 шардах.  На каждом по две ноды, реплика + основная таблица. Позже сравнили MongoDB и Clickhouse в эффективности сжатия длинных ревью на фильмы (длинного текста) и их последующей скорости чтения. MongoDB с использованием индексов тут победила, поэтому добавили в апишку ручки на ревью и клали их в монгу.  Добавили в каждый сервис Sentry.io + внедрили отправку логов из апишек и nginx всех сервисов в ELK. Добавили github actions на проверку flake8, проверку работоспособности на python 3.7 3.8 и 3.9, а так же отправку уведомления о успешном merge в мастер ветку.

    После мы писали Notifications сервис. Другие сервисы могли отправлять события в Kafka топики, а специальный воркер внутри этого сервиса обрабатывал нужные и отправлял в API на FastAPI.  API отправлял документ уведомления в MongoDB и так же создавал сообщения в очереди с приоритетом в RabbitMQ, дальше, воркеры, что отправляли уведомления, брали сообщения из RabbitMQ, после брали темплейт, что был прикреплен к документу уведомления, собирали необходимые данные для отправки сообщения по инструкции из прикрепленного к уведомлению темплейта и отправляли. Воркеры для отправки могут запускаться в любом количестве с любым транспортом(Push,email,sms) посредством аргументов запуска python скрипта.

    Дипломным проектом мы выбрали биллинг, взяли django и библиотеку django-payments, она довольно универсальна, поэтому мы дописали свой провайдер для yookassa и брали оплату через неё.

    Вот монорепа нашей команды https://github.com/Wiped-Out/yandex_16_team_work
    Сейчас мы стараемся разложить каждый сервис в отдельный репозиторий, они будут видны в этой организации:  https://github.com/MiddlePython16

  • Яндекс.Лицей

    Основы промышленного программирования на Python
    Сентябрь 2020 — Апрель 2021 (7 месяцев)

    Более углубленное изучение Python
    Основы SQL
    На протяжении года сделал три проекта:
    1 2048 на PyQT с рейтинговой таблицей https://github.com/error1number404/ProjectPyQt5
    2 Rogue-like игра с процедурной генерацией карты + автолевелинг противников https://github.com/error1number404/PyGameProject
    3 Сайт с системой регистрации и авторизации пользователей, системой друзей, возможностью создания мероприятия пользователем, оно может быть открытым, что в свою очередь дает возможность присоединиться к нему любому желающему, и закрытым, попасть в которое можно лишь, если этого захочет его организатор(так же нужно быть его другом для этого). Так же создатель мероприятия имеет возможность удалить его или редактировать, исключать участников. https://github.com/error1number404/YandexApiProject

    https://lyceum.yandex.ru/certificate/check/?certNumber=210230171&lastName=Кормильцев

    PythonFlaskSQLPyQT
    Основы программирования на языке Python
    Сентябрь 2019 — Апрель 2020 (7 месяцев)

    Изучали основы языка Python + разные основные библиотеки



    https://lyceum.yandex.ru/certificate/check/?certNumber=200130171&lastName=Кормильцев