Do IT like a Russian: чем крупный ритейл может удивить технического директора
Привет! Меня зовут Валентин Щитов, я CIO компании »Магнит».
До момента прихода в «Магнит» весной 2020 года я руководил IT-департаментом большого e-commerce проекта и за 10 лет сформировал полное представление, как работает онлайн-ритейлер.
Однако и офлайн-ритейлер с историей в четверть века меня удивил. Приятно или нет — расскажу дальше.
Валентин Щитов: Писал российский e-commerce с нуля. Все еще любит РНР несмотря ни на что. Учится играть на фортепиано.
Размер имеет значение
Снаружи кажется, магазин устроен просто — приехала машина, разгрузили, товар выложили на полку, кассир выбил чек — всё. Но когда в сети 22 000 розничных магазина, то даже перечислить все связывающие их IT системы — нетривиальная задача.
Хотя покупатель видит на полках магазинов пару сотен уникальных товарных позиций, весь накопленный объем каталога «Магнита» уступает разве что «Amazon» и содержит более 760 тысяч SKU. При этом система управления мастер-данными ежедневно актуализирует цены. Делать это в ручном режиме было бы безумием.
Автоматизация складского комплекса в десятки тысяч квадратных метров — дело нелегкое. У «Магнита» таких — 45. Везде поддерживаются процедуры приемки, сортировки и размещения товара, контроля качества и отгрузки, а ещё долгосрочное хранение и формирование «оперативного запаса» для бесперебойной работы сети в течение необходимого срока. Кроме того, каждый из тысяч магазинов — это, по сути, тоже прогрессивный склад: заложена логика комплексной приемки, когда сверяется каждый товар по нескольким показателям качества, инвентаризации, продажи и даже перемещения между торговыми точками.
Поэтому «Магнит» живет на тысячах серверов, использует сотни тысяч единиц сетевого оборудования. Всё упаковано более чем в 600 информационных систем и сервисов.
И хотя звучит удивительно, в основном всё создавалось собственными силами.
Тру айти родом из 90-х
Сегодня в IT команде около 3500 специалистов, половина из них — разрабатывает и внедряет, другая половина осуществляет поддержку и сопровождение, в том числе на местах.
В конце 90-х все было скромнее. Компания зародилась в Краснодаре, там же открывались первые магазины. Отдел IT тогда состоял из 6 человек.
Магазин »Магнит» в конце 1990-х
Самой первой собственной разработкой стала программа управления складом и учетом торговых операций. Её переписывали из готового продукта под клиент-серверную архитектуру и операционную систему Windows, в ту пору стремительно набирающую популярность. Так родился »Тандер-склад» — основная система товарного учета и управления товародвижением, интерфейс написали на Delphi, базу данных — на Firebird.
Кстати,»Тандер» — это юридическое название »Магнита», и в Краснодаре его любят чуть ли не больше, чем знакомое всем название бренда.
И это тоже »Магнит», Сочи
В 2006 году стремительного роста сети не выдержала основная база данных, ее перенесли на Oracle, и до сих пор она живет под аббревиатурой БДСМ — »База данных сети Магнит». Со временем мы устали жить в ̶с̶т̶и̶л̶е̶ БДСМ и постепенно распиливаем базу.
«Магнит» охватил 3700 населенных пунктов от Центрального округа до Сибири. Примерно в 10% магазинов нет стабильного интернета. Поэтому для складской программы важна децентрализация: наша система способна подниматься внутри магазинов даже при проблемах с интернетом и слабой мощности оборудования.
«Тандер-склад» за годы существования »оброс» артефактами и доработками, и очевидно, сегодня требует реформации. Из больших коробок невозможно получить аналогичный функционал, поэтому мы «переписываем» систему. Такая задача особенно нетривиальна, потому что большой сети необходима целостность цепочки поставок: мы обновляем складскую, транспортную системы, систему прогнозирования вокруг цифрового ядра на SAP.
Один из наших распределительных центров — складов
Что на самом деле под капотом у фуры с продуктами
До погружения в инфраструктуру компании я ожидал, что коробочных решений будет больше. Оказалось, «Магнит» долго шел по пути собственной разработки: в начале нулевых в условиях «дикого капитализма» спрогнозировать поведение потребителя было трудно. Было сложно предвидеть, какая коробочная система подойдет, а какая нет.
»Магниту» нужно было создавать кастомизированные сервисы, чтобы давать возможность покупать в любой точке сети в любой момент времени. Не случайно следующая ключевая историческая система — касса.
Касса самообслуживания
Кассу писали на C++, и через нее до сих пор проходит около 15 миллионов чеков в день.
Система работает автономно почти на любом железе и будет доступна даже в условиях Армагеддона.
Такая IT-платформа обеспечивала взрывной рост сети. Это была невероятная скорость: по сути, открытие магазина происходило, как гонка:»Вывеска есть, товар есть! Кассовое оборудование? — Стоит. — Открываем!»
Компания культивировала подход «всё своё». Так построили собственные дата-центры — у нас их четыре — раньше дата-центры я видел только чужие.
И всё же такая история развития информационной части »Магнита» нетипична для крупного бизнеса. Сейчас однозначно назвать такой подход преимуществом нельзя, скорее, это накопленная сложность.
Неизвестное об известных технологиях
В »Магните» я открыл привычные для себя технологии с новой стороны. Например, мои представления о возможностях 1С были, скажем так, неполными. Здесь я увидел, что реально можно выжать из этих систем.
Корпоративная информационная система (КИС) ERP в »Магните» — это более 20 систем на платформе 1С и 86 ТБ информации. В ней ежедневно создают сотни тысяч документов и проводят оплаты на десятки миллиардов рублей.
Центр управления кассами ежедневно формирует 15 миллионов платежных документов, создает сводную аналитику и сверяет данные по видам оплат, собирает отчеты с учетом каждой транзакции в разрезе каждого магазина.
А еще кассу нельзя просто взять и унести в другое место: контроль места регистрации в случае несовпадения данных блокирует работу и сигнализирует о нарушении.
Единый Центр управления кассами
Система Управления Транспортным Предприятием (УТП) вряд ли имеет аналоги в мире 1С. У »Магнита» одна из крупнейших в Европе логистических сетей — УТП контролирует более 10 000 единиц собственной техники через онлайн мониторинг. Система обрабатывает около 130 тысяч рейсов в месяц и планирует маршруты движений, контролирует прибытие на точки, автоматически формирует документы при разгрузке/погрузке. Она же обслуживает взаиморасчеты, автосервис и даже медосмотр водителей.
Т̶о̶в̶а̶р̶ы̶ Технологии на любой вкус
Масштаб сети требует использовать enterprise-фреймворк управления архитектурой — для более чем 600 информационных систем выбрали методику TOGAF (The Open Group Architecture Framework). Мы уже используем корпоративную шину и постепенно переходим на более прогрессивное решение SAP PI/PO.
Результат архитектурного подхода — архитектурный репозиторий, где хранятся паспорта информационных систем и сервисов, паспорта технологий из технологического радара, а также большое количество архитектурных артефактов.
Технологический радар компании включает около 210 технологий, так что проще сказать, чего у нас нет. Назову лишь самые распространенные инструменты: Java, Python, Swift, Kotlin, C#, С++, PHP, Delphi, Oracle, PostgreSQL, продукты SAP, 1С.
Наш техрадар отражает четыре стадии работы с технологией: Trial (пробуем осторожно), Assess (применяем активнее), Adopt (внедрили и распространяем) и Hold (не расширяем или выпиливаем).
Технический радар команды омниканальности
Вот, новый поворот — жажда трансформации
Сложившиеся подходы в IT отлично решали задачи »классического ритейлера». Но сейчас нам важно быть омниканальными и постоянно запускать новые направления. Так появилась необходимость совершить цифровую трансформацию.
Наша главная цель — создать вокруг бренда »Магнит» экосистему комплементарных сервисов на базе SuperApp.
С учетом масштабов мы смело поворачиваем наш грузовик, почти не сбавляя скорости.
Упрощенно, IT трансформация предусматривает четыре направления:
обновить архитектуру;
развить инфраструктуру дата-центров, PaaS (выход в облака) и Collocation;
ускорить time to market;
создать центры экспертиз и сформировать новую, более открытую культуру.
Руслан Волков на митапе -«DevOps: от SVN до pipeline в GitLab»
Мы классифицировали все системы по категориям и для каждой категории выбрали стратегию:
выключаем или уже выключили отжившие части;
заменяем системы крупными коробками;
продолжаем развивать с некоторыми доработками;
пишем с нуля, так как на рынке нет аналогов, а у нас есть экспертиза.
Важный вопрос в рамках общей стратегии — сократить релизный цикл до среднего показателя в 14 дней. У нас уже есть системы в таргете, а есть такие, цикл обновления которых 1–3 месяца. Это очень долго. Для этого мы развиваем DevOps подход.
Первопроходцами в 2018 году стали команды разработки СУАГ — платформенной системы управления ассортиментными матрицами. Затем мы отобрали семь команд и запустили проекты волнами по направлениям, которые приносят ощутимое business value. Цель этих команд — пройти все шаги по автоматизации и сохранить экспертизу таким образом, чтобы команда самостоятельно отслеживала и ускоряла релизный цикл на основе метрик из Jira.
Мы строим DevOps на стеке Kubernetes, Ansible, Helm, Terraform, Docker, Grafana Loki, Prometheus. Многое предоставляем как сервис. Сейчас идет пилотирование трех внутренних систем, одна из которых — SSO сервис.
Кроме того, мы расширяем инфраструктурные мощности. Чтобы избежать любых ограничений, выбрали партнера для Colocation, вкладываем ресурсы в Tier III ЦОД, используем распределенные облачные хранилища PaaS. В PaaS клауде уже запущены новые проекты — e-commerce и онлайн-сервисы. Корпоративная платформа данных организована на решениях Teradata, Oracle Exadata, Informatica Hadoop. Здесь начинается Big Data.
Технические головоломки нового времени
Во время активной трансформации продукта перед компанией встает много нестандартных задач. К примеру, мы создали собственную платежную систему Magnit Pay (Python/Go, Swift, Kotlin) для оплаты товаров виртуальной картой »Магнит». Покупатель получает бонусы по программе лояльности, а компания — экономию на эквайринге.
Обсуждаем мобильное приложение в коворкинге на Белорусской
Пример интересной запутанной задачи — решение проблемы разлогинов. Мобильное приложение »Магнит: акции и скидки» запускали вместе с подрядчиком и ориентировались в первую очередь на скорость. После каждого обновления приложение «взлетало», сейчас там около 5 миллионов пользователей, а цель — 50 миллионов, то есть мы хотим, чтобы каждый участник программы лояльности пользовался приложением.
Проблема разлогинов проявилась не сразу, постепенно росла и в какой-то момент стала критической. Разлогирование шло у всех раз в 30 дней.
Несколько подсистем влияли на время авторизации, время жизни сессий в них было разное, от 30 до 365 дней. Мы привели время жизни к единой величине, но проблема не исчезла. Оказалось, что при обновлении токенов не обновлялось время жизни сессии. Однако и это решение не избавило от проблемы. Тогда мы изучили графики ошибок сервисов и поняли, что атаки фродеров влияют не только на нагрузку, но и на работоспособность сервисов. Некоторые из них давали ошибочный сигнал о том, что доступ запрещён из-за невалидных сессий. Хотя дело было в нагрузке. Мы научились избегать разлогинивания пользователей, даже когда от сервера приходила ошибка авторизации. Одновременно настроили WAF (файрвол веб-приложений) и попутно решили проблемы фрода и нагрузки.
Кстати, так как проблема разлогинов ушла не моментально, мы не могли изменить время жизни уже созданных токенов в Keycloak. Поначалу думали, что можем банить пользователей файрволом, поэтому покрыли аутентификацию и авторизацию системными метриками. Это позволило явно наблюдать, как наши действия влияют не только на мониторинг бекенд-сервисов, но и на обычное использование приложения.
Приложение «Магнит: акции и скидки»
В конце 2020 года мы провели редизайн приложения. Часто бывает, что перезапуск приложения провоцирует недовольство, а у нас получилось наоборот — рейтинг приложения в store заметно вырос: с 2.2 до 4.5 в App Store и 4.2 в Google Play Store.
С великой силой приходит разумная стандартизация
В «Магните работает больше 315 000 человек — это почти население Исландии. Это крупнейший частный работодатель в стране и крупнейший лично в моей карьере.
Управлять технологическим многообразием в »Магнит» — значит идти по пути разумной стандартизации. Это большая ответственность и настоящий технологический challenge.
Мы не говорим, что сейчас возьмем и »всё перепишем». Скорее нужно навести порядок: выводить из эксплуатации ненужное, заменять, включать в pipeline внедрение крупных коробок, перезапускать и дорабатывать. В крупном ритейле невозможно всегда двигаться в одинаковом темпе, это кропотливая работа: системы разбросаны по этапам жизненного цикла, к каждой группе нужен особый подход.
С другой стороны, время стремительных перемен — это большой простор в плане выбора технологий и реализации решений.
Например, в молодой команде разработки онлайн сервисов мы движемся очень быстро, используем инструменты Kotlin, Swift, Golang, Python, PHP, GraphQL, Grafana и Kubernetes.
Я сторонник плавного, но уверенного движения в выбранном направлении. Мы пересматриваем радары своих технологий раз в квартал. Что-то ставим на hold, но и в trial привносим немало нового.
При этом нужно периодически осматривать «накопленное богатство», сокращать излишнее многообразие и внедрять новые технологии, таким образом контролируя стоимость владения. Наша цель — уменьшить TCO на 2022 год на 200М рублей.
Расширяем магнитное поле
»Магнит» — самый известный IT-работодатель… в Краснодаре. В 2019 году компания поменяла отношение не только к информационным системам, но и к поиску талантов. Как следствие, создали два центра разработки: в Иннополисе, недалеко от Казани, и в подмосковном Сколково.
Наша IT команда на митапе в Иннополисе
В Сколково мы тестируем идеи, которые пока не подходят для прямых инвестиций, но представляют бизнес-интерес. Если нас заинтерсовала какая-то инновация, мы реализуем пилот. Так команда за год рассматривает около 2000 проектов.
Ритейл — мир физических объектов, поэтому у нас есть интерес к IoT-решениям. Например, к датчикам, которые следят за состоянием покрышек. В нашем автопарке более 4000 грузовиков. Любая поломка из-за износа покрышек не только увеличит логистическое плечо, но и создаст опасность на дороге. IoT-решение вовремя сообщает о необходимости замены и помогает поддерживать автопарк в идеальном состоянии. Датчики недавно протестировали, сейчас обрабатываем первые результаты.
IT-лаборатория в Иннополисе — автономная команда EMMobile, которая разрабатывает систему для терминалов сбора данных и других корпоративных мобильных устройств.
Сотрудник склада с терминалом сбора данных
Системы EMM (Enterprise Mobility Management — управление корпоративными мобильными приложениями) присутствуют на рынке, но нам необходимо было установить их на 100 000 терминалов сбора данных. Каждое устройство требует лицензии, поэтому экономически эффективнее разработать свой продукт. Тут ставка сыграла, и поэтому с осени мы расширяем наш кластер в Иннополисе.
Кроме того, переход на удаленку позволил нам нанимать людей в любом городе России, поэтому встретить нашего разработчика можно где угодно: от Керчи и Армавира до Омска и Барнаула.
Широкий ассортимент кейсов: от Tарантула и кодогенерации на Go до битвы с Keycloak
В этой статье я рассказал о своей истории «погружения» в IT-часть ритейл-сети, в магазины которой ходит треть России каждый день. В нашем блоге мы будем делиться удачными техническими решениями, анализировать фейлы и продолжать тюнинговать наш большой автопоезд с продуктами, косметикой и всем необходимым.
Что именно из нашего прошлого и будущего опыта будет полезно вам?