Дмитрий Харин

Общий трудовой стаж - 13 лет

Team Lead / Ведущий Java разработчик

May 2017 - настоящее время ООО ГК "Корона Авто"

java 8, spring boot 1.5, angular 5, typescript, postgreSQL, redis, rabbitmq, docker

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

Мои обязанности:

  • Приемка кода от стороннего подрядчика. Проектирование архитектуры системы (ядро интернет-магазина) и микросервисов. Написание кода (back + front).
  • Управление командой из 2-х backend разработчиков, 1-го frontend разработчика, 1-го тестировщика, 1-го devops.
    Ставил и разбивал задачи, полученные от аналитика, понятные разработчикам. Разработал code style и архитектурные принципы разработки приложения. Контролировал выполнение задач с технической стороны. Обучал junior разработчиков.
  • Написание и разработка тестов на базе junit + mockito.
  • Настройка CI / CD на базе jenkins и docker, до того как в команде появился devops.
  • Участвовал в настройке процессов agile в jira, чтобы у всех членов команды было четкое понимание объема работ в спринте, а у руководителя отдела было понимание, в какой стандии находится разработка определенных задач.
  • Проведение собеседований, набор людей в команду.

Разработал и спроектировал следующие сервисы:

  • Микросервис обменна данными v3.0
    Основной целью сервиса является асинхронный обмен данными между различными сервисами компании (включая 1С ERP) по протоколу http. Имеет ui для администрирования и мониторинга событий, а так же api для zabbix для уведомлений о внештатных ситуациях по смс / почте.
  • Микросервис резервирования v1.0
    Основной целью сервиса является возможность резвервирования товара с отложенным подтверждением в мастер системе, а так же получения свободного остатка. Клиент резервирует товар почти мгновенно, параллельно происходит синхронизация остатков с 1С ERP.
  • Микросервис файлов v2.0
    Основной целью сервиса является возможность работы с публичными файлами (загрузка/скачивание), а так же механизм работы с приватными файлами с особыми ограничениями на скачивание (без прямых ссылок).
  • Микросервис фоновых задач с расписанием v1.0
    Основной целью сервиса является запуск задач в микросервисах по расписанию, а так же ui для настройки / просмотра и запуска.

Так же в свободное время реализовал веб-сайт для корпоративного футбола. Сайт позволяет добавлять игроков, формировать составы, а так же выбирает игрока, отвечающего за стирку манишек (текущая версия учитывает кол-во игр, дату начала карьеры, кол-во стирок и несколько других параметров).

Старший web разработчик

Dec 2014 - Feb 2016 ООО ГК "Корона Авто"

php 5, php 7, symfony 2, symfony 3, mysql 5.6, mongodb 3, redis 2, rabbitmq

Доработка и поддержка крупного оптового интернет-магазина по продаже грузовых автозапчастей.

Мои достижения в данной компании:

  • Разбил сильно переписанный монолит на основе cms 1C Bitrix на микросервисы на основе фреймворка symfony.
  • Микросервис обменна данными v1.0 и v2.0
    Сервис заменил множество старых обменов на основе фоновых заданий, которые загружали изменения из excel файлов. Цель микросервиса - создать платформу обмена данными на основе протокола http, которая использует событийную модель, а не модель фоновых заданий с расписанием. Микросервис уменьшил время обмена данных с 3-10 минут до 1-2 секунды, позволял искать по данным обменов и имел административную часть для настройки и мониторинга обменов.
  • Микросервис ценообразования v1.0
    Сервис позволял создавать произвольные модификаторы цены с произвольными условиями применения (на текущий момент используются более 20) и был оптимизирован для расчета цены для большого количества запросов.
  • Микросервис файлов v1.0
    Цель сервиса - хранение публичных и приватных файлов, которые можно было скачать по приватным токенам без прямых ссылок с различными условиями проверки доступа (например, чеки, документы отгрузки и т.д.)

Также я занимался настройкой веб-сервера на базе debian 8/9:

  • Установка и обновление ПО
  • Оптимизация настроек
  • Настройка репликации данных mysql

Старший 1С Программист

Apr 2012 - Jun 2014 ООО ГК "Корона Авто"

Профессиональная разработка ERP системы компании на базе конфигурации 1С Комплексная автоматизация:

  • Разработка модулей интеграции с интернет магазином на базе 1C Bitrix (обмены НСИ, такие как остатки, заказы, номенклатура, контрагенты и т.д.)
  • Разработка модулей интеграции со сторонними сервисами: dadata.ru, заггрузка заказов из партнерских систем, рассылка НСИ партнерским сервисам.
  • Разработка новых подсистем учета (резервирование, взаиморасчеты, подсистема задач для менеджеров для контроля различных процессов компании). Все подсистемы достаточно серьезно отличались от типовых.
  • Оптимизация скорости работы конфигурации, обработки, отчеты.

1С Программист

Dec 2010 - Mar 2012 Волгаcофт

В данной компании я развиваюсь как 1С программист, получаю сертификаты:

Занимаюсь поддержкой и развитием внутренней ERP системы на базе 1С Управление Предприятием 1.2 и являюсь одним из основных разработчиков программного продукта Управление по целям. Поддерживая сайты компании на cms bitrix и joomla.

Студент

Sep 2005 - Aug 2010 Политехнический университет

Кафедра электроники и вычислительной техники.

Начиная с первого курса, я активно занимался программированием в среде Delphi 7 и QtCreator (графики, визуализация физических процессов), а так же активно помогал другим студентам в написание программ и освоении учебного материала. Моей дипломной работой было приложение на C++ под Linux Ubuntu 10.04 для распознавания паттернов ЭЭГ сигналов с помощью метода опорных веторов (SVM Machine). Суть проекта была написать алгоритм, который можно обучить находить нужные участки в ЭЭГ пациентов, на основе базы данных ЭЭГ больных пациентов.

Забавный факт, так как меня к программированию всегда тянуло больше, чем к физике, для одной лабороторной работы по физике, вместо 2D графики я реализовал полноценную модель кабинета с лабороторной, работой, возможностью перемещения и управления приборами. Для этих целей я использовал связку Delphi + 3D движок GL Scene, а так же 3D модели из Half Life и др. Преподаватель не оценил, но разочек пробежался :)