Я живу в г. Екатеринбург (бывший Свердловск). В 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
Большой опыт работы в 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
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
Администрировал локальную сеть. Управлял парком серверов на ОС Novell NetWare, Windows NT, FreeBSD, Linux. В последствии отвечал за Интернет в компании: установка маршрутизаторов (аппаратных Cisco и программных на Unix), настройка Firewall, а также широкого спектра Интернет-сервисов (VPN, DNS, E-mail, FTP, WWW, NTP и пр.)
В течение долгого времени администрировал сервер баз данных Oracle: оптимизация работы, резервное копирование
В последнее время профессиональные интересы сместились в сторону Web-празработки и администрирование Web-северов.
Администрирование локальной сети. Управление сервером на базе операционной системы Novell NetWare. Настройка пользовательских компьютеров (DOS, Windows)
Радиационная безопасность человека и окружающей среды
Инженер-электронщик