Алексей Смирнов (cmirnov), Россия, ЕкатеринбургАлексей Смирнов (cmirnov), Россия, Екатеринбург

Алексей Смирнов

всю жизнь учусьБэкенд разработчикВеб-разработчикСредний (Middle)
Не ищу работу

Контакты

Контакты скрыты настройками приватности
Опыт работы: 29 лет и 4 месяца
Регистрация: 22.07.2024
Последний визит: 4 месяца назад
Гражданство:
Местоположение: Россия, Екатеринбург
Дополнительно: готов к удаленной работе
Знание языков:

Обо мне

Я живу в г. Екатеринбург (бывший Свердловск). В 1996 г. я закончил Физико-Технический Факультет УПИ (сейчас это УрФУ им. Ельцина). По специальности я инженер-электронщик.

Всю свою профессиональную деятельность я так или иначе связан с компьютерами и программированием.

Magento я занимаюсь с 2011 года.

С 2021 года работал backend-программистом в Компании «Оджетто». Её клиентами являются крупные корпоративные клиенты (Puma, L'Oreal, Canon, OBI, Золотое яблоко, Технониколь и другие). Получил богатейший опыт работы в Enterprise eCommerce. В частности, я работал в команде по сопровождению ИМ Компании «Технониколь» на Magento

С 2023 года пишу на языке Go. В частности, мною был реализован довольно большой кусок микросервиса по расчету доставки для Magento. Компания "Технониколь" переходит от монолитной архитектуры к микросервисной. В частности, для увеличения скорости страницы Оформления заказа, было принято решение перенести расчет доставки из Magento во внешний микросервис.

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

Сервис принимает параметрами данные из Magento (содержимое корзины, список способов доставки и пр.). Дальше, соответственно, запускается расчет. При расчете используется вся мощь языка Go: параллельные (конкурентные) вычисления с помощью горутин

Для собственной доставки есть справочник автомобилей и матрица со стоимостью перемещений разными автомобилями из разных Городов Отгрузки (ГО) до РЦ. Сложность в том, что нужно перебирать все варианты перемещений товаров из корзины: всеми доступными автомобилями из всех возможных ГО до РЦ (возможна ситуация, когда доставка части заказа из определенного ГО дешевле)
В конце в горутине определяет доставку с минимальной стоимостью и возвращает результат в канал

В конце результаты собираются из всех горутин, форматируются и отправляются в Magento.

На каждом этапе максимально возможно используется кэширование (локальное и внешнее в redis)
Делается обработка ошибок. Например, если, какой либо способ доставки не посчитался или посчитался с ошибкой (например, внешний Api Курьерской Службы ответчает 500 ошибкой), то выводится заглушка, что в данный момент способ не доступен

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

Пример моего pet-кода на Go можно посмотреть здесь https://github.com/smirnov-a/weatherbot

Навыки

Git
SQL
ООП
Docker
PHP
Golang
REST
gRPC
Английский язык

Опыт работы

  • IT-интегратор для крупного eCommerce: Строим интернет-магазины для корпораций и брендов, входящих в топы рейтингов
    ТаганрогОт 100 до 1000 сотрудников
    Бэкенд разработчик (Средний)Web-программист
    Апрель 2021 — Июнь 2024 (3 года и 3 месяца)

    Большой опыт работы в Enterprise eCommerce.

    Backend программирование Magento для высконагруженного Интернет магазина.

    Клиентами компании являются крупные корпоративные заказчики: Puma, L'Oreal, Canon, OBI, Золотое яблоко, Технониколь и др. Я работал в команде «Технониколь» по поддержанию ИМ https://shop.tn.ru

    Разработка REST-сервисов: API для различных, в том числе корпоративных, сервисов (например, создание заказов по REST)

    Программа лояльности: сложная корпоративная логика по работе с ценами, маркетинговые правила с особенной логикой (например, бонусные баллы за отзыв о товаре, скидка по купону на доставку и пр.)

    Реализация различных методов оплаты: Equiring для различных банков, СБП

    Реализация различных способов доставки

    Пример моего кода можно посмотреть здесь https://github.com/smirnov-a/emagento_comments (демо https://e-magento.ru/post/module-emagento-comments.html)

    Помимо Magento я активно в течение года программировал на Go. Компания "Технониколь" переходит от монолитной архитектуры к сервисной. В частности, для увеличения скорости страницы Оформления заказа, было принято решение перенести расчет доставки из Magento во внешний сервис.

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

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

    Для собственной доставки есть справочник автомобилей и матрица со стоимостью перемещений разными автомобилями из разных Городов Отгрузки (ГО) до РЦ. Сложность в том, что нужно перебирать все варианты перемещений товаров из корзины: всеми доступными автомобилями из всех возможных ГО до РЦ (возможна ситуация, когда доставка части заказа из определенного ГО дешевле)
    В конце в горутине определяет доставку с минимальной стоимостью и возвращает результат в канал

    В конце результаты собираются из всех горутин, форматируются и отправляются в Magento.

    На каждом этапе максимально возможно используется кэширование (локальное и внешнее в redis)
    Делается обработка ошибок. Например, если, какой либо способ доставки не посчитался или посчитался с ошибкой (например, внешний api Курьерской Службы ответчает 500 ошибкой), то выводится заглушка, что в данный момент способ не доступен

    В следствие того, что расчет происходит параллельно и все данные по-возможности кэшируются, скорость расчета стоимости доставки для страницы Checkout'а увеличилась многократно (по сравнению с Magento)

    Данный сервис попал в Production и хорошо себя зарекомендовал под нагрузкой

    Пример моего кода на Go можно посмотреть здесь https://github.com/smirnov-a/weatherbot

  • ООО "ИнтерЮН"
    Екатеринбург
    Веб-разработчик (Средний)Web-программист
    Январь 2013 — Апрель 2021 (8 лет и 4 месяца)

    Full Stack web-разработка. Установка и администрирование WWW-сервера компании (https://uniland.ru)

    BackEnd. База данных (в данном случае MySQL, но имею опыт работы с другими базами, в т.ч. Oracle). WWW-сервер Nginx (гибкая настройка, в томчисле от DDoS). Движок магазина Magento. Разработка собственных модулей на самом низком уровне (например, собственный SOAP-сервис для обмена данными с КИС). Могу предоставить исходники модуля Интернет-эквайринга (для работы со Сбербанком)

    FrontEnd. HTML, CSS, JavaScript, JQuery. Из JS-фрэймворков знаю Vue.js, KnockoutJS (который используется в Magento2). Мобильная версия на отдельном домене "m.uniland.ru" (определение мобильных клиентов и переадресация на уровне www-сервера). Адаптивный дизайн. CSS-фрэймворк Bootstrap.

    Git, Composer, Webpack

  • Оптовая торговля, Интернет-магазин
    От 100 до 1000 сотрудников
    Системный администратор (Старший)Администратор сетей и коммуникаций
    Март 1996 — Январь 2013 (16 лет и 11 месяцев)

    Администрировал локальную сеть. Управлял парком серверов на ОС Novell NetWare, Windows NT, FreeBSD, Linux. В последствии отвечал за Интернет в компании: установка маршрутизаторов (аппаратных Cisco и программных на Unix), настройка Firewall, а также широкого спектра Интернет-сервисов (VPN, DNS, E-mail, FTP, WWW, NTP и пр.)
    В течение долгого времени администрировал сервер баз данных Oracle: оптимизация работы, резервное копирование
    В последнее время профессиональные интересы сместились в сторону Web-празработки и администрирование Web-северов.

  • Государственная Налоговая Инспекция по Кировскому району г. Екатеринбурга
    Администратор серверов (Средний)Ведущий специалист отдела АСУ
    Март 1995 — Апрель 1996 (1 год и 2 месяца)

    Администрирование локальной сети. Управление сервером на базе операционной системы Novell NetWare. Настройка пользовательских компьютеров (DOS, Windows)

Высшее образование

  • УПИ

    Уральский политехнический институт
    Москва40 выпускников
    Физико-технический
    Сентябрь 1990 — Июнь 1996 (5 лет и 9 месяцев)

    Радиационная безопасность человека и окружающей среды

    Инженер-электронщик