
Опытный бакенд разработчик. Имею большой опыт работы с различным легаси кодом и быстрым вниканием в него для внесения изменений или выноса функциональности (.Net, Java). Соотвествено могу быстро оздавать скелетоны для сервисов на указанных языка с нуля. Есть опробованные идеи по улучшению архитектуры системы микросервисов и взаимодействия с фронтендом.
Могу работать в качестве тим лида, переключаться между задачами и решать вопросы с другими командами.


Выберите навык, чтобы посмотреть, какие тесты специалист уже прошел.
В рамках импортозамещения переносили функциональность монолита легаси системы на Оракле в отдельные микросервисы.
Приложение: Cервис на Spring Boot 2.7, JAVA 17(начинали с 8). Исполнение OpenShift вначала писали манифесты руками, потом появилась автоматизация от Сбера с полным циклом деплоя. Приложение исполнялось в виде двух инстансов (на одном или на обоих плечах).
База данных Postgres, работа через отдельный выделенный сервис Platform V Dataspace (тоже в нескольких экземплярах,_общение через их клиентскую библиотеку поверх Json RPC. Много интеграций со смежниками Kafka, gRPC, REST, Json Rpc.
Для мониторинга использовалось решение от Сбера Reflex выставляли много метрик плюс для анализа проблем ввел в базе свои системные таблицы журнал исключений (технический сбой приведший к исключению позволял легко находить самые частые ошибки, новые ошибки ит.д) и тех журнале (все ключевые запросы и ответы по документу, там же контролируемые ассерты в случая сбоя обработки).
Каждая бизнес цепочка разбивалась на значимые шаги мной был сделан микрофреймворк для workflow (в базе сохранялся текущий шаг, набор шагов, конфигурации для шагов). Шаг отдельный кубик ( класс) из которых можно было конструировать обработку. Цепочки выполнялись синхронно и асинхронно (при получение ответа от смежников сопоставление соответствующей цепочки).
Общий подход по взаимодействию со смежниками был следующий в случае вычитывания из кафки считываем как есть, сохраняем в базу и потом отдельно выбираем для обработки (возможность рестартовать обработку в случае ошибки). В случае отправки, формируем данные и потом отправляем отдельно с учетом RL смежников, Retry и Circuit Breaker.
В качестве кеша для справочной информации использовалось in memory Spring Boot стандартная реализация.
Автоматизация тестирование регресс на основе ява тестов с моками и эмуляцией ответов смежников, тесты гонялись раз в день и на релизной сборке, неоднократно находили серьезные дефекты. Также внедрил канареечный подход, когда с помощью небольшого класса можно было переключать выполнять новую логику или нет для заданного числа или по айди документов.
Задача: Перевод легаси монолита на Java c UI на Silverlight на микросервисную архитектуру в Docker, UI web.
с 03.2021 старт разработки, с 08.2021 тимлид команды бакенда и фактический архитектор проекта.
Достижения (командные): Мигрировали продакшены двух клиентов на новую архитектуру.
Развернули уаты ещё двух клиентов на новой архитектуре.
Архитектурные решения:
Взаимодейcтвие с UI websocket + protobuf. Всё общение через Nginx веб сокет обрабатывается выделенным gateway, задача которого посылать реквесты сервисам через очередь NATS и полученные от них ответы посылать в соотвествующий веб сокет.
Сервисы на .net core и java. Всё общение между сервисами через NATS (Nats Streaming в некоторых случаях) , протокол в виде протобуфа.
В качестве баз использовался Postgres и RethinkDB.
Для хранения состояния RethinkDB и Redis.
Решения выбранные согласно стандарту компании:
Мониторинг : интерфейс grafana, метрики prometheus, логирование локи, железо cadvisor.
Деплой: весь бакенд разворачивается в докере.
Организация тестирования и деплоя: конфигурация, yml файлы хранятся в гите в отдельных ветках под соотвествующий стенд/клиент. Все образы содержат информацию (ветка, версия, гит ревизия (первые 7)). Все параметры вынесены из yml в env (для облегчения процесса мержа).
Организация кодовой базы: Микросервисы и протоколы общения между ними в выделенных репах и сабрепах. Разработаня скелетон для быстрого создания с нуля микросервиса на .net core и java под использованную архитектуру.
07.2020-02.2021
Сеньор разработчик бакенда
Задача: Разработка нового сервиса для проверки лимитов и баланса.
Для обмена выбрал натс и протобуф. Решение перфоманс проблем, выявленных тестированием Jmeter для рест вызовов внешних систем клиента из лимит сервиса, оптимизация рест вызовов, поиск на чьей стороне проблема с помощью wireshark.
В последующем использовал полученные наработки для новой архитектуры.
Тимлид одной из команд, отвечающий за разработку портала управления и сервисов для ЦППК.
База данных: MSSQL для портала, MondoDB для сервисов.
Шина: Rabbit MQ.
Мониторинг: Zabbix.
Поддержка взаимодействия клиентского приложения на Silverlight c сервером на Java. Транспортный уровень. Бизнес-логика. Очень толстый клиент OOB взаимодействие по кастомному тсп ип протоколу. Продумал и реализовал апдейт клиентского приложения посредством разделения на загрузчик конфигурация и основную часть (поддержка как со стороны клиента так и со стороны веб приложения)
Факультет ИВЭ. Димломная работа Создание распределённой среды исполнения агентов на Java (jdk 1.02)