Middle python developer с большим бэкграундом.
Организован, хорошо работаю в команде. Имею опыт удаленной работы. Проявляю инициативность в разработке и оптимизации кода. Активно читаю, обмениваюсь статьями. Знаю структуры и алгоритмы обработки данных, захожу решать задачки на leetcode. В основном развиваюсь по документациям и статьям, но периодически читаю полезные книги
Работал с микросервисной и монолитной архитектурами, использовал DRF+Django, SQLAlchemy, Go.
Занимался следующими задачами на Django и SQLAlchemy:
- Разрабатывал таблицы в БД.
- Разрабатывал модели данных и слой бизнес-логики.
- Разрабатывал API (rest, rpc).
- Разрабатывал DTO для взаимодействия модулей внутри монолита и внешними сервисами.
- Работал с cron.
- Работал с selery.
- Использовал constreint, django-сигналы и триггеры в PostgreSQL для реализации логики и поддержки целостности данных.
- Использовал constreint, триггеры для согласования бизнес-логики в БД.
- Работал с Event sourcing.
- Занимался оптимизацией запросов: select_related, prefetch_related у QuerySet, models.Prefetch, аннотация и агрегация данных, индексы.
- Реализовал кастомные lookup для кастомных полей.
- Реализовал кастомные агрегирующие функции.
- Использовал marshmallow, pydantic для сериализации и десериализации данных.
- Покрывал код тестами на pytest и unittest.
- Обсуждал с заказчиками функционал.
- Менторил beginner'ов.
- Знаю принципы безопасной разработки (SQL injection, csrf, XSS)
Последние реализованные функционалы:
- Формирование согласий на обработку ПДн.
- Интеграция с webinar.ru
- Интеграция с MaxPatrol SIEM, ViPNet TIAS.
- Переписал механизм импорта из Excel.
Провел внутренние митапы для beginner'ов:
- Аннотации в Django, как используются и как пишутся.
- Асимптоматика алгоритмов с использованием наших структур.
На Golang занимался следующими задачами:
- Разработал сервисы для интеграции с проектами других организаций по HTTP.
- Реализовал логику работы с RabbitMQ (использовал amqp).
- Реализовал кеширование данных в отдельном библиотечном пакете для тех данных, которые по причинам неполноты или некорректности не могли пройти. Соответственно реализовал уведомление о них через раббит.
- Покрыл тестами и сервисы, и библиотечные пакеты.
- Реализовал загрузку конфигов из Gitlab CI/CD и некоторые параметры обновляются "на лету" с помощью clearenv.
- Реализовал логгирование в консоль, файл и Sentry с помощью logrus, sentry-go.