Валерий Гуров
C# | .NET | ASP.NET Core | Azure разработчик
Местоположение
Украина, Кривой Рог
Введение
Старший .NET-разработчик с 8+ годами (20+ лет общего) опыта в создании масштабируемых и надежных систем с использованием C#, .NET, ASP.NET Core. Специализируюсь на архитектуре программного обеспечения, оптимизации производительности, интеграциях и внедрении практик безопасности и DevOps. Стремлюсь писать чистый, поддерживаемый код и создавать продукты высокого качества. Требователен к деталям, но стараюсь ориентироваться на баланс между совершенством и практичностью.
Достижения
- Оптимизировал (без изменения архитектуры решения) процесс чтения данных (Entity Framework) для веб-страницы через избавление от запросов в цикле, объединения отдельных запросов в пакеты и более эффективные выражения LINQ. Это позволило уменьшить время загрузки страницы с 40 до 2 секунд.
- Реализовал автоматическое распараллеливание процессов сбора данных с помощью TPL Dataflow, что увеличило скорость обработки в 2-10 раз.
- Заменил неэффективные хранимые процедуры на оптимизированные запросы Entity Framework Core, что ускорило запись данных в 2-3 раза и улучшило доступность данных для конечных пользователей.
- Внедрил журналирование с интеграцией ELK, что существенно сократило время расследования инцидентов.
- Реализовал управление настройками распределённого монолита через HashiCorp Consul, что позволило оперативно менять поведение системы без простоев.
- Интегрировал Azure Key Vault для безопасного хранения секретов без их фиксирования в исходном коде и репозитории.
- Инициировал миграцию унаследованного распределённого монолита в AWS с использованием архитектуры, основанной на событиях (SNS, SQS), автоматическим масштабированием количества экземпляров, централизованной и персональной настройкой устойчивости и политики повторов.
- Внедрил соглашения по стилю кода, статический анализ кода (ка локально, так и в процессе CI/CD), обзор кода, что существенно увеличило качество кода и уменьшило количество ошибок в конечном продукте.
Компетенция
Архитектура приложений
Проектирование архитектуры масштабируемых приложений C#/.NET в облачной среде (Azure/AWS).
Разработка приложений
Разработка RESTful API, приложений Blazor, распределенных систем с использованием SignalR, gRPC, WebSockert, RabbitMQ и других.
Оптимизация производительности
Оптимизация кода приложений и взаимодействия с базами данных (Entity Framework Core, SQL, NoSQL).
Инфраструктура
Внедрение CI/CD (Docker, Azure, AWS), модульного, интеграционного и других видов тестирования (MSTest, xUnit), безопасность (Azure Key Vault), работоспособность приложений (health checks, метрики, ELK).
Интеграция
Использование внешних систем, таких как 1С, Twilio, платежные системы банков, Telegram, для взаимодействия и обмена данными.
Техническое лидерство
Лидерство в технических вопросах, наставничество других членов команды, обзор кода (code review), внедрение стандартов кода.
Навыки
C#
.NET
ASP.NET Core
Blazor
Entity Framework Core
LINQ
Web API
gRPC
WebSocket
SignalR
Azure
AWS
Microsoft SQL Server
PostgreSQL
MySQL
MongoDB, LiteDB
RabbitMQ
Docker
GitHub Actions
Prometheus
Telegram API
HashiCorp Consul
Microsoft Bot Framework
XAML, WPF
.NET MAUI
TeamCity
Azure DevOps
GitLab
.NET Aspire
MassTransit
MSTest
xUnit
1С
Twilio
Selenium WebDriver
Puppeteer
HTML, CSS
Микрослужбы
OpenTelemetry
TPL Dataflow
OData
Redis
ElasticSearch
Apache Kafka
Опыт работы
TemaBit
Разработчик C#
Система управления заданиями для водителей:
- Спроектировал и реализовал основу системы управления заданиями для водителей на базе ASP.NET Core и Telegram, что позволило водителям работать с заданиями без создания специализированного и более сложного в реализации мобильного приложения.
- Реализовал базовую подсистему потока интерфейса пользователя для взаимодействия с системой через чат бота Telegram.
Система сбора информации из внешних источников:
- Спроектировал подсистему сбора данных через набор прокси-серверов с возможностью их ротации и подбора подходящего. Это позволило существенно уменьшить количество неудачных сессий сбора данных, что, в свою очередь, уменьшило вероятность отсутствия у пользователей актуальных данных для анализа.
- Оптимизировал и унифицировал неэффективную запись данных в SQL Server, реализованную на хранимых процедурах, путём замены на Entity Framework Core и более эффективные алгоритмы обработки (да, такой вот парадокс). Это позволило уменьшить время записи в 2-3 раза и увеличить скорость получения новых данных конечными пользователями.
- Реализовал управление настройками распределённого монолита в средах “Production” и “Test” с использованием HashiCorp Consul, что позволило оперативно менять поведение приложения без его простоя.
- Внедрил полноценную систему журналирования с отправкой событий журнала в ELK. Это позволило существенно сократить время расследования инцидентов.
- Реализовал мониторинг состояния (проверка работоспособности (health check), метрики). Это повысило информированность об оперативном состоянии приложения и позволило быстрее реагировать на сбои.
Новая версия системы сбора информации из внешних источников:
- Инициировал реализацию новой версии приложения с миграцией в облако (AWS) и использованием архитектуры, основанной на событиях (SNS и SQS), автоматическим масштабированием количества экземпляров модулей сбора данных в зависимости от количества заданий.
- Внедрил соглашения по стилю кода, анализ кода синтаксическими анализаторами, обзор кода как при локальной работе, так и в процессе CI/CD, что существенно увеличило качество самого кода и уменьшило количество ошибок в конечном продукте.
- Реализовал модульные и интеграционные тесты, что существенно увеличило надёжность системы и уменьшило количество ошибок в производственной среде.
- Реализовал автоматическое распараллеливание процесса сбора данных с помощью TPL Dataflow, что позволило на тех же самых аппаратных ресурсах увеличить скорость обработки в 2-10 раз в зависимости от источника данных.
- Спроектировал и реализовал интеграцию с внешними источниками данных в интернете с поддержкой логики повторных попыток, устойчивости к сбоям и т.п. (с унифицированной настройкой общей политики и возможностью гибкой настройки для конкретного модуля), что позволило существенно повысить устойчивость процесса сбора и количество собираемых данных.
Visartech
Разработчик C#
Система обработки и фильтрации входящих телефонных звонков:
- Спроектировал и реализовал основу серверной части для системы обработки и фильтрации входящих телефонных звонков на базе ASP.NET Core и Azure App Services.
- Реализовал интеграцию с Azure Key Vault для безопасного хранения секретов приложения.
- Интегрировал приложение с Twilio для первичного управления входящими звонками и совершения исходящих звонков.
- Задействовал SignalR и Azure SignalR Service для взаимодействия с мобильным приложением.
Must2Go
Разработчик C#
Серверная часть туристического сайта (ASP.NET Web API):
- Интегрировал приложение с банковской системой, что позволило принимать платежи на сайте с использованием механизмов данного банка.
- Разработал первичную версию нового механизма представления информации главной страницы сайта без радикальных изменений архитектуры приложения. Это позволило запустить новую возможность в работу максимально оперативно (с последующей реализацией более правильного варианта), что существенно повысило привлекательность сайта с точки зрения конечных пользователей.
TQM systems
Разработчик C#
Интеграционная платформа для обмена данными:
- Разработал и реализовал архитектуру модулей обмена (ASP.NET Core) с "1С:Предприятие 8" (несколько различных конфигураций), "Новой почтой", "Prom.ua", а также модулей для логистической компании и основного сайта системы. Это позволило добавлять в модуль новые сущности с минимальными затратами времени.
Образование
Криворожский технический университет
Горное оборудование
Механико-машиностроительный факультет. Специалист.



