Инженер-программист
Нагруженная корпоративная система с многолетней историей кодовой базы и распределённой командой разработки. База данных крупнейшего клиента — десятки гигабайт, кэши службы поиска занимают порядка 20 ГБ оперативной памяти.
- Снизил потребление памяти ключевой страницы с 2 ГБ до 500 МБ; соседнюю страницу, которая на больших объёмах не открывалась вовсе, вернул в строй — 22 МБ передаваемых данных.
- Переписал запрос выгрузки за период: с 3 минут и падения по таймауту до стабильных 30–40 секунд на полном объёме данных.
- Ускорил загрузку кэшей службы поиска на 40 % и снизил их потребление памяти на 20 %.
- Участвую в дроблении монолита: сервисы выносятся из него по одному, на .NET 8. Сервис централизованных настроек спроектировал и написал с нуля — контракты gRPC, валидация, загрузка документов, настройки печати отчётов.
- Рефакторю проекты: пересобираю структуру, убираю лишние зависимости. Перевёл четыре core-сервиса с Ninject на встроенный DI .NET, привёл конфигурацию к единой модели загрузки, добавил health checks.
- Внедрил сквозную наблюдаемость: общая библиотека телеметрии на OpenTelemetry для всех core-сервисов, экспорт в Prometheus, Loki, Jaeger, дашборды в Grafana.
- Поддерживаю и модернизирую унаследованный контур: перевод с .NET Framework на .NET 8, доработка OWIN middleware аутентификации за балансировщиком нагрузки.
- Разрабатываю клиентскую часть одного из модулей на Vue.js. Требования собираю напрямую у заказчика внутри компании, без аналитика-посредника.
C#, .NET 8, .NET Framework, ASP.NET Core Web API, gRPC, EF6, ADO.NET, MS SQL Server, OpenTelemetry, Serilog, Prometheus, Grafana, Loki, Jaeger, Docker, Vue.js