Struchkov Mark
Коротко обо мне
Моя основная специализация — backend-разработка на Java и архитектура информационных систем. С декабря 2021 года я использую Quarkus, что позволило мне разрабатывать микросервисы в реактивном стиле, значительно повышая производительность и эффективность систем. Кроме того, я интересуюсь DevOps, занимаясь настройкой CI/CD процессов, оптимизацией Docker-образов и оптимизацией nginx, что расширяет мои навыки разработчика.
В настоящее время я работаю в компании НОТА (Холдинг Т1) на должностях архитектора и TechLead/TeamLead. Координируя работу команды из шести backend-разработчиков. Мы разработали и поддерживаем около 45 микросервисов, которые обеспечивают коммуникации в CRM-системе «Нота Модус». Наш модуль позволяет организовать полноценный контакт-центр: принимать входящие и осуществлять исходящие звонки, общаться с клиентами через мессенджеры, распределять обращения по гибким правилам, собирать и отображать оператору информацию о клиентах из различных систем и многое другое.
Мой интерес к обмену знаниями и участию в профессиональном сообществе отражается в ведении блога о разработке на Java, который ежемесячно привлекает более 25 000 уникальных посетителей. Я также активно участвую в конференциях, включая выступление на Podlodka Java Crew 2022. А участие в запуске курса по Java-разработке в Яндекс.Практикуме и роль одного из первых наставников значительно улучшили мои коммуникативные навыки и позволили глубже понять процесс обучения и развития в IT.
Разработка для меня — это больше, чем работа; это часть моей жизни. Я не только применяю свои навыки в профессиональной деятельности, но и активно занимаюсь личными проектами.
💼 Опыт работы
НОТА МОДУС
- Архитектура: Микросервисы. Реактивный стек
- Сайт: https://modus.nota.tech
- Реестр отечественного ПО: №2021662387
В компании НОТА я принимал ключевое участие в разработке модульной CRM-системы «Нота Модус», основанной на подходах low-code и BPM. Основной задачей было создать «Коммуникационный центр» — модуль для эффективного управления омниканальными коммуникациями с клиентами.
Я спроектировал микросервисную архитектуру из более чем 45 сервисов, используя реактивный стек на Java 17 и Quarkus. Это позволило системе обрабатывать различные каналы связи, включая телефонию, email и мессенджеры, а также интегрироваться с внешними системами. Единолично разработал первые версии ключевых сервисов: распределение обращений, хранение вложений, чаты и другие. Интегрировал сервисы с внешними провайдерами, такими как Telegram, Email и WhatsApp, и реализовал сервисы с возможностью сборки в исполняемый файл для повышения производительности.
В роли тимлида сформировал команду из шести высококвалифицированных backend-разработчиков. Внедрил практики декомпозиции задач, эффективного распределения обязанностей и контроля исполнения. Проводил код-ревью, технические консультации, организовал one-to-one встречи и TechTalk для профессионального роста команды. Команда работает без текучки кадров; сотрудники отмечают высокую степень удовлетворенности и эффективное взаимодействие. Внедренные мной подходы разработки вызывают интерес у других команд и способствуют ускорению разработки.
Под моим руководством успешно внедрили CRM заказчику, завершив проект в срок и укрепив доверие клиента к компании. Спроектированное решение стабильно работает в продакшене банка более 10 месяцев. Также получил высокую оценку от архитекторов заказчика за разработку архитектуры внедрения CRM в их инфраструктуру.
Технологии:
- Java 17
- Quarkus Reactive
- Quarkus Native
- GraphQL
- Kafka
- Redis
- gRPC
- WebSockets
- Docker
- PostgreSQL
- Hibernate
- JOOQ
- Gradle
- Liquibase
- Jmeter
- Camunda
- Apache Camel
- WebRTC
- SIP
Bug Tracking System
Архитектура проекта: Микросервисная
Система для контроля багов в других продуктах группы компаний Т1.
В рамках этого проекта я принимал активное участие в запуске разработки. Моей ключевой задачей было создание сервиса заявок. Разработанный мной сервис позволяет не только регистрировать новые задачи, но и назначать ответственных исполнителей, обеспечивая организованное и систематизированное взаимодействие между участниками процесса. Это включает в себя управление приоритетами, отслеживание статусов выполнения и координацию рабочих процессов на всех этапах решения задач.
Технологии:
- Java 11
- Quarkus Reactive
- Kafka
- Hibernate
- Maven
CRM-система для Большого театра России
Архитектура: многомодульный монолит с отдельными сервисами авторизации и синхронизации
В рамках этого проекта я активно участвовал в качестве Middle Developer и впервые исполнил роль тимлида. Мы разработали систему, которая позволяет эффективно сегментировать клиентов с использованием гибких фильтров и запускать целевые email-рассылки. Также система поддерживает программу лояльности с начислением кешбэка и присвоением статусов.
Проект успешно завершен и стабильно функционирует; сейчас его поддерживает другая команда разработчиков.
Ключевые задачи и достижения:
- Разработка архитектуры системы: Активно участвовал в создании архитектуры проекта.
- OAuth 2.0 SSO сервис: Разработал и внедрил сервис единого входа на основе OAuth 2.0 с использованием Spring, интегрировав внешний LDAP для хранения пользовательских данных.
- Система контроля доступа: Реализовал систему контроля доступа по модели ABAC (Attribute-Based Access Control).
- Сервис уведомлений: Создал сервис уведомлений с возможностью отправки сообщений через email и Telegram.
- Системы фильтрации: Разработал системы фильтрации на базе ElasticSearch, Criteria API и JOOQ.
- Интеграция с Liferay: Доработал и интегрировал open-source плагин для существующей системы на Liferay для обеспечения SSO между CRM и системой.
- Хранение файлов: Разработал механизм хранения файлов на основе MinIO S3.
DevOps задачи:
- Docker Compose: Перенес многокомпонентный проект в Docker Compose для упрощения развертывания.
- CI/CD настройки: Настроил Bitbucket Server и TeamCity с нуля, обеспечив их интеграцию.
- Nexus Sonatype: Конфигурировал Nexus Sonatype для корпоративных нужд по управлению зависимостями.
- GitLab CI: Настроил процессы CI/CD с использованием GitLab CI для всех этапов разработки.
Технологии
- Java 8
- Java 17
- AWS S3
- Spring Boot
- Maven
- Hibarnate
- Docker
- Nginx
Проект маркетплейса залогового имущества "KomissiON" для ВТБ
- Архитектура проекта: монолитная
- Сайт проекта: https://komission.vtb.ru
В компании НОТА я начал свою карьеру в роли Junior Java Developer, участвуя в разработке маркетплейса «KomissiON» для банка ВТБ. Этот проект предназначен для реализации непрофильных активов банка, таких как лодки, дома и промышленные объекты, которые перешли к банку в результате невыплаты кредитов. Платформа служит витриной, позволяя банку эффективно продавать такие активы и максимизировать возврат инвестиций.
Моей основной задачей была разработка системы фильтрации на базе ElasticSearch. Я спроектировал и реализовал функциональность, которая позволяет пользователям легко искать активы по различным параметрам, улучшая пользовательский опыт и повышая эффективность поиска.
Технологии:
- Java 8
- Spring Boot
- Hibernate
- PostgreSQL
- ElasticSearch
- SOAP
В свободное от основной работы время я исполнял роль наставника на курсе Java в Яндекс.Практикуме. Эта деятельность позволила мне поделиться профессиональными знаниями и существенно развить мои коммуникационные навыки.
В свободное время от основной работы я принимал активное участие в качестве наставника на курсе Java в Яндекс.Практикуме. Эта роль позволила мне не только поделиться профессиональными знаниями, но и значительно улучшить мои софт-скиллы.
Основные достижения и обязанности:
- Формирование курса: Был одним из первых наставников и активно участвовал в разработке и улучшении программы курса, внося предложения по корректировке учебного материала.
- Поддержка студентов: Регулярно отвечал на технические вопросы студентов в Slack, помогая им преодолевать трудности и глубже понимать язык Java.
- Проведение Q&A сессий: Каждые две недели организовывал интерактивные сессии в Zoom, где студенты могли получить ответы на сложные вопросы и решить текущие проблемы.
- Создание обучающих материалов: Подготовил и записал несколько образовательных видео, включая продвинутые техники отладки в IntelliJ IDEA и реализацию связей @OneToMany и @ManyToOne в Java.
Во время стажировки в TINKOFF я участвовал в разработке системы для генерации финансовых отчётов, предназначенных для руководителей отделов. Мои ключевые задачи включали:
- Реализация системы авторизации: Внедрил JWT-авторизацию с использованием Spring Security и интеграцией с LDAP, что повысило безопасность и упростило процесс аутентификации пользователей.
- Динамическая генерация отчётов: Разработал функционал для динамического создания финансовых отчётов с помощью JasperReports, автоматизировав процесс подготовки документов и позволив руководству получать актуальные данные с необходимыми корректировками.
- Настройка доступа к базам данных: Конфигурировал доступ к двум разным базам данных, применяя Hibernate для одной и MyBatis для другой, что обеспечило эффективное взаимодействие с различными источниками данных.
Технологии:
- Java 8
- Spring Boot
- Hibernate
- MyBatis
- Maven
- PostgreSQL
- Git
- JasperReports
💩 Pet Projects
У меня довольно много публичных и непубличных пет-проектов, многие из которых автоматически деплоются в Maven Central. В какой-то момент стало интересно поднять под свой зоопарк проектов инфраструктуру для CI/CD, так у меня появился собственный Git на базе Gitea, СI/CD на базе Drone CI и Nexus.
🤖 GodFather | GitHub
Все мессенджеры по сути имеют одинаковую структуру: сообщения, пользователи, вложения, боты, клавиатуры и так далее. GodFather это набор библиотек, которые абстрогируют общие сущности мессенджеров, и на основе этой обобщенной доменной модели позволяет создавать чат-ботов без привязки к конкретному мессенджеру.
Так же на основе этих обобщенных библиотек собираются библиотеки для реализации чат-ботов под конкретный мессенджер, которые расширяют общие сущности, чтобы можно было использовать функционал доступных только в данном месенджере.
Особенностью этого проекта является то, что существует по две версии каждого модуля под обычный SpringBoot и под Quarkus Reactive.
Этот проект был темой моего дипломного проекта в университете, и я до сих пор продолжаю работу над ним. Данный проект использовался для реализации Telegram-ботов на основной работе.
Статьи:
Технологии:
- Java 17
- Spring Boot
- Quarkus Reactive
- Maven
Персональный Telegram-bot, который позволяет гибко настроить уведомления из GitLab. Разработан с использованием предыдущего проекта — GodFather.
Статьи:
Технологии:
- Java 17
- Spring Boot
- PostgreSQL
- GitLab API
- Maven
Пока это самый популярный проект. Это предыдущий шаблон моего блога для генератора статических сайтов Hugo.
Технологии:
- Hugo
- HTML
- CSS
- JavaScript
🌴 Haiti Framework | GitHub
Никто из нас не любит писать типичный-тривиальный код. Это мой набор прикладных библиотек, в которые я собираю интересные и полезные решения, которые потом могу использовать в других проектах.
Технологии:
- Java 17
- Spring
Навыки
Languages
-
Java 8 - 17
-
Go
-
Python
Frameworks
-
Spring Boot
-
Quarkus Reactive
Обмен данными
-
REST
-
Redis
-
GraphQL
-
WebSockets
-
Kafka
-
gRPC
Сборщики
-
Maven
-
Gradle
Database
-
Hibernate
-
PostgreSQL
-
Liquibase
-
AWS S3
-
Elasticsearch
-
MongoDB
-
JOOQ
DevOps
-
Docker & Compose
-
Nginx
-
Gitlab CI
-
Drone CI
-
Linux
Прочее
- Jmeter
- Git
- MyBatis
- SOAP
- JasperReports
- OAuth2
- SSO
Образование
-
Информатика и вычислительная техникаРязанский Государственный Радиотехнический Университет2014 - 2019
Языки
- Русский (Носитель)
- English (A2)