Привет, меня зовут Максим Осорин, я руковожу Х5 Облаком в Х5 Group. Хочу рассказать про то, как мы трансформируем ИТ инфраструктуру крупнейшего в стране продуктового ритейлера. Зачем это нужно, как мы это делаем, с какими сложностями сталкиваемся и как их преодолеваем.

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

Это обзорная статья, будут ещё несколько материалов от моих коллег, которые её детализируют и дополнят по нескольким направлениям.

Предыстория и проблематика

Ещё несколько лет назад Х5 в плане ИТ была вполне традиционной компанией – был CIO, под ним иерархия различных подразделений. В 2019 году в компании началась цифровая трансформация. Помноженная на эффекты от пандемии, она дала толчок к ИТ трансформации, которая привела к рождению абсолютно новой по смыслу организации, которая сейчас называется Х5 Tech. Произошло изменение парадигмы от “мы можем купить” к “мы делаем по максимуму всё сами”. С одной оговоркой: там, где это необходимо и имеет экономический смысл. 

Очень быстро Х5 Tech превратилась в полномасштабную ИТ компанию, которая сегодня насчитывает свыше 4000 человек – в основном разработчиков и инженеров. Была внедрена децентрализованная структура, где вместо одного CIO (Chief Information Officer или Директор по ИТ) есть дюжина CTO (Chief Technology Officer или Технический директор; в Х5 Технологии это Технический директор домена) – каждый отвечает за свою область деятельности определённого бизнеса Х5. Например, функцию маркетинга конкретной торговой сети.

Была внедрена матричная структура и центры компетенций, продуктовый подход и, куда же без него, Agile в дополнение к старому доброму Waterfall.

Это позволило компании в течение короткого промежутка времени начать реализовывать свыше 100 новых инициатив (проектов и продуктов) ежегодно. Общее количество действующих информационных систем в компании на сегодняшний день – 468.

Казалось бы, всё прекрасно, но есть одна большая проблема – это устаревшая ИТ инфраструктура компании. При этом её старость определяется не возрастом оборудования (здесь как раз всё в порядке), а её соответствием, точнее – несоответствием изменившимся требованиям (тому, как начали работать в Х5 Tech). 

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

Это создавало для компании следующие проблемы:

  1. Низкая скорость предоставления инфраструктурных сервисов – от нескольких недель до нескольких месяцев (если нужна закупка мощностей).

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

  3. Отсутствие финансовой и организационной прозрачности – очень сложно определить владельца конкретных инфраструктурных объектов и ещё сложнее связать их с действующей активной инициативой или системой в промышленной эксплуатации, отследить историю изменений.

  4. Низкая утилизация вычислительных мощностей.

  5. Отсутствие современных стандартизованных сервисов (managed сервисов) для проектных и продуктовых команд. Современная разработка активно использует контейнеры, автоматизацию CI/CD (инструменты автоматизированной сборки и выкатки приложений Continuous integration/Continuous deployment) и т. д. Чтобы сделать разработку более эффективной, нужно внедрять стандарты и типовые “кубики”, из которых можно создать любую систему. Не должны команды тратить время на развёртывание и администрирование СУБД или контейнерную оркестрацию.

  6. Очень низкий темп или его полное отсутствие по изменению инфраструктурных сервисов под требования проектов/продуктов, которые постоянно меняются.

  7. Медленные ЦОДы (центр обработки данных) – не в смысле скорости работы оборудования, а в части любых изменений: введения новых мощностей, замены, реконфигурации, открытия новых площадок и т. д.

Выбор стратегии развития инфраструктурной платформы

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

  • Высокая стоимость при большом объёме использования – от 15 до 50+ % разницы в цене между частным и публичным облаком.

  • 100% зависимость от вендора.

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

  • Невозможность реализации корпоративных стандартов информационной безопасности, потеря контроля.

  • Невозможность финансового контроля за расходованием средств множества разных проектов и инициатив.

  • В целом отсутствие поддержки Enterprise Use Case – невозможность встраивания платформы в производственные процессы компании и её интеграции в информационные системы компании от простейших AD (Active Directory – обычно решение от Microsoft для ведения учетных записей пользователей и управления правами доступа) / CMDB (Configuration Management Database/Система Управления Конфигурациями – система, которая связывает в единое целое все компоненты какого-то сервиса или системы от уровня железа до уровня программного кода с указанием ответственных и взаимного влияния) до более сложных, таких как ERP.

  • Недостаточный уровень надёжности. Фактически обязательства любого поставщика публичных облачных сервисов ограничены тем, что в случае нарушение SLA, вы получаете скидку от 10 до 100% за период (мес.) на конкретный объект, который был недоступен, например виртуальную машину. Так как мы ритейлер с большим количеством консьюмерских сервисов, нас это категорически не устраивает.

Что важно, мы запустили несколько проектов по внедрению сторонних решений. У нас был OpenShift от RedHat, Rancher от SUSE, частное облако на базе OpenStack от тогдашней Mail.ru Group (ныне VK Cloud). Мы не только внедрили эти решения, мы их эксплуатировали с продуктивными нагрузками. 

И? И ни одно из них не решало наших проблем. У всех них не было той функциональности, которая нам была нужна в полной мере. Они были закрытыми, некоторые с тупиковой продуктовой стратегией, очень высоким ценником и прочим набором Vendor Lock проблем (полная зависимость от внешнего подрядчика). Любые изменения – это месяцы или никогда. Мы не могли ничего в них добавить своего или изменить существующие сервисы.

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

Мы сформулировали для себя несколько принципов, которые легли в основу нашей новой платформы. Вот основные из них:

  1. Максимальное использование OpenSource компонентов (решения с открытым кодом, которые разрабатываются сообществом индивидуальных и корпоративных разработчиков, но при этом отсутствует какая-то одна компания, которая контролирует или управляет работой сообщества). Мы не делаем Fork (термин, применимый к ситуации, когда какая-то компания берёт решение OpenSource и переписывает его части или начинает единолично его развивать собственным способом вне сообщества разработчиков) этих компонент, наоборот изменения мы согласуем с сообществом разработчиков и добиваемся их включения в Upstream (направление развития сообщества разработчиков, последние версии ПО с открытым кодом). Все custom доработки, которые по каким-то причинам нельзя включить в Upstream, мы делаем сбоку (Side-by-Side).

  2. Мы разрабатываем то, чего нет на рынке, что является уникальным и ценным и/или реализует наши специфические требования, в любых других случаях мы берём лучшее из существующих решений и интегрируем его.

  3. Принцип самообслуживания. Мы реализуем инфраструктурную платформу, которая будет работать с пользователями в режиме самообслуживания. То есть её использование предполагает, что пользователи (команды проектов/продуктов) самостоятельно выполняют все операции: активируют/деактивируют сервисы, выбирают/меняют их конфигурацию.

  4. Инфраструктура как код. Пользователи должны иметь возможность работать с платформой не только через её портал, но и используя платформенный Terraform Provider.

  5. Гранулярный финансовый учёт и интеграция платформы во все системы управления ИТ проектами и финансовые системы компании. Реализация принципа Pay-as-You-Go – когда средства проекта/продукта тратятся только в момент фактического использования тех или иных сервисов. Отдельно стоит отметить, что нам было важно иметь в нашей инфраструктурной платформе полную информацию о проекте/продукте (интегрированные финансовые и организационные мастер данные), а также всю историю изменений – переход на различные этапы жизненного цикла – например, переход инвест инициативы из активной стадии реализации в промышленную эксплуатацию, история всех финансовых операций, изменения связанных с системой персоналий, ответственных за проект и пр.

  6. Безопасность как код. Работа с сетевыми доступами должна быть максимально автоматизирована понятным для разработчиков и Devops инженеров способом и привычными для них инструментами.

  7. Сеть внутри облака должна быть а) сегментирована б) мы не хотим использовать такие рудименты, как выделенные DMZ сегменты (демилитаризованная зона, выделенный сетевой сегмент для размещения там приложений или их частей для публикации в интернет).

  8. Максимальная стандартизация и шаблонизация.

  9. Максимальная автоматизация всех процессов вокруг облака.

  10. Инфраструктурная платформа должна позволять работать с несколькими регионами и потенциально несколькими инфраструктурными слоями – OpenStack, VMWare и т. д.

  11. ЦОД и оборудование в нём – это commodity: нам всё равно, какой это бренд, важны технические характеристики, скорость изменений, стоимость и SLA (Service Level Agreement, соглашение об уровне сервиса между платформой и её пользователями) по доступности.

После детального изучения рынка, который, к слову, с тех пор мало изменился, мы выбрали для себя OpenStack в виде инфраструктурного слоя. Также стратегически мы поняли, что нет никакого смысла самим заниматься OpenStack – это очень дорого в плане команды, её практически невозможно собрать, и это несёт большие риски для компании (как минимум, ежегодного шантажа «незаменимых» инженеров). 

Мы решили купить OpenStack как сервис у компании, которая профильно этим занимается и имеет большую клиентскую базу – т. е. для которой потеря нескольких инженеров не является проблемой. При этом OpenStack должен быть максимально “ванильным”, и мы должны иметь возможность работать на версии не старше N-1 или N-2 от актуальной в Upstream.

Напомню, это было в середине 2021 года. Мы провели конкурс, в котором участвовали Mirantis, RackSpace, Canonical, RedHat, VMWare, VK Cloud. И по итогам выбрали Mirantis.

Изначально у нас была иллюзия, что мы сможем интегрировать “поверх” OpenStack несколько других решений, таких как оркестратор, портал и биллинг, но после нескольких PoC (Proof Of Concept или пилотный проект) мы быстро отказались от этой идеи, как от сложно реализуемой, дорогой и малоперспективной. 

В итоге всё, что “выше” OpenStack, мы разработали самостоятельно. Часть commodity сервисов, таких как S3 или резервное копирование, мы взяли у внешних поставщиков и глубоко их интегрировали, так что пользователь не подозревает, что это 3rd party компоненты.

Наша разработка – это десятки микросервисов, сделанных по всем канонам Cloud Native, образующие Control Plane облака и его скелет. Плюс отдельные компоненты для пользовательского портала, биллинга и платформенных сервисов. Наш основной стек разработки – это Go, мы также используем Python для узкого круга задач, прежде всего в части биллинга.

Так родилась инфраструктурная платформа, которая внутри Х5 называется Salt.

Нас все спрашивают, почему Salt? Ответ такой: нам было нужно простое и легко запоминающееся название, с одной стороны. С другой стороны, соль – это базовый ингредиент в любом блюде. Так же и наша платформа – это базовый ингредиент любой новой информационной системы, цифрового проекта или продукта внутри Х5.

Организационный подход или как мы были стартапом внутри огромной компании

Организационно, на основе прошлого опыта, мы понимали, что проще, быстрее и лучше построить “новый дом” рядом и попросить туда всех переехать, чем заниматься капитальным ремонтом существующего. 

Поэтому мы создали новое подразделение – Дирекцию по развитию облачной инфраструктуры, которая сейчас называется Х5 Облако. Эта организационная единица объединила в себе функции развития платформы и её эксплуатации, а также все вопросы, связанные с клиентским сервисом и миграциями. 

Благодаря полной поддержке менеджмента компании у нас была возможность работать на начальном этапе как стартап внутри крупной организации. 

Мы вкладываем много смыслов в это понятие. Это касается “зелёного света” на найм тех людей, которые нам нравятся, зачастую минуя ресурсные пулы и лишнюю волокиту. Свобода мышления, творчество команды, не “уставшей” от внутренних процессов, правил и процедур, свойственных рутинному бизнесу, поддержка принципа “ошибайся быстро и дёшево”. 

Что, наверное, самое важное – было общее желание сделать не так, как проще, быстрее, легче и с меньшей ответственностью, а как правильнее для компании, особенно в средне- и долгосрочной перспективе. 

Ну и главное – это time-to-market, ведь уровень любой поддержки конечен и нужно показывать результат, подтверждающий правильность выбранной стратегии как можно быстрее. Это важно как для команды, так и для спонсоров всей затеи.

У нас ушло примерно полгода, чтобы сформировать ядро команды разработки и эксплуатации. Мы потратили колоссальные усилия на поиск и привлечение правильных людей, с нужными hard и soft скилами, релевантным опытом, и, главное, – со схожим менталитетом. Полгода вопросы формирования команды занимали как минимум процентов 40% времени в моём календаре. 

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

Могу сразу сказать: мы не та команда, где кто-то один решает, как будет правильно. Например, у нас нет выделенного архитектора, это коллективный орган. А руководитель Х5 Облака не может принимать продуктовые и технологические решения без коллегиального обсуждения и формирования сбалансированной точки зрения.

Примерно к ноябрю 2021 года мы поняли, что мы точно хотим сделать, и началась активная фаза разработки и развёртывания платформы. Параллельно работали несколько стримов/команд, мы проектировали платформу и её основные компоненты, принципы их взаимодействия, разрабатывали микросервисы платформы, разворачивали и конфигурировали OpenStack.

Отдельная команда занималась проработкой того, как будет устроена наша платформа с точки зрения сетей, взаимодействия со “старой” инфрой. Мы проектировали и планировали ЦОДы, прорабатывали платформенные интеграции. 

"Рояль в кустах" или никогда не недооценивайте информационную безопасность

Была одна область, которую мы сильно недооценили. Это всё, что связано с информационной безопасностью (ИБ) в части того, как будет устроена сеть в облаке, что такое окружения и чем они отличаются, новый процесс предоставления доступов. По факту мы потратили на это порядка трёх месяцев, а изначальный план был согласовать это в течение нескольких недель.

Здесь стоит сделать отступление и объяснить, почему так получилось. Дело в том, что, внедряя новое облако, мы запускали внутри него сегментированную сеть. До этого все инфраструктурные решения Х5 работали в “плоских” сетях, разграничение которых осуществлялось совершенно по другим принципам – с помощью классических межсетевых экранов и файрволов. Приложения, публикуемые в интернет, размещались в отдельном выделенном ландшафте – DMZ. 

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

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

У нас было множество эскалаций в начале этой работы, но нам удалось, с одной стороны, объяснить новые принципы и подходы, а также технологические возможности коллегам из ИБ, а с другой – услышать, на самом деле какую проблему они хотят решить, и предложить такое решение.

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

Это позволило применить универсальный сетевой шаблон ко всей платформе, уйти от DMZ, при этом существенно повысив уровень информационной безопасности и минимизировать гипотетические “поверхности поражения” в случае взлома. 

Ещё мы реализовали принцип харденинга слева направо. У нас есть типовые окружения: dev, stage, prod и набор связанных с ними правил доступа в эти окружения и из них. 

Идея очень проста – в песочнице можешь делать, что угодно, но там нет продуктивных интеграционных данных или публикации вовне. По мере движения в сторону прода правила ужесточаются до такой степени, что в прод ты можешь выйти только с помощью CI/CD и очень ограниченного круга пользователей с доверенных профилей.

Отдельная история – это как мы переделали работу с сетевыми доступами. У нас есть автоматизированный процесс предоставления сетевых доступов (например, для того, чтобы проект внутри Salt сделал интеграцию с SAP). Мы используем механизм групп безопасности. Фактически проект смотрит в справочник (внутри Salt) имеющихся групп безопасности, находит подходящую и применяет её к своим сущностям в Salt. Если таковой нет, то с помощью Gitlab и Merge Request создается запрос на новую группу безопасности, которая автоматизированно согласуется представителем ИБ.

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

Сделать платформу – это только половина дела

Первую презентацию платформы пользователям в формате Slideware мы сделали на День Космонавтики – 12 апреля 2022 года. Потом был режим ограниченного использования, в рамках которого мы занимались стабилизацией платформы, исправляли ошибки, переделывали какие-то решения на основе обратной связи от ограниченного круга пользователей. 

1 июля 2022 года Salt перешла в промышленную эксплуатацию, и мы открыли платформу для всех желающих внутри Х5 Group. Казалось бы – отлично, можно выдохнуть, взять отпуск и мысленно поставить большую зелёную галочку “Done”. Но это совсем не так.

Как тогда говорил руководитель нашей платформенной разработки – Сергей Кирсанов: “Мы построили дом, теперь нужно заселить его жильцами”. 

Для нас это означало начало проекта миграции. Наша первая миграция включала в себя переход из старого облака VK Cloud и из RedHat OpenShift. В общей сложности 232 проекта, большая часть из которых продуктивные.

Мы, конечно же, пошли в рынок, чтобы кто-то поделился с нами экспертизой и опытом. Каково же было наше удивление, что её не было. Ничего, кроме банальностей типа методологии 6R, нам никто не рассказал. 

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

Ключевые проблемы и задачи миграции следующие:

  1. Миграция информационных систем из платформ, где “плоская” сеть и “широкий” доступ в современное облако, где доступ гранулярный, а проекты изолированы друг от друга.

  2. Необходимость актуализации и согласования всех интеграционных потоков с ИБ для получения необходимых для работы групп безопасности.

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

  4. Необходимость максимально понятного и простого выделения средств для работы системы на новой платформе.

  5. Необходимость выделения технических ресурсов для переноса систем. Для проектов, где есть активные команды, развитие – это выделение ресурсов для миграции в ущерб задачам развития внутри существующей команды или их расширение внешними ресурсами подрядчиков.  Для проектов, где уже нет активной команды, это выделение ресурсов, знакомство с системой и её перенос.

  6. Максимальная стандартизация и шаблонизация миграции, организации непрерывного процесса миграции, информирования, решения эскалационных вопросов.

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

С другой стороны, у вас новая сложная  платформа, которая неизбежно проходит период стабилизации – многие вещи дополняются или даже переделываются.

Как завоевать доверие пользователей

Давайте я расскажу, как мы завоёвывали доверие пользователей.

Мы для себя сформулировали следующие принципы работы: 

  1. Мы работаем для наших клиентов – внутренних команд проектов/продуктов. Наша задача – помогать им, предоставлять качественные и надёжные облачные сервисы на наилучших условиях, делать это эффективно и безопасно. 

  1. Мы хотим быть надежным партнёром и развиваться вместе с нашими клиентами. Мы не создаём облачные сервисы, сидя в лаборатории, мы создаём их на основании чётко сформулированной потребности со стороны наших пользователей, получая непрерывную обратную связь.

Для работы с внутренними клиентами мы создали отдельное подразделение – команду по онбордингу и миграции. У нас есть Customer Success менеджеры или по-другому – внутренние клиентские менеджеры, менеджеры по миграции, выделенные Devops инженеры и аналитик. Часть ресурсов мы привлекли от подрядчика. 

Команда миграции разработала методологию, которая включала в себя пошаговое описание того, что необходимо сделать информационной системе, чтобы переехать. В неё также был включен алгоритм расчёта начальных балансов в облаке, который позволял нашим клиентским менеджерам, в зависимости от фактического объёма потребления проектов в старых платформах, остатка баланса и срока использования, рассчитать начальный баланс. Всё это разрабатывалось командой миграции при тесном взаимодействии с внутренними финансовыми подразделениями Х5 Tech.

Также методология включает в себя типовой технический проект миграции с максимальной детализацией всех работ и трудоёмкостью.

Ключевые участники миграции в нашем случае были следующие: наши СТО и команды проектов/продуктов, корпоративная и Solution архитектура, информационная безопасность, финансовые подразделения. 

Если бы мы пропускали миграцию каждой информационный системы через стандартный процесс согласования архитектур и доступов, то миграция бы заняла у нас лет 5. Поэтому мы разработали новые процессы взаимодействия с корпоративной архитектурой и информационной безопасностью в режиме Fast Track. Идея заключалась в том, что мы собираем для миграции минимально необходимый набор артефактов, все остальные несоответствия фиксируем в виде технического долга со сроком устранения. Эти процессы родились не сразу, а спустя несколько месяцев совместной работы команд.

Мало придумать и утвердить методологию. Нужно её объяснить всем и организовать работы. Мы провели порядка 20 внутренних митапов в 2022-2023 г. г., среднее количество участников каждого было порядка 150 чел, самое большое – 270 человек. У нас есть очень развёрнутый портал документации. Это помогло нам начать формирование культуры использования облачной инфраструктуры. Помимо этого, команда миграции начала работать со всеми проектами, формировать графики миграции и решать возникающие проблемы.

Отдельная работа заключалась в экстремально быстром решении любых технических проблем, а также отработки изменений и новых фич по требованию пользователей, которые начали использовать платформу. Нам удалось выстроить партнёрские отношения с несколькими ключевыми очень сильными командами. Это, прежде всего, команда интеграционной платформы и логистический сервис 5Post. Благодаря постоянному взаимодействию в оперативном режиме за несколько месяцев удалось решить все проблемы роста платформы, сделать её удобной в использовании и функционально богатой для пользователей.

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

Постепенно мы начали формировать кредит доверия, решили основные проблемы, сделали наши сервисы более удобными в использовании, реализовали множество доработок и переработок. 

Команды начали ценить то, что мы делаем для них. У нас лёгкие и частные релизы,  фактически 4 дня в неделю. Это позволяет нам быстро реагировать на проблемы или запросы на новые фичи/изменения. Это ценят наши клиенты. Ведь это, в принципе, невозможно с любым внешним решением и уж тем более с публичным облаком.

Запуск Х5 Облака на ЦОД. Антон Мироненков, Максим Осорин, Сергей Кирсанов, Александр Москвин
Запуск Х5 Облака на ЦОД. Антон Мироненков, Максим Осорин, Сергей Кирсанов, Александр Москвин

Мы приступили к разработке методологии миграции в июле 2022 года. Миграцию старого облака и OpenShift мы закончили 3 и 4 октября 2023 года. Отсюда следует вычесть 2 месяца “высокого сезона” в ритейле – ноябрь/декабрь – когда у нас действует мораторий на любые существенные изменения. 

Импортозамещение

Я говорил выше, что мы выбрали Mirantis в качестве поставщика OpenStack ещё в 2021 году, не зная об ограничениях, с которыми мы столкнёмся уже весной 2022 года. Мы приобрели Mirantis Container Cloud, в который, помимо OpenStack, входил также сервис Kubernetes. Именно так наш Salt запустился в промышленную эксплуатацию.

Mirantis – компания с русскими корнями, родом из Саратова, которая уже потом стала американской и международной. Конечно же, сохранив множество наших соотечественников на различных уровнях.

2022 год стал непростым для многих ИТ-компаний. Нужно отдать должное коллегам – они до последнего нас поддерживали, хотя большинство западных вендоров уже к лету 2022 года ввели ограничения или начали уходить с рынка.

В конце октября 2022 году вышел запрет по размещению инфраструктурных приложений на серверах в РФ американским компаниями. Mirantis вынужден был проинформировать нас о том, что мы должны прекратить использование их программного обеспечения. 

Вы построили самолёт, посадили в него экипаж, пассажиров и взлетели. И в полёте вам нужно заменить двигатели самолёта без посадки. Вот примерно такая задача перед нами встала в октябре 2022 года.

Для её решения мы к середине ноября придумали и запустили проект с кодовым названием Wasabi, предполагающий замену Mirantis OpenStack в горячем режиме “на лету” и замену сервиса Mirantis Kubernetes на собственную разработку. Это точно тема для отдельной статьи. Но, забегая вперед, скажу: мы справились. Весной 2023 года мы выпустили свой сервис Kubernetes, а в сентябре завершили замену OpenStack в наших ЦОДах на KeyStack от ITKey. 

KeyStack – это ванильный Openstack от российской компании ИТ Ключевые решения. Он дополнительно обвязан автоматизацией, инструментами управления жизненным циклом и захарденин, но сам OpenStack ванильный.

Так Salt стала полностью российской платформой. А наш инфраструктурный спецназ стал старше и немного седым, но приобрёл уникальный опыт – такого масштаба проект делали всего несколько команд в мире.

Медленные ЦОДы

Одна из проблем, с которой мы столкнулись – это неэффективность традиционных подходов и процессов в части организации работы ЦОД в крупной компании. Классическое инфраструктурное подразделение работает по модели Colocation:  арендуют место в ЦОД, далее проводятся различные конкурсы и либо разные поставщики, либо собственные подразделения выполняют поставку вычислительного, сетевого оборудования, пусконаладочные работы и занимаются эксплуатацией ЦОДа. Т. е. это смешанная подрядно-хозяйственная модель. 

В контексте современных инфраструктурных платформ, которые, по сути, динамические, с такой моделью есть несколько проблем:

  1. Дорого.

  2. Долго.

  3. Нужно покупать мощности впрок и всегда опасаться “рояля в кустах” в виде неожиданного большого проекта, который “съест” резерв.

  4. Сложно выдерживать SLA, т. к. нет единого центра ответственности. 

Вместе с нашими партнёрами из Selectel мы придумали другую модель – “ЦОД как сервис”. 

В чём её смысл? 

  1. Мы можем выводить полностью готовую стойку со всем оборудованием внутри за срок <3 недель. Это возможно, когда оператор ЦОДа одновременно является крупным производителем серверных платформ. Также это возможно, когда подрядчик делает всё – ЦОД, стойки, кэйблинг, ПНР, эксплуатацию железа и каналов связи. Какой это даёт эффект: нет нужды “морозить деньги” в оборудование, складирование, ЗИПы и проч.

  2. Нам всё равно, что написано на сервере, главное – его технические характеристики и цена.

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

  1. Мы хотим платить за всё оборудование так же или близко к тому, как нам платят наши пользователи. Они ведь не выкупают у нас ничего на годы вперёд. Они постоянно пополняют свой лицевой счёт и тратят с него средства. Отсюда модель финансового лизинга. Мы платим не всё сразу, а в течение пяти лет. 

  2. Ну и, конечно же, единый центр ответственности и максимальная интеграция такого комплексного подрядчика в процессы эксплуатации нашей платформы. При этом мы отвечаем за всё, что от уровня операционной системы и выше, а партнёр – за всё железо. Нам не нужны ЗИПы, у нас сроки замены вышедших из строя компонент не превышают двух часов.

  3. Ещё один косвенный плюс – это отсутствие множества административного персонала: один конкурс вместо десятка, один подрядчик вместо нескольких. Это всё ускоряет, делает более прозрачным и понятным.

  4. Быстрое открытие новых площадок. Классическая модель – это 6-12 месяцев. Мы можем запустить новые регионы в течение месяца.

Salt сегодня и завтра

Сегодня

Что такое Salt сегодня? У нас два независимых региона – Москва и Санкт-Петербург. Они равнозначны в части предоставляемых сервисов. В случае какого-то ЧП в одном из ЦОДов, второй продолжит работать. 

С точки зрения сервисов мы предоставляем стандартные Compute, Network и Storage. Т. е. это виртуальные машины, балансировщики нагрузки, разные типы дисков, как в виде СХД, так и Ceph. У нас есть сервисы S3 и бэкапы как сервис. 

Ключевой сервис – это managed Kubernetes и managed PostgreSQL. Недавно мы запустили мониторинг как сервис. 

На начало октября 2023 года у нас «живут» 125 информационных систем – это порядка 560 проектов. Свыше 8000 виртуальных машин, 376 кластеров Kubernetes, 199 СУБД PostgreSQL.

В организационном смысле наша команда сегодня – это 120 человек. Основной прирост идёт за счёт присоединения новых команд (таких, например, как SRE) в рамках нашей стратегии по превращению ИТ4ИТ сервисов в облачные.

Облачная платформа Salt активно растёт. Наш среднемесячный прирост в объёме потребления – свыше 13% в деньгах и “физике”.

Завтра

Мы активно работаем над реализацией сервисов высокой доступности и катастрофоустойчивости. 

Готовятся к релизу другие наиболее востребованные Devops сервисы именно как платформенные – логгирование, трейсинг, RabbitMQ и пр.

 В 2024 году один из наших старых ЦОДов заполнится, и мы будем открывать ещё один облачный регион – новый ЦОД.

Также Salt расширяется на традиционные инфраструктурные сервисы. Сейчас мы реализуем MVP по интеграции VMWare, при этом мы хотим максимально приблизить классическую виртуализацию к облачной парадигме – это касается и способа предоставления сервисов пользователям, и реализации сегментированной сети. 

К середине 2024 года заработает сервис Bare Metal как сервис.

Помимо этого, сейчас на повестке переосмысление того, как нужно строить и эксплуатировать критические высоконагруженные информационные системы. Как правильно, системно и на практике применять Cloud Native подходы и SRE практики.

Заключение

Конечно же, пытливый читатель задастся вопросом: а чего вы добились для компании? Что изменилось? Нам есть что на это ответить.

  1. Мы дешевле практически по всем сервисам любого публичного облака в РФ от 16% до 47%. Наш внутренний бенчмарк – это Яндекс Облако. И это очень существенные цифры в масштабе такой крупной компании, как Х5 Group. И да, это корректно рассчитанные тарифы, которые включают в себя все затраты. Мы потратили много месяцев на разработку и внедрение полноценной ресурсно-сервисной модели вместе с нашими финансистами.

  2. Time-to-Market для проектных и продуктовых команд. Salt – это динамическая инфраструктура. То, что раньше занимало недели-месяцы, сейчас занимает минуты. Причем, это не просто предоставление, например, виртуальных машин, а предоставление их со всеми необходимыми доступами.

  3. Полная финансовая и организационная прозрачность использования инфраструктурной платформы, её глубокая интеграция в производственные процессы Х5 Tech.

  4. В компании появилась функционально богатая платформа, удобная в использовании, с современным набором инфраструктурных сервисов. Мы её разрабатывали в тесном контакте с сотнями команд, которые её использовали и старались реализовать их пожелания как к логике работы предоставляемых сервисов, так и к удобству использования. 

  5. Высокая скорость изменений: исправление ошибок, реализация фича реквестов и выпуска новых сервисов. Мы делаем лёгкие релизы 4-5 раз в неделю.

  6. Инфраструктура и команда, которой доверяют. Сейчас даже с учётом сложнейших операций по замене OpenStack у нас доступность на уровне 99.9%, к концу года мы достигнем 99.95%. 

  7. Полная независимость от любого внешнего вендора и самодостаточность.

По сути, мы создали основу для облачной трансформации компании. Дальше мы будем превращать в платформенные (облачные) все ИТ сервисы, которые сегодня оказываются разными командами по заявкам. Будем распространять на них ресурсно-сервисную модель, унифицировать и гармонизировать всё от способа предоставления сервиса до SLA.

Инвестиции в облачную трансформацию полностью себя окупают и приносят весьма заметные финансовые и нефинансовые результаты, создавая, в конечном счёте, дополнительное конкурентное преимущество для компании.

Комментарии (29)


  1. Thomas_Hanniball
    23.11.2023 19:54
    -1

    Статья классная, всё супер, но учитывая её объём, я бы разделил её на 2 или даже 3 части, т.к. за 1 раз прочитать такое полотно текста, пусть и с красивыми картинками, сложно.


    1. ktotomskru
      23.11.2023 19:54

      А как вы умудрились школу окончить? Там же войну и мир читать надо было :))


  1. stroitskiy
    23.11.2023 19:54
    +2

    Не хочу быть скептиком без знания деталей, но как считается - "дешевле практически по всем сервисам любого публичного облака в РФ"? Я том плане что затраты на разработку облака и его текущий мейнтенанс учитываются? Учитываются ли скидки от Яндекса которые для организаций вашего размера могли бы достигать 30-40 процентов?


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

    Здесь была невнятная статься от Flant где они запилили всего лишь замену Опсджини но на вопрос чем это лучше так и не смогли ответить(ну кроме того что это написано не нами(С)). Не смотря на разницу масштабов и затрат мне почему-то видится что кейсы похожие.

    [для большей ясности приведу пример] у вас на сайте есть раздел Вакансии. Вы не выдумывали своего, а просто поставили там редирект на HH. И это вполне зрело и мудро - у вас единая точка правды, вы не тратите бабки на запиливание собственной вундервафли для поиска персонала и количество показов ваших вакансий на HH просто несравнимо с тем что было бы если бы вы шли только со своим решением по публикации вакансий.


    1. thunderclouds
      23.11.2023 19:54
      +1

      В статье есть подробности в конце про сравнение стоимости. Дочитайте )

      Есть в ИТ такой подход - ресурсно-сервисная модель (РСМ). Вы берете какой-то сервис, считаете текущие и будущие затраты на его развитие, поддержку, инфру и проч. Берете текущее и прогнозное потребление и одно распределяете на другое - получаете цену сервиса. Мы ровно это и сделали.

      Мы не изобретаем велосипед - в статье есть про это.Commodity мы используем готовое, просто интегрируя это в платформу - например S3 или бэкапы. Да и OpenStack мы покупаем как сервис. Но я ответственно говорю что на рынке нет решения для таких компаний как Х5 ни среди РФ поставщиков, ни зарубежных. Поэтому мы сделали свое.

      Кстати мы не одиноки - например Walmart делает то же самое. У него своя большая инфраструктурная платформа, а паблик облака используются только для cloud burst и ряда других задач связанных с распределенным compute, при этом никто своих пользователей в паблик облако напрямую не пускает, только через свою платформу.

      Про HH пример не корректный ИМХО. HH это маркетплейс для сотрудников и работодателей.


      1. stroitskiy
        23.11.2023 19:54
        +1

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

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

        Вы сами, с Mirantis, добровольно в этот капкан попали.

        На мой скромный взгляд более правильно использовать подход Cloud Agnostic - при кажущейся одинаковости, он отличается от VendorLock.
        Мы используем каких-то провайдеров, но всегда держим в голове тот момент, что нам может понадобиться его поменять и наш солюшен должен быть максимально независимым.

        Отсюда как раз и вытекает что выгоднее взять ОДНОГО провайдера, например, Yandex у которого и бакеты и базы данных и бекапы и Кубернетес уже есть. Да вы будете привязаны к этим сервисам, но только одного вендора и мигрировать будет легче. И у вас не будет головняка поддерживать десяток сервисов от разных провайдеров - что намного затратнее.

        Не клауд агностик это например использовать в AWS - Aurora. У других вендоров ее нет.

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


        1. thunderclouds
          23.11.2023 19:54
          +1

          Ну моделями мы делиться здесь не будем - это интеллектуальная собственность.

          Что касается скидо,то они сегодня есть, завтра их нет, а после завтра у вас 2х цена и что вы делать будете?

          Ну и отдельный вопрос к зрелости и надёжности локальных публичных провайдеров. У любимого вами яндекса есть публичная инфа про инциденты. С таким уровнем доступности в ритейле в проде работать нельзя.

          Цена важный, но не ключевой фактор. Намного важнее вопросы ИБ, контроля, в том числе финансового и свободной от вендорских сервисов разработки.

          Если у вас 200 команд каждая со своим бюджетом вы как это в яндексе сделаете ? Финопс внедрять пойдёте?)

          Относительно прироста. Если читали внимательно, то в статье сказано что мы работаем над превращением сервисом, которые оказывались ранее по заявкам в плаиформенные, облачные. Это прирост за счёт уже существующих команд.

          По поводу специалистов современных в Х5, мы в взяли попкорн в руки и с нетерпением ждём когда вы расскажите нам что такое современная платформенная разработка. Ну пожалуйста)


          1. stroitskiy
            23.11.2023 19:54

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


          1. stroitskiy
            23.11.2023 19:54
            -1

            на мой скромный взгляд для 200 команд проще каждой было дать аккаунт в Yandex + настроить кубернетес кластер в этом аккаунте. Вопросы ИБ и прочего решаются политиками и рулами.

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


            1. moskvalex
              23.11.2023 19:54
              +1

              Как снимать метрики здоровья и организовать мониторинг инфры в таком подходе?

              Как поступать при сбоях в сервисах и оперативно их чинить?

              Как реализовать bulk-операции на всех элементах инфры (принудительное обновление, добавление новых внутренних доверенных сертификатов)?

              Как снимать сводную статистику по использованию "в попугаях" (CPU/RAM) и в деньгах для всех проектов?


              Я могу таких "как" накидать ещё штук 50 :)

              Если ручками/плейбуками допиливать всё, то вся прелесть облака теряется - возвращаемся к системе заявок в инфровое подразделение и ожидание исполнения, измеряемое в днях, а не минутах. В этом подходе никакого бенефита от облака не прослеживается, можно и собственные сервера + vSphere/Xen использовать.


              1. stroitskiy
                23.11.2023 19:54
                -1

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

                Прелесть не теряется- вы допиливаете только небольшие части.
                У нас сами команды допиливают мелкие opensource сервисы никто никаких заявок в инфра подразделение не пишет.
                Зачем кудато писать если большинство сервисов это docker image?
                Поменял код - запустил и дальше работаешь.


                1. moskvalex
                  23.11.2023 19:54
                  +1

                  Хороший подход. Жаль, что в реальной крупной организации не работает :)

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

                  Либо альтернатива - всё отдать на откуп 200 командам. Команды будут очень рады, когда узнают, что им самим нужно не бизнес-приложение пилить, а реализовывать инфраструктурные сервисы самостоятельно: мониторинг, логирование, доменная авторизация и другие требования ИБ. Бизнес также будет доволен тем, что вместо компактного подразделения, которое занимается массовыми операциями, в каждой команде появится отдельный человек, занимающийся инфраструктурой. Архитекторы порадуется тому, что мониторинг у 100 команд построен на Prometheus, у 70 на Zabbix, а оставшиеся вообще Splunk притащили вопреки арх.стандартам компании :)

                  А ещё из этих 200 команд примерно половина забудет обновить сертификат CA, или цепочку сертификатов и раз в год половина систем будет складываться как карточный домик )


        1. moskvalex
          23.11.2023 19:54
          -1

          Cloud Agnostic - это выход, если вы ищете облако для одной-единственной команды.

          На 5 командах у вас уже будут трудности с управлением такой инфраструктурой.

          На 10 трудности станут явными.

          На 200 такая модель просто работать не будет. Когда провайдер сломается, внезапно выяснится, что 20 команд не могут мигрировать, потому что никто не знает, как ПО устроено, ещё 40 завязли по уши в vendor specific сервисах, из оставшихся примерно половина не думает про ИБ и мы все вместе прочитаем на Хабре про новую утечку данных. И всё потому, что в публичном облаке вы отдаёте в руки командам полный контроль и никак не можете ограничить, что делать можно, а что нельзя.


          1. ktotomskru
            23.11.2023 19:54

            И всё потому, что в публичном облаке вы отдаёте в руки командам полный контроль и никак не можете ограничить, что делать можно, а что нельзя.

            Не совсем так. В том же Azure (да и у всех гиперскейлеров), например, есть довольно развесистая и гибкая система политик, которые могут применяться к тем или иным проектам, или организации в целом. И их нельзя просто "отменить" изнутри проекта.

            А cloud agnostic да, вполне может применяться. Если пользоваться только стандартным функционалом, который везде более менее одинаково работает. Но, как быть со всякими прикольными provider-specific штучками? Не использовать что ли?


            1. stroitskiy
              23.11.2023 19:54

              Я ответил выше в треде, но про провайдер специфик штучки скажу так - очень сильно стоит подумать, а так ли нужны они?
              Вспомните MongoDB- в период популярности на его базе че только не пилили, а сейчас я даже встречал lock на использование монго на уровне дизайна.


              Например вот без секьюрити фич вам не обойтись, у каждого провайдера нетворк и секьюрити свой. Но опять же, снаружи можно сделать все по дефолту, а внутри кластера Кубернетес использовать его инструменты, и это обычно везде работает. Если вы не решите использовать AWS EKS Pod security group конечно.

              Каждый сам себе злобный буратино.


          1. stroitskiy
            23.11.2023 19:54

            Cloud Agnostic это подход который позволяет минимизировать боль при миграции между клауд провайдерами. Он не пропагандирует воздержание от использования любых фич провайдеров, а предлагает всегда учитывать что возможно солюшен/инфраструктура будет переезжать к другому провайдеру.

            Например лоад балансеры придется использовать, nginx ingress не во всех сценариях поможет. Но лоад балансеры в том или ином виде есть везде- и это можно смигрировать. А вот напримир AWS Aurora проприетарное решение и смигрировать оттуда БД гораздо больнее. Поэтому решение не использовать Aurora а использовать Postgress может быть принято в том числе исходя и из этого аргумента.


    1. moskvalex
      23.11.2023 19:54

      Что-то готовое == негибкое.

      Дьявол, как всегда, кроется в деталях поэтому взять любой готовый продукт и использовать его - это всегда компромисс между потребностями большой организации и возможностями вендорского продукта. Причём этот компромисс решается всегда в пользу вендора, а не компании-потребителя, которая, между прочим, платит совсем немаленькие деньги за продукт. Абсолютно типовая ситуация, когда запрос реализация потребности приводит сразу к нескольким негативным эффектам:

      1) Появление форка продукта, который вендор в какой-то момент решит перестать поддерживать. Изменилась стратегия, команду форка переключили на развитие другого направления и т.д. - всем этим вы не управляете.

      2) Выставление заградительных ценников на доработки. Вендору может быть просто неинтересно тратить ресурсы на создание того, что вам требуется.

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

      Это только малая часть того, что скрывается за словом Opinionated.

      Простой пример. Компании нужно, чтобы управление группами безопасности (по сути, просто правила фаервола) происходило под контролем ИБ, а не только пользователя. Это вообще стандарт в энтерпрайзе. Какое готовое облако позволяет так организовать ролевую модель, чтобы это было возможно реализовать?

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

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


      1. stroitskiy
        23.11.2023 19:54

        Вы лукавите. Облачный провайдер не идеален не разу- но закрывает сразу широкий спектр сервисов, которые ВАМ не надо пилить. И это будет один вендор с бесшовной интеграцией этих сервисов. И вы можете в любой момент встать и уйти, да сейчас в РФ не так много альтернатив, но эта ситуация не статична.
        И как я писал выше - расширить функционал готового солюшена гораздо проще чем пилить свою вундервафлю.

        Не знаю как в Я но в AWS варианты управления политиками и секьюрити группами на любой вкус.

        И к вашему кейсу как нельзя лучше подходят слова Безоса:
        > В 1900 году чтобы открыть магазин вам надо было построить электростанцию рядом. В 2000х никому и в голову не придет строить свою электростанцию- все просто покупают электроэнергию у электрокомпаний. Вот вы занимаетесь тем что мастерите электростанцию. Да возможно неплохую, да сильно кастомизированную, но не факт что вашему бизнесу от этого лучше. Вам интересно - это как раз понятно.


        1. moskvalex
          23.11.2023 19:54

          Нет, это не я лукавлю, скорее вам надо чуть глубже погрузиться в вопрос, так как дьявол всегда кроется в деталях :)

          Для начала я предлагаю вообще перестать говорить про AWS, сразу по нескольким причинам: санкционные риски для крупной компании в этом случае запредельны, требования российского законодательства нарушаются на каждом шагу (ФЗ 152 и т.п.)

          Если вы разрабатываете один продукт без персональных данных, то публичное облако + cloud agnostic подход может быть для вас применим. Но при этом, боюсь, что только на старте и для небольших систем.

          Почему я так думаю?

          1. Представьте, что вам нужно перенести в другое облако не 1, не 10 приложений, а, к примеру, 100, или 200. Сколько времени займёт у вас такая миграция? Год для такого процесса - очень оптимистичный срок. Скорее 2-5 лет.

          2. Как вы будете контролировать Cloud Agnostic? Запускается ещё один проект, в силу сложностей в коммуникациях до конечного инженера не донесли этот подход, или инженер на него забил, потому что "надо использовать новое, а не жить как староверы". И всё, в какой-то системе уже используется, скажем, Tarantool, который как сервис есть только в VK Cloud. А так как инженеры друг с другом часто общаются, то ещё через полгода тарантул появляется ещё в 10 проектах. И этот эффект сразу вы даже не заметите, узнаете как раз во время миграции. И даже с сотрудником ничего не сделать, так как он год как уволился.

          3. Как быть с требованиями ИБ, которые не статичны? Как быть, если новое требование ИБ нереализуемо на конкретном облаке? Вам ИБ просто не согласует использование сторонних инфраструктурных площадок, т.к. данные компании физически "живут" в месте, которое компания никак не контролирует физически. Как пример: требование ИБ - авторизация только с помощью корпоративной учётки AD. Как это реализовать by default на всех виртуальных машинах, которые будут создаваться сотрудниками компании в публичном облаке? Административно заставить всех настраивать доменную авторизацию? Заставить всех использовать кастомные образы? А как это сделать для чего-то посложнее виртуальной машины, в том PostgreSQL/K8S as a service от публичного облака?

          4. Тут в соседних комментариях уже упоминали немного про SLA, я расширю этот момент. Как управлять доступностью в публичном облаке? Как компании-потребитель предъявить требования к доступности сервисов? Что делать, если предлагаемая, либо обеспечиваемая доступность вас не устраивает?

          5. Как добавить свой сервис в платформу? Я сейчас немного утрирую, чтобы было понятно. У сферического публичного провайдера нет redis as a service. При этом redis используется всё активнее, см пример с Tarantool. Даже в копии публичного облака, которое мы физически установили в нашем ДЦ для себя, это сделать было невозможно. Как и кастомизировать образ PostgreSQL as a Service под себя. В итоге у вас просто нет нужного сервиса и 4 тысячи сотрудников смотрят на вас как на идиота, потому что "именно вы приняли решение выбрать такого плохого провайдера услуг, ищите способ решения".

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


          1. stroitskiy
            23.11.2023 19:54

            [1] постоянно этим занимаемся, это вполне нормальные сроки, если приложений много, не вижу вообще ничего плохого в том, чтобы не ломая ничего переехать постепенно. Просто новые проекты не разрешают создавать по старому и все за 2 года максимум переезжает.

            [2] Контроль это вообще административное понятие, у вас же руководители способны контролировать инженеров? Надеюсь что да. Вот до руководителей доноситься это правило, они доносят до инжинеров.
            Со второй стороны это как раз вашей структурой и должно контролироваться- в виде ассесмента/валидации КАЖДОГО нового сервиса. У нас это поставлено на поток, если ты поставил сервис в прод без валидации и добавления его в backstage- это равносильно запуску биткойн генератора по последствиям.

            [3] ИБ не религия, с ними всегда можно договориться исходя из реалий бизнеса. Нужно вам получить определенный сертификат в этой области- смотрите что не попадает - идете к ИБ и к клауд провайдеру и разговариваете. Все эти стороны заинтересованы договориться. Да клауд провайдер может пилить сервис в нужную вам сторону дольше чем вы- например год. Но вы не единственные клиенты которые сталкиваются с такой проблемой, а провайдер держит нос по ветру и критичные вещи он должен быстро исправлять, ведь он то сам как то это сертификат получил ))

            [4] Смотря что понимать под доступностью. В общем случае - использовать не один регион а 2-3, реплики БД, запасной провайдер. 3 региона у Яндекса уже надежнее ваших двух датацентров. Их тупо 3, а может быть 10 за совсем небольшие деньги.

            [5]
            https://cloud.yandex.ru/services/managed-redis
            https://cloud.vk.com/databases/redis/

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


            1. moskvalex
              23.11.2023 19:54

              [1] И часть не переезжает вовсе. Вы не представляете, сколько систем в крупных организациях, которые когда-то кем-то были запущены, потом команда внедрения разошлась и осталось полтора инженера на поддержку. И что в итоге мы делаем, когда текущее облако не устраивает? Добавляем ещё одно, если я правильно понимаю? И даём выбор командам, в какое облако заезжать? И как всем этим хозяйством потом в компании управлять?

              [2] Ещё хуже. Валидировать придётся каждый элемент информационной системы на всех этапах жизненного цикла. Как вы себе это представляете? Контролировать кто и что поставил на новую созданную виртуалку и как это что-то новое настроил, по стандартам, или нет? Это просто остановит любые изменения.

              [3] Что делаем, если провайдер делает 90% нужного и не делает 10% нужного? А если соотношение 80 на 20? Спокойно смотрим, как 20% от 4000 человек говорят и вам, и руководству, что выбор данного конкретного облака был ошибочным? Наш подход очень простой - если есть востребованный, но отсутствующий сервис, то он реализуется. Точка.

              [4] У вас пострадал сервис из-за того, что конкретный инфраструктурный элемент не работал 3 дня. Все средства обеспечения отказоустойчивости от Облака ограничены одним регионом, а иногда регионы ломаются целиком. Вы теряете примерно по миллиону в час и ничего не можете с этим сделать, эскалировать некому, поддержка говорит "мы чиним, ваш звонок очень важен для нас". По итогам месяца строго по договору получаете компенсацию в 10-50% от месячной стоимости этого инфраструктурного элемента.

              [5] Спасибо, я умею пользоваться поиском и не зря написал, что утрирую. Я и так отлично знаю, что редис в облаках есть. Вопрос мой звучит очень просто - как добавить в публичное облако сервис, который востребован у нас но его нет у провайдера? Как этот вопрос решается? Сколько времени займёт? И ответ я знаю из собственного опыта, если что: "Можно открыть кошелёк и слёзно попросить провайдера. Времени займёт столько, сколько пожелает провайдер, если вообще возьмётся". Потому что каждый конкретный клиент, даже крупный - для провайдера это всего лишь один клиент.


  1. evoq
    23.11.2023 19:54
    +4

    Прочел с интересом. Но имея опыт работы на крупном проекте X5 видел как информация о проекте отобразила только удобную сторону проекта для менеджмента. В этой статье попахивает немного схоже. Хочется конечно сразу же увидеть мнение от конечных пользователей - уж больно много пафоса . Хотя должен признать - в Х5 сильная айти-культура. Но не все-таки не уровня мировых лидеров, чтобы писать "искали, но не нашли". Скорее, кажется, плохо искали по некоторым своим причинам. Переключение на инхаус - разработку для сложных систем напоминает создание уже изобретённых колёс заново, хотя сейчас понимаю ноги растут из-за конъюктуры на росс. рынке из-за войны.


    1. thunderclouds
      23.11.2023 19:54

      Х5 Технологии это 4000 чел и очень много разных проектов и продуктов. Если у вас был такой опыт - это не означает что так везде.

      Я довольно подробно описал как мы к этому пришли. Если есть "silver bullet" мы с интересом изучим.


  1. Minashvili_George
    23.11.2023 19:54
    -4

    Поздравляю с публикацией!

    Видно, что проделана большая работа.
    Наконец-то вижу статью на Хабре с настоящим уникальным и думающим подходом в таком большом инфраструктурном ландшафте.

    Блестящее решение.


  1. ozzyBLR
    23.11.2023 19:54
    +1

    Каким образом частное облако обыграло публичное по скорости предоставления ресурсов утилизации?

    Алсо, есть некоторые манипуляции. Тот факт, что предоставление ресурсов с т.з. согласований и закупок занимало времени - это прежде всего проблема процессов. Процессов запросов и согласований, процессов планирования.


    1. thunderclouds
      23.11.2023 19:54
      -1

      Не совсем верно прочитали. В разделе про медленные цоды речь шла про цод как сервис vs классический корп колокейшн.

      А в начале статьи речь про то, что до появления норм платформы у нас была по-заявочная система.


  1. Migra
    23.11.2023 19:54

    Спасибо, очень интересно. Хорошо, что небольшая компания может воспользоваться сервисами небольшого локального облачного провайдера, а большая компания - сделать себе свое собственное родное облако прямо на железе. Потому что плохо, когда облаков на свете всего 3 и они в 2-3 раза дороже, чем можно бы было сделать самим.


  1. rsmith
    23.11.2023 19:54

    Mirantis вынужден был проинформировать нас о том, что мы должны прекратить использование их программного обеспечения. 

    Каждый раз видя такую формулировку, так и подмывает спросить "а не то что вы нам сделаете если не прекратим?"


    1. moskvalex
      23.11.2023 19:54

      У вас просто лицензионный ключ работать перестанет и продукт превратится в тыкву, только и всего :)


  1. rkid
    23.11.2023 19:54

    Мощный проект. Хотелось бы почитать подробнее от вас про:

    • Commodity-решения для сети. Что используете?

      P.S.: зарубежные вендоры паблик клауд вполне себе используют вендорские коробки ;) И Cisco (в т.ч. с SONiC, понятно у кого, в первую очередь) и Arista и др. Но, с тз оркестрации они там и вправду довольно сильно commoditized.

    • На чём построен SDN? Управляете через нативные API вендора или Net. OS, или через прослойки в виде Ansible/TF (или что-то ещё, вроде Nornir)?

    • Как именно в нём осуществляете сегментацию и service insertion?

    • Есть какая-то хитрая оркестрация, непосредственно связанная с наличием контейнеров в вашей SDN?

    • Всегда интересовало как рассчитывается предполагаемая нагрузка и соответствующий ТСО (вы упомянули РСМ в комментариях - было бы интересно почитать про методологию исходя из вашего опыта на этом проекте)