Java/Kotlin backend разработчик
Работал на разнообразных проектах, находящихся на разных этапах развития, на новом и старом стеке (в том числе в роли тех.лида):
- разработка с полного нуля
- активное развитие и вывод в production
- глубокая поддержка с точечными доработками
Системы с разной сложностью бизнес доменов, высоконагруженные, распределенные, с разными стилями взаимодействия компонентов.
Нравится проектировать и разрабатывать отказоустойчивые решения на событийно-ориентированной микросервисной архитектуре.
Имею опыт проведения собеседований, наставничества и организации стажировок.
Выступал c докладами внутри компании и один раз на крупной конференции с темой "Гексагональная архитектура"
Готов рассмотреть вакансии только с возможностью полной удаленки и работы с личной техники.
(ранее компания называлась Samokat.tech)
Проект: Warehouse Management System (система управления складом)
Распределенная система со сложным доменом, построенная на хореографии микросервисов. Пришел на проект на самом его старте, большую часть времени работал над core функционалом системы - остатки и топология склада. В части складских остатков мной был реализован почти весь функционал, на который опирается каждый критически важный компонент системы.
Принял участие в этапах: начало разработки, пилотный запуск в production, масштабирование системы
- Написание кода системы
- Проведение код-ревью
- Ревью технических и архитектурных решений
- Проектирование контрактов взаимодействия внутри системы
- Работа с требованиями БА (работа в команде была устроена без СА)
- Участие в разборе инцидентов
Стек:
Kotlin;
Spring boot;
kotest, mockk;
PostgreSQL;
Apache Kafka;
Hazelcast;
Swagger/OpenApi;
spring-boot-actuator, prometheus, Grafana;
k8s, Argo CI/CD;
Gradle, Docker, Gitlab, Nexus;
Проект: Платформа производства ИТ-продуктов SFERA, Общеплатформенный сервис уведомлений
Высоконагруженный общеплатформенный сервис уведомлений на микросервисной event-driven архитектуре, работающий с большим количеством каналов доставки уведомлений. Разработан с полного нуля, выведен в production, успешно эксплуатируется и дорабатывается. Начал работать в роли тех.лида первые месяцы как ИО из-за долгого и неуспешного поиска кандидата, далее остался в ней на постоянную.
Принимал участие во всем процессе аналитика-разработка-тестирование-delivery
- Написание кода системы
- Разработка архитектуры системы
- Определение тех.стека
- Выстраивание процесса разработки в команде
- Управление командой разработки
- Проведение code review
- Планирование спринтов
- Участие в конфигурировании CI/CD и тестовых окружений
- Релизный менеджмент
- Решение кризисных ситуаций
- Проведение собеседований кандидатов
- Наставничество/менторинг
Стек:
Java 17;
Spring Boot, Spring-Web-Flux, Spring Security, Spring-Data-r2dbc;
JUnit, Mockito;
PostgreSQL;
resilience4j;
Apache Kafka;
WebSockets;
Swagger/OpenApi;
log4j2, EFK;
spring-boot-actuator, prometheus, Grafana;
k8s;
Gradle, Docker, TeamCity, Nexus;
2. Проект: Банк "ВТБ", Расчеты с самозанятыми
Многоканальное приложение с большим количеством фронтов (web, mobile, open api) для b2c переводов самозанятым с использованием Системы быстрых платежей и ФНС. Имеет около 30 различных интеграций с внутренними сервисами (REST, Kafka).
На момент работы вышло в production и находилось в стадии активной разработки.
- Начал работу на проекте на этапе его активной реализации, мной было реализовано много ключевого функционала, проект успешно был выведен в production и продолжал дорабатываться в быстром темпе.
- Профилировал и устранял проблемы связанные с ошибками допущенными при использовании реактивного программирования.
- Внедрил механизмы отказоустойчивости (retry, circuit breaker, rate limiter).
- Внедрил механизм transcational-outbox для записи сообщений в брокер.
- Активно взаимодействовал с командой DevOps для улучшения CI/CD процесса и настройки тестовых окружений.
- Разбирал инциденты и проблемы в среде production при взаимодействии с саппортами.
- Участвовал в оценке задач и планировании спринтов.
- Занимался проработкой и оценкой технических решений и рисков при внедрении.
- Де-факто выполнял роль лидера компетенции бэкенд на проекте. Координировал взаимодействие в кросс-функциональной команде.
Задачи:
выполнение разработки функционала приложения на сервисной архитектуре; декомпозиция и оценка задач под разработку;
планирование спринтов;
проведение код-ревью;
профилирование и устранение узких мест в компонентах системы;
разбор и устранение инцидентов, взаимодействие с саппортами;
Стек:
kotlin, kotlin-coroutines;
Spring Boot, Spring-Web-Flux, Spring Security, Spring-Data-r2dbc;
kotest, mockk;
PostgreSQL;
resilience4j-kotlin;
Quartz Scheduler;
Caffeine Cache;
Apache Kafka;
REST, WebServices,
Swagger;
log4j2, logbook, EFK;
spring-boot-actuator, prometheus, Grafana;
Gradle, Docker, TeamCity, Nexus;
Openshift, F5 load balancer;
1. Проект: Банк "Ренессанс Кредит", Кредитный конвейер
Высоконагруженная система для автоматизированной обработки кредитных заявок с торговых точек и от внутренних банковских операторов. На момент работы одна часть системы находилась в стадии поддержки, другая часть в стадии доработок.
- На проект пришел для крупной доработки существующего функционала. Все задачи были выполнены и успешно вышли в production. Новый функционал и старый функционал монолитов был вынесен в микросервисы.
- Привел в порядок и единообразие CI/CD систем проекта с использованием Gitlab CI (на проекте не было выделено DevOps специалиста), задокументировал функционал скриптов.
- Настроил отправку логов в ELK.
- Взаимодействовал со 2-й линией тех. поддержки для оперативного устранения инцидентов в среде production.
- Переписал части системы использующие concurrency с использованием более современных средств java и учетом допущенных ошибок прошлыми разработчиками, что позволило в разы ускорить выполнение job приложения, чувствительных ко времени исполнения.
Задачи:
выполнение разработки функционала приложения на микросервисной и монолитной архитектуре;
разделение монолита на микросервисы;
декомпозиция и оценка задач под разработку;
проведение код-ревью;
настройка, улучшение и отладка CI/CD процесса/написание CI/CD скриптов; (Gitlab CI, bash, python, groovy);
разбор и устранение инцидентов, взаимодействие с саппортами;
Стек:
Java 8, Concurrency;
Spring Boot, Hibernate, JdbcTemplate, IBatis;
JUnit, Mockito;
Hazelcast;
Oracle Database,
Swagger;
Maven, Docker, Gitlab CI, Nexus, Harbor;
log4j2, ELK;
REST, WebServices;
Openshift, Nginx;
Проведение стажировки
Поучаствовал в организации и проведении стажировки по направлению java-бэкенд, лично курировал 2-ух стажеров, которые впоследствии доросли до junior-разработчиков, вышли на крупные банковские проекты и успешно продолжают работать.
Проект: Личный кабинет клиента энергосбытовой компании
Приложение для передачи показаний счетчиков, оплаты услуг ЖКХ, заключения договоров на обслуживание, заказа услуг, работы с документами.
На момент работы находилось в стадии активной разработки и первый раз выходило в production.
- Изначально подавал заявку на стажировку в компании, но после прохождения собеседования и выполнения тестового задания сразу получил приглашение о работе на проекте.
- Занимался реализацией функционала микросервисов, в основном массовыми операциями (рассылка уведомлений, синхронизация локальных данных системы с биллингом и пр.).
- Писал большие SQL-запросы для построения отчетов, PL/SQL процедуры в Oracle для переливания большого кол-ва сложных данных с изменением структуры хранения
Задачи:
выполнение разработки функционала приложения на микросервисной архитектуре;
проектирование микросервисов;
активная работа со слоем хранения данных;
Стек:
Java 11;
Spring Boot, Spring Data, Hibernate;
JUnit, Mockito;
Apache Kafka;
Hazelcast;
Oracle Database, MongoDB, Clickhouse;
Maven, Docker, Jenkins, Nexus;
log4j2, ELK;
Openshift;
ФИТиКС, Кафедра АСОИУ, Программная инженерия (Не оконченное)