Struchkov Mark

Backend Java Developer

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

Моё знакомство с миром технологий началось в раннем возрасте. С 13 лет я увлекся разработкой сайтов на платформе uCoz, что привело к самостоятельному изучению HTML и CSS. Это хобби со временем переросло в страсть к технологиям и программированию. В университете я продолжил своё развитие в этом направлении, начав помогать однокурсникам с лабораторными работами по программированию. Уже к концу первого курса я нашел единомышленников и запустил сайт для помощи студентам из различных вузов, который включал интернет магазин с возможностью онлайн оплаты. Но к концу третьего курса я решил завершить этот проект, чтобы сосредоточиться на своём профессиональном и карьерном росте.

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

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

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

Разработка для меня — это больше, чем работа, это часть моей жизни. Я не только применяю свои навыки в профессиональной деятельности, но и активно занимаюсь личными проектами. Для их реализации я создал собственную инфраструктуру, включающую Git на базе Gitea, CI/CD на базе Drone CI и Nexus. А у себя дома организовал экосистему облачных сервисов на базе Raspberry PI 4.

💼 Опыт работы

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

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

НОТА МОДУС

Модульная CRM-система с приминением подходов low-code и BPM. Моя команда занимается разработкой и поддержкой модуля "Коммуникационный центр".

Скриншот модуля коммуникаций

Наш модуль включает 45+ микросервисов и отвечает за:

  • Обработку входящих обращений от клиентов и исходящих коммуникаций:
    • Омниканальную обработку входящих обращений от клиентов через различные каналы коммуникаций:
      • Телефония.
        • Возможность операторов принимать звонки прямо в браузере через встроенный в CRM сервер телефонии или подключение к существующей системе.
        • Супервайзеры могут в режиме реального времени подсказывать операторам, повышая качество обслуживания.
        • Возможности транскрипции аудиозаписей.
      • Email. Интеграция email с CRM позволяет операторам вести корреспонденцию, отправлять и получать файлы, при этом переписка автоматически сортируется в цепочки.
      • Мессенджеры (Telegram, VK, WhatsApp)
        • Боты для предварительной обработки запросов.
        • Функционал редактирования и удаления сообщений.
        • Функционал прослушивания и транскрибации голосовых сообщений.
        • Возможность обмена файлами с клиентами.
        • Использование шаблонов с автоматическим заполнением данными из CRM для быстрых ответов.
    • Управление коммуникациями:
      • Автоматическое распределение обращений среди операторов по заданным правилам.
      • Планирование исходящих коммуникаций.
      • Обратная связь от клиентов и супервайзеров для оценки работы операторов.
      • Сохранение результатов взаимодействия с клиентом в единую историю коммуникаций. Включая аудио-записи звонков.
      • Оператор может вернуть обращение в очередь или перевести его на другого оператора.
    • Аналитика и отчеты:
      • Мониторинг и анализ ключевых показателей эффективности контакт-центра: FCR, ACW, ATA, AWT, CAR, CSAT, IVR exit rate, LCR, NPS, SL
      • Сводные отчеты по результатам работы всех операторов.
  • Работу различных способов коммуникации сотрудников внутри CRM.
    • Персональные и групповые чаты, внутренние видео/аудио звонки и конференции.
    • Доставку уведомлений о событиях CRM.
  • Единое рабочее место оператора
    • Контроль рабочего времени и смен.
    • Настройка профессиональных навыков операторов.
    • Интеграция данных о клиентах из различных систем для создания полной клиентской истории.
    • Ассистент, которые выводит подсказки оператору из базы знаний.
    • Визуальный конструктор для настройки интерфейса рабочего места оператора.

Интересные задачи, которые довелось решать:

  • Проектирование архитектуры системы
    • Проектирование архитектуры ключевых модулей CRM, включая полноценную архитектуру "Коммуникационного Центра" с более чем 45 сервисами.
    • Разработка архитектуры для внутренних чатов CRM и системы уведомлений.
    • Создание архитектуры модуля работы с файлами в CRM.
  • Разработка механизма распределения клиентских обращений между операторами с использованием настраиваемых правил.
  • Создание сервисов чатов и их интеграция с внешними провайдерами, такими как Telegram, Email и WhatsApp.
  • Разработка единого сервиса взаимодействия с файловым хранилищем MinIO S3, включая разграничение доступа к файлам.
  • Разработка сервисов с использованием сборки в исполняемый файл.
  • Разработка общих библиотек: библиотеки кэширования, авторизации и другие

Прочие задачи:

  • Декомпозиция задач и распределение их на команду разработки, контроль за прогрессом и исполнением.
  • Проведение собеседований с Java-разработчиками всех уровней – от Junior до Senior.
  • Организация и проведение нагрузочного и стресс-тестирования с использованием Jmeter.
  • Проведение code review ключевых разработок в модуле.

Особые успехи:

  • Руководство проектом по внедрению разработанного решения в Тенге Банк, завершенного с соблюдением всех сроков..
  • На базе моей OpenSource бибилотеки были разработаны все боты CRM:
    • Бот для приема и обработки обращений от клиентов через мессенджеры.
    • Бот для пользователей 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 сервиса на основе Spring с интеграцией внешнего LDAP для хранения пользовательских данных.
  • Реализация системы контроля доступа по модели ABAC.
  • Создание сервиса уведомлений с возможностью отправки через email и Telegram.
  • Создавал системы фильтрации на базе ElasticSearch, Criteria API, JOOQ.
  • Доработка и интеграция OpenSource плагина для существующей системы на Liferay для SSO между CRM и системой.
  • Разрабатывал механизм хранения файлов на основе MinIO S3.

Задачи DevOps:

Технологии

  • Java 8
  • Java 17
  • AWS S3
  • Spring Boot
  • Maven
  • Hibarnate
  • Docker
  • Nginx

Junior Java Developer

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

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

KomissiON — это маркетплейс, созданный для реализации непрофильных активов банка ВТБ, таких как лодки, дома или промышленные объекты, которые перешли к банку в результате невыплаты кредитов. Эта платформа служит витриной, где банк может эффективно продавать такие активы, максимизируя возврат инвестиций.

Интересные задачи, которые довелось решать:

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

Технологии:

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

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

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

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

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

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

Java Developer (Стажёр)

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

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

О своем участии:

  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)