Проекты:
• Сервис прогнозирования. Прогнозирование финансовых показателей с использованием кастомных моделей машинного обучения.
• ГИС для аналитики продаж и других KPI. Создания геоинформационных сервисов для обработки и визуализации больших объемов данных, с поддержкой API для аналитических запросов.
• Сервис RDM. Интеграции с Hadoop через файловый загрузчик с автоматической обработкой ошибок и повторными попытками передачи.
Обязанности и достижения:
• Разработка RESTful API на FastAPI с реализацией сложной бизнес-логики, включая обработку транзакций, агрегацию данных и кэширование запросов с использованием Redis.
• Настройка WebSocket и Server-Sent Events (SSE) для уведомлений и динамического обновления данных на клиенте в реальном времени.
• Настраивал авторизацию через OAuth2 для интеграции с внешними провайдерами, а также реализовал поддержку SSO (Single Sign-On) для корпоративных пользователей, с проверкой JWT токенов и ротацией refresh-токенов.
• Работа с SQLAlchemy и asyncpg для реализации асинхронного взаимодействия с базами данных, оптимизация запросов и настройка connection pooling для высоконагруженных систем. Поддержка легаси проектов с использованием Peewee ORM
• Разработал различные парсеры для обработки веб-страниц и API, используя aiohttp и асинхронный requests_html в качестве замены BeautifulSoup, что позволило значительно ускорить обработку данных за счет асинхронного рендеринга JavaScript и одновременного выполнения запросов.
• Проектирование структуры базы данных для высоконагруженных сервисов, включая создание индексов, оптимизацию запросов и внедрение горизонтального шардирования в PostgreSQL(Citus).
• Настроил взаимодействие микросервисов через RabbitMQ, реализовав очереди задач и маршрутизацию сообщений. Разработал механизмы обработки сообщений с подтверждением доставки, ретраями и DLQ (Dead Letter Queue) для обработки ошибок.
• Автоматизация ETL процессов: разработка пайплайнов для обработки данных из Hive, Oracle и других источников с использованием асинхронных методов работы в Python.
• Создание системы уведомлений для пользователей и разработчиков с поддержкой Telegram, электронной почты и вебхуков. Реализована через собственную библиотеку, поддерживающую fallback стратегии и возможность добавления кастомных каналов уведомлений.
• Оптимизация логирования и мониторинга микросервисов: кастомизация middleware в FastAPI, внедрение Prometheus для сбора метрик и Grafana для визуализации.
• Настройка CI/CD процессов:
- Автоматизация сборки и деплоя приложений в кластеры k3s и k8s с использованием Argo CD и GitOps подхода.
- Настройка пайплайнов в GitLab CI, включая тестирование, сборку контейнеров через Docker, и их публикацию в приватные реестры.
- Создание кластеров k3s для разработки и тестирования, а также развертывание k8s кластеров.
• Использование Alembic для управления миграциями баз данных.
• Интеграция сервисов с внешними API, такими как Jira, для автоматизации рабочих процессов, включая создание задач и отслеживание их статусов.
• Внедрение защищенного взаимодействия микросервисов через HashiCorp Vault, управление секретами и их ротация.
• Активное участие в проектировании архитектуры распределенных систем, включая выбор технологий и оптимизацию взаимодействия между компонентами
Основной стек:
- Backend: Python, FastAPI, SQLAlchemy, Redis, Pandas, RabbitMQ, aiohttp, Airflow, Git, WebSocket, SSE, OAuth2, JWT, SSO, PostgreSQL, Clickhouse, Hive, Oracle, Alembic, Pytest
- DevOps & CI/CD: Docker, Docker Compose, Kubernetes (k8s), k3s, Argo CD, GitLab CI/CD, GitHub Actions, HashiCorp Vault, GitLab, GitHub
- Frontend (при необходимости): React, TypeScript, Material-UI, Vite
Разработал собственный дашборд для мониторинга и анализа приоритезации очередей задач, подключив его напрямую к API системы управления приоритетам, средствами Excel и VBA для создания автоматизированного решения. Это позволило существенно оптимизировать процесс работы с очередями задач и эффективнее распределить нагрузку между работниками офиса.
Прохождение курса React в период с ноября 2023 по январь 2024 года стало отличной возможностью укрепить существующие навыки разработки, несмотря на уже имеющийся опыт создания приложений на базе React. Курс помог закрыть пробелы в теоретической части, а также дал ценные знания по работе с устаревшими версиями React, что особенно полезно при поддержке легаси проектов. В процессе обучения я углубил понимание работы с WebSockets и улучшил навыки работы с Redux.