Struchkov Mark

Backend Java Developer

Коротко обо мне

Моя основная специализация — backend-разработка на Java и архитектура информационных систем. С декабря 2021 года я использую Quarkus, что позволило мне разрабатывать микросервисы в реактивном стиле, значительно повышая производительность и эффективность систем. Кроме того, я интересуюсь DevOps, занимаясь настройкой CI/CD процессов, оптимизацией Docker-образов и оптимизацией nginx, что расширяет мои навыки разработчика.

В настоящее время я работаю в компании НОТА (Холдинг Т1) на должностях архитектора и TechLead/TeamLead. Координируя работу команды из шести backend-разработчиков. Мы разработали и поддерживаем около 45 микросервисов, которые обеспечивают коммуникации в CRM-системе «Нота Модус». Наш модуль позволяет организовать полноценный контакт-центр: принимать входящие и осуществлять исходящие звонки, общаться с клиентами через мессенджеры, распределять обращения по гибким правилам, собирать и отображать оператору информацию о клиентах из различных систем и многое другое.

Мой интерес к обмену знаниями и участию в профессиональном сообществе отражается в ведении блога о разработке на Java, который ежемесячно привлекает более 25 000 уникальных посетителей. Я также активно участвую в конференциях, включая выступление на Podlodka Java Crew 2022. А участие в запуске курса по Java-разработке в Яндекс.Практикуме и роль одного из первых наставников значительно улучшили мои коммуникативные навыки и позволили глубже понять процесс обучения и развития в IT.

Разработка для меня — это больше, чем работа; это часть моей жизни. Я не только применяю свои навыки в профессиональной деятельности, но и активно занимаюсь личными проектами.

💼 Опыт работы

Архитектор / TechLead

Март 2022 — По настоящее время

НОТА МОДУС

В компании НОТА я принимал ключевое участие в разработке модульной 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

Senior Java Developer

Октябрь 2021 — Март 2022 (6 месяцев)

Bug Tracking System

Архитектура проекта: Микросервисная

Система для контроля багов в других продуктах группы компаний Т1.

В рамках этого проекта я принимал активное участие в запуске разработки. Моей ключевой задачей было создание сервиса заявок. Разработанный мной сервис позволяет не только регистрировать новые задачи, но и назначать ответственных исполнителей, обеспечивая организованное и систематизированное взаимодействие между участниками процесса. Это включает в себя управление приоритетами, отслеживание статусов выполнения и координацию рабочих процессов на всех этапах решения задач.

Технологии:

  • Java 11
  • Quarkus Reactive
  • Kafka
  • Hibernate
  • Maven

Middle Java Developer

Февраль 2020 — Октябрь 2021 (1 год и 9 месяцев)

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

Junior Java Developer

Июнь 2019 — Февраль 2020 (9 месяцев)

Проект маркетплейса залогового имущества "KomissiON" для ВТБ

В компании НОТА я начал свою карьеру в роли Junior Java Developer, участвуя в разработке маркетплейса «KomissiON» для банка ВТБ. Этот проект предназначен для реализации непрофильных активов банка, таких как лодки, дома и промышленные объекты, которые перешли к банку в результате невыплаты кредитов. Платформа служит витриной, позволяя банку эффективно продавать такие активы и максимизировать возврат инвестиций.

Моей основной задачей была разработка системы фильтрации на базе ElasticSearch. Я спроектировал и реализовал функциональность, которая позволяет пользователям легко искать активы по различным параметрам, улучшая пользовательский опыт и повышая эффективность поиска.

Технологии:

  • Java 8
  • Spring Boot
  • Hibernate
  • PostgreSQL
  • ElasticSearch
  • SOAP

Менторская деятельность на курсе Java

Ноябрь 2021 — Декабрь 2022

В свободное от основной работы время я исполнял роль наставника на курсе Java в Яндекс.Практикуме. Эта деятельность позволила мне поделиться профессиональными знаниями и существенно развить мои коммуникационные навыки.

В свободное время от основной работы я принимал активное участие в качестве наставника на курсе Java в Яндекс.Практикуме. Эта роль позволила мне не только поделиться профессиональными знаниями, но и значительно улучшить мои софт-скиллы.

Основные достижения и обязанности:

  • Формирование курса: Был одним из первых наставников и активно участвовал в разработке и улучшении программы курса, внося предложения по корректировке учебного материала.
  • Поддержка студентов: Регулярно отвечал на технические вопросы студентов в Slack, помогая им преодолевать трудности и глубже понимать язык Java.
  • Проведение Q&A сессий: Каждые две недели организовывал интерактивные сессии в Zoom, где студенты могли получить ответы на сложные вопросы и решить текущие проблемы.
  • Создание обучающих материалов: Подготовил и записал несколько образовательных видео, включая продвинутые техники отладки в IntelliJ IDEA и реализацию связей @OneToMany и @ManyToOne в Java.

Java Developer (Стажёр)

Февраль 2019 — Апрель 2019 (3 месяца)

Во время стажировки в TINKOFF я участвовал в разработке системы для генерации финансовых отчётов, предназначенных для руководителей отделов. Мои ключевые задачи включали:

  1. Реализация системы авторизации: Внедрил JWT-авторизацию с использованием Spring Security и интеграцией с LDAP, что повысило безопасность и упростило процесс аутентификации пользователей.
  2. Динамическая генерация отчётов: Разработал функционал для динамического создания финансовых отчётов с помощью JasperReports, автоматизировав процесс подготовки документов и позволив руководству получать актуальные данные с необходимыми корректировками.
  3. Настройка доступа к базам данных: Конфигурировал доступ к двум разным базам данных, применяя 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

🔔 GitLab Notify Helper | GitHub

🌟75🌟

Персональный Telegram-bot, который позволяет гибко настроить уведомления из GitLab. Разработан с использованием предыдущего проекта — GodFather.

Статьи:

Технологии:

  • Java 17
  • Spring Boot
  • PostgreSQL
  • GitLab API
  • Maven

🖊 uBlogger | GitHub

🌟250🌟

Пока это самый популярный проект. Это предыдущий шаблон моего блога для генератора статических сайтов 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)