Struchkov Mark

Backend Java Developer

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

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

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

Текущее место работы – НОТА (Холдинг Т1), где я занимаю позицию «Архитектор» и «Техлид». Не смотря на небольшой стаж промышленной сразработки в 5 лет, я техлид команды, состоящей из 6 backend разработчиков. Моя команда разработала и поддерживает около 40 микросервисов, которые отвечают за функционирование модуля call-центра CRM системы НОТА Модус: внутренние чаты, внешние чаты (интеграции с Telegram, WhatsApp, Email), телефония.

Веду блог о разработке на Java, который посещают более 25 000 уникальных пользователей в месяц. Кроме основного блога с подробными статьями, есть второй с короткими заметками. В 2022 году выступил на конференции Podlodka Java Crew с небольшим докладом: Оптимальная упаковка Java приложения в Docker Image.

Стоял у истоков запуска курса Java-разработки в Яндекс.Практикум. Был один из первых четырех наставников на курсе. Проработал там весь 2022 год. Этот опыт позволил мне улучшить soft-skills. В роли наставника я помогал студентам находить ответы на сложные вопросы и регулярно проводил вебинары.

Разработка для меня — не просто профессия, но и хобби. Поэтому в свободное время я занимаюсь своими проектами, для которых развернул целую инфраструктуру: у меня есть свой Git на базе Gitea, СI/CD на базе Drone CI и личный Nexus.

💼 Опыт работы

Архитектор / Техлид

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

НОТА МОДУС

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

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

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

  • Обработку обращений клиентов и исходящих коммуникаций:
    • Обработка входящих сообщений от клиентов через: звонки, email, Telegram, WhatsApp, Viber.
    • Обработка исходящих коммуникаций. Позволяют запланировать звонок клиенту, или первыми написать в мессенджере.
    • Автоматическое назначение обращений и исходящих коммуникаций на операторов согласно гибким правилам распределения.
    • Сохранение результатов общения с клиентом в единую историю коммуникаций.
  • Работу различных способов коммуникации сотрудников внутри CRM.
    • Персональные и групповые чаты.
    • Внутренние видео/аудио звонки и групповые видео/аудио конференции.
  • Доставку уведомлений о событиях CRM.
  • Рабочее место оператора, встроенный ассистент и доступ к базам знаний.

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

  • Проработка архитектуры некоторых модулей CRM
    • Архитектура всего модуля "Коммуникационный Центр" (40+ сервисов).
    • Архитектура и разработка чатов CRM.
    • Архитектура общей системы уведомлений CRM.
  • Разработка механизма распределения обращений между операторами.
  • Интеграция чатов с внешними провайдерами. Позволяет пользователям CRM внутри системы общаться с клиентами через внешние каналы связи: Telegram, Email, Whatsapp, Viber
  • Разработка единого сервиса для взаимодействия с MinIO S3. Позволяет остальным сервисам сохранять и получать файлы. Отвечает за разграничение доступов и жизненый цикл ссылок.
  • Разработка сервисов с использованием сборки в исполняемый файл.
  • Разработка общих библиотек: библиотеки кэширования, авторизации и другие
  • Проведение нагрузочного тестирования модуля, с использованием Jmeter.
  • Проведение стресс тестирования модуля.

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

  • Проведении собеседований Java разработчиков в свою команду.

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

  • На базе моей OpenSource бибилотеки были разработаны все Telegram боты CRM:
    • Бот для приема обращений от клиентов. Позволяет создать новое обращение и вести переписку с оператором.
    • Бот для пользователей CRM. Позволяет получать уведомления от системы, а также искать и просматривать основную информацию.
    • Бот для участников конференций. Позволяет участникам конференции подписаться на мероприятие, просматривать рассписание и получать автоматические уведомления о событиях мероприятия. Также позволяет задать вопрос спикеру.
  • Моя команда занималась внедрением разработаного решения в Тенге Банк. Внедрение прошло успешно с соблюдением всех сроков.

Технологии:

  • Java 17
  • Quarkus Reactive
  • Quarkus Native
  • GraphQL
  • Kafka
  • Redis
  • Protobuffers
  • WebSockets
  • Docker
  • PostgreSQL
  • Hibernate
  • JOOQ
  • Gradle
  • Liquibase
  • Jmeter
  • Camunda
  • Apache Camel

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-система для Большого театра России

Архитектура: многомодульный монолит с отдельными сервисами авторизации и синхронизации

Система позволяет сегментировать клиентов на основе различных гибких фильтров. По сегментированным клиентам можно запускать email рассылки. Дополнительно CRM позволяет реализовать программу лояльности c начислением кешбэка и присвоением различных достижения.

На этот проект я попал уже в должности Middle. Проект мы довели до логического завершения. Стабильно работает без вмешательства команды разработки, на данном этапе находится на поддержке другой команды разработки. На этом проекте я впервые примерил на себе должность тимлида.

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

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

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

Стоял у истоков появления курса Java, то есть был одним из первых наставников. Активно влиял на изменение курса и поиск неточностей.

Обязаности:

  • Отвечать на технические вопросы студентов в Slack.
  • Проводить каждые 2 недели Q&A сессии. На них мы со студентами в Zoom разбираемся со сложностями, с которыми они столкнулись.
  • Записал несколько лекций:
    • Продвинута отлабка в Intellij Idea
    • Реализация связей @OneToMany и @ManyToOne

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

🌟66🌟

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

Статьи:

Технологии:

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

🖊 uBlogger | GitHub

🌟247🌟

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

Образование

  • Информатика и вычислительная техника
    Рязанский Государственный Радиотехнический Университет
    2014 - 2019

Языки

  • Русский (Носитель)
  • English (A2)