Struchkov Mark

Backend Java Developer

Короткая автобиография

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

Мой основной язык программирования – Java. Развиваюсь в основном в направлении backend разработки и DevOps: могу написать свой SSO сервер с использованием Oauth2, библиотеку для реализации ABAC, сервис для хранения файлов с использованием MinIO S3 и много чего еще. C декабря 2021 года активно осваиваю и использую в работе Quarkus для написания микросервисов в реактивном стиле.

Фронтом не занимаюсь и не планирую, но могу немного в HTML и CSS для души. Также мне нравятся задачи связанные с DevOps. Могу: настроить полный CI/CD, оптимально упаковать приложение в Docker Image, и написать DockerCompose, оптимизировать работу nginx, или настроить собственную домашню экосистему облачных сервисов.

Сейчас работаю в «Т1 Консалтинг» из группы компаний Т1 на позиции «Архитектор». Не смотря на небольшой стаж промышленной сразработки в 4 года, я техлид команды из 7 бэкендеров (3 сеньора, 1 мидл, 3 джуна). Наша команда разработала и поддерживает около 20 микросервисов, которые отвечают за различные коммуникации CRM: чаты, звонки, email, работа call-центра.

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

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

По настроению пишу статьи в свой блог о разработке на Java. Который посещают более 15000 уникальных пользователей в месяц. Это основной блог с большими статьями, а есть еще второй блог с небольшими заметками..

💼 Опыт работы

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

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

T1 CRM

Это CRM-система в классическом её виде: лиды, воронки, сделки. Моя команда занимается модулем коммуникаций, который включает в себя как call-центр для обработки обращений от клиентов из разных каналов связи, так и внутренние аудио/видео звонки, групповые видео-звонки, внутренние чаты. Мы разработали и поддерживаем 20+ микросервисов.

Также на основе моей OpenSource бибилотеки моя команда разрабатывала несколько Telegram ботов.

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

  • Разработка внутренних чатов. Позволяет пользователям CRM общаться между собой, а также создавать групповые чаты.
  • Разработка внешних чатов. Позволяет пользователям CRM внутри системы общаться с клиентами по Telegram, Email, Whatsapp, Viber
  • Разработка единого сервиса для взаимодействия с MinIO S3. Позволяет другим сервисам сохранять файлы. Отвечает за разграничение доступов и жизненый цикл ссылок.
  • Разработка коммуникационного центра - сервисов операторов и обращений от клиентов, которые поступают из внешних каналов.
  • Разработка нескольких Telegram ботов:
    • Telegram бот для пользователей CRM. Позволяет получать уведомления от системы, а также искать и просматривать основную информацию.
    • Telegram бот для участников конференций. Позволяет участникам конференции подписаться на мероприятие, просматривать рассписание и получать автоматические уведомления о событиях мероприятия. Также позволяет задать вопрос спикеру.
  • Проработка архитектуры модуля коммуникаций:
    • Определение сервисов и протоколов взаимодействия
    • Определение библиотек для шаринга между сервисами
    • Проработка схем GraphQL для взаимодествия

Технологии:

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

Senior Java Developer

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

Bug Tracking System

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

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

На этом проекте помогал начать разработку. Моей задачей было разработать сервис тикетов, который позволит: заводить задачи, назначать ответственных и так далее.

Технологии:

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

Middle Java Developer

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

Маркетинговая CRM-система

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

Система позволяет сегментировать клиентов на основе различных сложных фильтров. После чего проводить email рассылки через внешнего провайдера ExpertSender. Дополнительно 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

💩 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

🌟50🌟

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

Статьи:

Технологии:

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

🖊 uBlogger | GitHub

🌟240🌟

Пока это самый популярный проект. Это предыдущий шаблон моего блога для генератора статических сайтов Hugo.

Технологии:

  • Hugo
  • HTML
  • CSS
  • JavaScript

🌴 Haiti Framework | GitHub

Никто из нас не любит писать типичный-тривиальный код. Это мой набор прикладных библиотек, в которые я собираю интересные и полезные решения, которые потом могу использовать в других проектах.

Технологии:

  • Java 17
  • Spring

Навыки

Languages

  • Java 8-17
  • Go
  • Python

Frameworks

  • Spring Boot
  • Quarkus Reactive

Backend

  • REST
  • GraphQL
  • WebSockets
  • Kafka
  • Maven
  • Gradle

DevOps

  • Docker
  • Nginx
  • Gitlab CI
  • Drone CI
  • Linux

Database

  • Hibernate
  • PostgreSQL
  • Liquibase
  • AWS S3
  • Elasticsearch
  • MongoDB
  • JOOQ

Прочее

  • WebRTC
  • Git
  • Redis
  • Protobuffers
  • MyBatis
  • SOAP
  • JSON

Образование

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

Языки

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

Интересы

  • Большой теннис
  • Сериалы