Специалисты
Ключевые навыки
Programming Languages
- Java
Framework/Library
- Spring - Spring Boot- Spring Cloud- JPA, Hibernate
DBMS
- Oracle- PostgreSQL- Redis
Application/Web Servers
- Nginx- Apache Kafka- ElasticSearch- LogStash- Kibana
Application Type
- REST- Grpc
Development Tools
- Git- Gradle- Maven
Other
- Agile- Docker- Camunda- Kubernetes- Nexus- Unix
NDA #1 (производство)
Состав команды: 4 бэкенд разработчика, 3 фронтенд разработчика, 3 аналитика, 1 тимлид, 1 руководитель проекта Роль: бэкенд разработчик Описание проекта Проект предоставляет сервис, который распространяется на платной основе для клиентов компании в металлургической отрасли. Сервис имеет возможность рассчитывать различные показатели, связывать определенные данные с определенным оборудованием и работать с ними, но основная идея - поддержание процессов, направленных на обеспечение механической целостности оборудования, работающего под давлением. Что было сделано 1. Я спроектировал и разработал единую систему для создания, обновления и использования нормативно-справочной информации. Реализовал архитектуру на основе микросервисного подхода с использованием Spring Boot и Spring Cloud. Применил паттерн CQRS для разделения операций чтения и записи, что позволило оптимизировать нагрузку и масштабировать систему горизонтально. Для эффективного кэширования внедрил Redis с настройкой time-to-live и стратегией инвалидации по событиям через Kafka. Реализовал Hibernate второго уровня кэширования с использованием Ehcache для снижения нагрузки на базу данных, достигнув значительного сокращения времени отклика при пиковых нагрузках. 2. Внедрил комплексную систему мониторинга на базе Prometheus и Grafana с кастомными метриками Spring Actuator, обеспечив видимость всех критических компонентов системы. Настроил распределенную трассировку с использованием Spring Cloud Sleuth для отслеживания запросов через все микросервисы. Создал алерты на основе пороговых значений производительности и бизнес-метрик для оперативного реагирования на инциденты. Реализовал centralized logging с использованием ELK-стека с кастомными Logstash фильтрами для структурированного логирования и поиска по логам 3. Реализовал EAV-паттерн (Entity-Attribute-Value) с использованием Hibernate и Spring Data JPA. Разработал собственную имплементацию UserType для Hibernate, позволяющую эффективно хранить и извлекать динамические атрибуты. Оптимизировал запросы с помощью JPA Metamodel и Criteria API, а также создал специализированные SQL-запросы с использованием native queries и функций PostgreSQL для сложных операций поиска и фильтрации. Реализовал кастомные диалекты Hibernate для оптимального использования JSONB в PostgreSQL, включая индексы GIN и операторы @>, что позволило ускорить запросы к динамическим данным.
Java / Spring / TestContainers / Mockito / Kafka / Clickhouse / PostgreSQL / Keycloack / Docker/ k8s
Июнь 2023 – Март 2025 месяцев
NDA #2 (производство)
Состав команды: 5 бэкенд разработчиков, 2 фронтенд разработчика, 1 бизнес-аналитик, 3 системных аналитика, 2 тестировщика, 1 дизайнер, 1 девопс, 1 тимлид, 1 руководитель проекта Роль: бэкенд разработчик Описание проекта Продукт предназначен для обработки информации, поступающей со множества производственных площадок. Пользователь имеет возможность отслеживать входящие сигналы, вести различную статистическую обработку информации, создавать мероприятия в случае отклонений технологических параметров. Наша команда занималась рефакторингом системы контроля производственных процессов. К основным задачам можно отнести: 1. Переход от монолитной архитектуры с хранимыми процедурами на Oracle к микросервисам с распределенным хранилищем на Clickhouse 2. Механизм обработки множественных низкоуровневых сигналов через Kafka 3. Аналитический UI для инженерного состава предприятия, позволяющий отслеживать, фиксировать и описывать различные мероприятия Что было сделано 1. Реализация пакетной обработки сообщений из Kafka для обеспечения высокой нагрузки: Разработан механизм обработки ошибок с применением DLQ и стратегией повторных попыток Интегрирован мониторинг производительности на базе Micrometer Оптимизирована сериализация данных с использованием Avro-схем 2. Разработка компонентов аналитических таблиц с расширенной функциональностью: Созданы материализованные представления для критичных запросов с увеличением производительности Реализован REST API с поддержкой комплексной фильтрации, сортировки и пагинации Внедрен паттерн Specification для сложных условий фильтрации Реализовано кеширование на уровне запросов с использованием Spring Cache для уменьшения нагрузки на БД 3. Создание модуля экспорта отчетов в xlsx формате: Разработан высокопроизводительный генератор отчетов на базе Apache POI Внедрена асинхронная обработка для ресурсоемких отчетов Создана система шаблонизации с поддержкой условной логики и форматирования Разработан механизм хранения и управления жизненным циклом документов 4. Внедрение ролевой модели в Keycloak с поддержкой обратной совместимости: Спроектирована иерархическая структура ролей с наследованием привилегий Разработаны и внедрены миграционные скрипты для переноса данных из устаревшей системы Реализован аудит действий пользователей на основе EventListener Интегрирована авторизация на уровне методов с помощью Spring Security 5. Оптимизация межсервисного взаимодействия: Реализована event-driven архитектура для синхронизации состояния сервисов Внедрены паттерны отказоустойчивости (Circuit Breaker, Fallback) на базе Resilience4j Оптимизированы API взаимодействия с применением батчинга и кэширования
Java / Spring / TestContainers / Mockito / Kafka / Clickhouse / PostgreSQL / Keycloak
Декабрь 2022 – Июнь 2023 месяца
платформа, объединяющая врачей и медицинские компании из разных стран и способствующая непрерывному медицинскому образованию (CME) путем предоставления учебных курсов, проведения вебинаров
Состав команды: 3 бэкенд разработчика, 1 фронтенд разработчик, 1 тестировщик, 1 аналитик, 1 руководитель проекта Роль: бэкенд разработчик Необходимо было разработать сервис продажи учебных курсов для докторов с применением системы промокодов. Каждый курс рассчитан на определенное количество часов CME, нужно было вести учет общего количества часов по курсам, которыми владеет пользователь и часов по курсам, которые уже пройдены пользователем. Также клиент хотел осуществить модернизацию новостной ленты из устаревшего двухколоночного вида в современный трехколоночный, объединить в новостной ленте контент из трех существующих вкладок с применением правил фильтрации, добавить виджеты. Что было сделано 1. В рамках проекта доработан функционал админ-панели в части создания и управления промокодами для учебных курсов: создана страница промокодов, в которой можно создавать как единичные промокоды, так и коллекции разовых промокодов, которые можно применять как к любому, так и к конкретному курсу. 2. В этой же странице можно управлять статусом промокода (активация/деактивация), можно выгрузить информацию о промокоде в формате xlsx. - добавлены данные о продаже курсов и учете выручки от продаж. Расширен функционал страницы пользователя в части фильтрации типов доступных ему курсов, настроен индикатор прогресса обучения по количеству часов, изменена верстка карточек курсов для соблюдения единообразия дизайна всего приложения. 3. Добавлена возможность покупки курсов с использованием сервиса оплаты Hyperpay (региональный сервис для осуществления транзакций) с возможностью запросить возврат за не начатый курс. 4. Добавлена возможность применения промокода и пересчета стоимости курса. Изменена стартовая страница, произведено объединение сбора сущностей с существующих трех вкладок на одну вкладку ленты постов в определенном порядке формирования: 3 поста пользователей, блок рекламы (интеграция с Google ads), контент - сущность от компаний, в зависимости от выбранного фильтра: по популярности или по дате публикации. 5. Для этого полностью изменена существующая логика на бэкенде и создан новый эндпоинт. Добавлены фильтры-подвкладки для отображения контента от пользователей или от компаний. Двухколоночный тип заменен на трехколоночный, добавлены виджеты рейтинга пользователя/пригласи друга (с возможностью интеграции с соц. сетями facebook, telegram, twitter, whatsapp, skype, LinkedIn, reddit)/опросов/уведомлений/популярных постов/промо постов. Произведено ускорение загрузки страницы. 6. Добавлена пагинация перечисленных страниц. 7. Для SEO-оптимизации в приложение добавлены метатеги. 8. Также исправлены баги от предыдущих команд разработки в части редактирования профиля пользователя и повторного начисления и выдачи сертификатов за повторное прохождение курсов, автоскролла при прохождении этапов курса. Кроме того, восстановлены регистрация и авторизация по facebook. 9. Для unit тестирования приложения применены методы Jasmine и Karma. 10. Деплой проекта в Microsoft Azure.
Java / Spring / PostgreSQL / Feign / MS Azure
Январь 2022 – Ноябрь 2022 месяца