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

Разговоры про мультиоблако в российском сегменте долго велись где-то на уровне университетских лекций и презентаций корпоративных архитекторов. Считалось, что это история для больших — для тех, у кого штатный CIO, отдел DevOps на десять человек, бюджет с шестизначными числами на инфраструктуру в месяц и юридический департамент, отдельно занимающийся вопросом, в каком регионе хранятся персональные данные. Средний бизнес обычно жил в одном облаке: либо весь парк в Selectel, либо весь в Timeweb, либо весь в Яндекс.Облаке, реже — на классическом dedicated железе у одного из хостеров. Один кабинет, один счёт, один способ создавать серверы, один формат метрик, один админ, который знает, где что лежит. Простая, понятная, удобная картина — пока не начинаются сложности.
А сложности начались примерно с весны 2022 года, когда часть зарубежных сервисов внезапно стала недоступна с российских IP, часть российских — с европейских, поломалась оплата зарубежных провайдеров с российских карт, а потом ещё и заработал 152-ФЗ в более жёсткой редакции, и хранение персональных данных российских граждан перестало быть формальной отметкой в политике конфиденциальности. Параллельно росли цены на трафик в Европе, появлялись новые санкционные риски, у клиентов компаний стали возникать неудобные вопросы про доступность сервисов из разных стран, и тихий, спокойный мир одного облака начал трещать по швам. К 2026 году ситуация стабилизировалась, но уже в новой нормальности — где у среднего бизнеса с парком в десять-двадцать серверов почти всегда обнаруживаются как минимум два провайдера, а иногда три или четыре, и редко это решение принимается осознанно. Чаще оно складывается стихийно: один сервер тут, потому что так дешевле, другой там, потому что нужен европейский IP, третий вообще dedicated, потому что 1С не пускает на виртуалки. И вот через два года руководитель смотрит на бумаги и понимает, что у него на руках четыре договора, четыре разных кабинета биллинга, четыре способа создавать инстансы, четыре формата метрик и ноль возможности увидеть общую картину.
Вопрос «зачем нам вообще мультиоблако» в этой точке уже не имеет смысла — оно уже есть. Вопрос правильный звучит так: как из стихийного зоопарка превратить эту конструкцию в управляемую систему, и где та граница, после которой добавление ещё одного провайдера приносит больше боли, чем пользы.
Когда мультиоблако действительно нужно
Прежде чем говорить про инструменты, стоит честно разобрать сценарии, в которых разнесение инфраструктуры по нескольким провайдерам приносит реальную выгоду, а не воображаемую. Первый и самый очевидный — географическое резервирование с учётом политической реальности. Если у компании есть клиенты и в России, и в Европе, и при этом важно, чтобы сервис был доступен из обеих юрисдикций, держать весь стек в одной географической точке стало небезопасно. Не потому что упадёт дата-центр — это, как раз, маловероятно, — а потому что внешние факторы могут отрезать трафик в одну сторону. Российский сервер недоступен из части европейских стран без VPN, европейский — из части российских регионов. Решение — основной парк в России, например в Timeweb с серверами в локациях ru-1 и ru-3, плюс одна-две вспомогательные ноды в Европе, чаще всего в Hetzner в локации de-1 или у того же Timeweb в nl-1, для VPN-выходов, прокси, аналитики и нагрузки, которая должна обслуживать европейскую аудиторию.
Второй сценарий — экономика хранения. Российские провайдеры в среднем дороже европейских в части холодных данных. Гигабайт долговременного хранения в Hetzner или DigitalOcean Spaces заметно дешевле, чем в большинстве российских облачных хранилищ, и при объёмах в сотни гигабайт — а это типично для бэкапов сайта, видеоархива, медиабиблиотеки — разница за год набегает ощутимая. Поэтому достаточно частая конфигурация выглядит так: продакшен и горячие данные крутятся в российском провайдере, бэкапы и архивы лежат в S3-совместимом хранилище зарубежного. В случае с Timeweb это вообще удобно решается: они дают свой S3-сервис s3.twcstorage.ru, и для большинства задач именно его и используют, но для долгосрочных архивов и второй копии бэкапов имеет смысл иметь зеркало где-то ещё. Это вторая копия закона трёх копий: одна на боевом сервере, одна у того же провайдера, одна у другого. Падение или блокировка целого провайдера — редкое, но возможное событие.
Третий сценарий — специфика конкретных сервисов. 1С исторически живёт на Windows-серверах, и хороший Windows-сервер с лицензией удобнее всего арендовать у российского провайдера, который умеет это правильно делать. Видеохостинг с европейской аудиторией требует трафика, который в Европе стоит копейки, а в России — десятки рублей за гигабайт. Если на сервисе крутятся видео общим объёмом в терабайты, разница между российским и европейским размещением видеоноды может составлять десятки тысяч рублей в месяц. Платформа машинного обучения с GPU-ускорением — это вообще отдельная история, тут провайдеров с адекватными ценами на GPU в России можно посчитать по пальцам одной руки, и многие до сих пор едут в DigitalOcean или AWS просто потому, что там есть нужное железо.
Четвёртый — compliance. 152-ФЗ обязывает хранить персональные данные российских граждан на серверах, физически расположенных в России. Это не означает, что вся остальная инфраструктура должна быть там же. Можно держать основной продакт-сервер с базой данных пользователей в России, а аналитический контур, который оперирует уже обезличенными данными, развернуть где угодно. Это разумная архитектура, но она по определению мультиоблачная.

Список серверов одного парка в Timeweb — но архитектурно панель готова к подключению Hetzner, AWS, DigitalOcean и любых выделенных серверов через custom-SSH
Когда мультиоблако не нужно
Теперь о другой стороне. Если у компании всего три web-сервера, один сайт, одна база данных, никаких европейских клиентов, никаких видеоархивов и никакого 1С — никаких причин разносить эту скромную конструкцию по нескольким провайдерам нет. Точнее, причина одна — собственное беспокойство о вендор-локе, и оно почти всегда переоценено. Стоимость операционной сложности мультиоблака для маленькой инфраструктуры катастрофически высокая: вместо одного логина админ помнит четыре, вместо одного интерфейса учится четырём, вместо одного формата биллинга разбирается в четырёх, вместо одного типа SSH-ключей разбирается в десятке. И всё это ради эфемерной защиты от события, которое почти не случается — резкого ухода провайдера с рынка или его внезапной деградации.
Граница, после которой мультиоблако начинает оправдывать себя, проходит примерно по точке восьми-десяти серверов в одном парке и наличию хотя бы одного из четырёх перечисленных выше факторов. Если ни одного — лучше остаться в моноархитектуре и направить усилия на резервирование внутри одного провайдера: разные локации того же Timeweb (ru-1 и ru-3 — это разные дата-центры в разных городах), реплики базы, snapshot-бэкапы плюс внешний S3 на бэкапы. Этого достаточно для абсолютного большинства случаев.
И есть третья категория, в которую попадает большинство по-настоящему средних компаний, — когда мультиоблако оправдано, но не на четыре провайдера, а на два. Один основной — везде, где можно, держать там. Один вспомогательный — для тех задач, под которые основной не подходит. Это компромисс, который сохраняет управляемость и при этом закрывает реальные риски. Дальше можно дискутировать про добавление третьего, но три провайдера — это уже всегда осознанное архитектурное решение, а не стихийность.
Реальная картина типичной средней компании
Чтобы говорить предметно, имеет смысл рассмотреть пример из жизни — типичный парк российской компании на сорок-пятьдесят человек, у которой и веб-сервисы, и 1С, и какая-то международная аудитория, и понятная история роста. Основной парк — двенадцать серверов в Timeweb, разнесённые по локациям ru-1 (Москва), ru-3 (Санкт-Петербург) и nl-1 (Амстердам, нидерландский дата-центр самого Timeweb). На этих серверах живут: основной портал, CMS, базы данных, серверы приложений, очереди задач, ноды видеохостинга, почтовый сервер с Mailcow, корпоративный мессенджер на Mattermost, узел для встреч на Jitsi. Всё под Linux, всё разворачивается стандартными скриптами, всё мониторится централизованно. Один провайдер — один кабинет — один счёт раз в месяц.
К этому добавляется отдельная история — 1С:Управление торговлей. Она крутится не у Timeweb, а на выделенном Windows-сервере у другого провайдера, потому что так исторически сложилось, и переносить её — себе дороже. Со стороны это просто IP-адрес, к которому компания обращается через OData REST API и периодически — через прямой SSH с проверкой работоспособности. С точки зрения единого управления — это никак не виртуальная машина в облаке, это отдельная сущность, у которой свой логин, свой пароль, свой формат биллинга, своя боль с обновлениями.
К этому же добавляется бэкап-хранилище — основной бакет в S3 Timeweb (servers-backups), куда каждую ночь складываются полные дампы баз и архивы конфигов. И добавляется вторая копия избранных данных в зарубежном S3 — для самых критичных вещей, потерять которые означает потерять бизнес. Это не используется в обычной работе, это страховка от события, вероятность которого мала, но цена реализации — катастрофична.
И добавляется один арендованный сервер в Hetzner в Германии, который выполняет две функции: точка выхода VPN для тех, кому нужен европейский IP, и площадка для прокси, которая позволяет российским сервисам общаться с теми внешними API, которые с российских IP-адресов уже не отдают данные. Один маленький сервер в de-1, две-три тысячи рублей в месяц, никакой нагрузки — но без него часть бизнес-процессов просто встаёт.
В сумме получается портрет: пятнадцать серверов, четыре «места обитания» — Timeweb ru-1, Timeweb ru-3, Timeweb nl-1, Hetzner de-1, плюс отдельный 1С-сервер у третьего провайдера, плюс два S3-хранилища у двух разных вендоров. И это нормальный средний бизнес. Не корпорация, не стартап-единорог — обычная торговая компания с производственным контуром, парой интернет-магазинов и автоматизированными процессами.
Управлять такой конструкцией из родных кабинетов провайдеров — это страдание. У Timeweb свой биллинг, своя панель серверов, свои графики метрик. У Hetzner — другая панель, другой формат метрик, другие единицы измерения трафика, биллинг в евро, который потом нужно вручную пересчитывать в рубли по курсу того дня, когда вышла квитанция. У выделенного 1С-провайдера — третий интерфейс, третья форма счёта. У S3-хранилищ — отдельные кабинеты, отдельные ключи доступа. И когда раз в квартал руководитель спрашивает «сколько мы тратим на инфраструктуру», ответ требует часа работы — собрать счета из четырёх мест, пересчитать валюты, привести к единому периоду, разнести по статьям. Когда возникает необходимость показать аудиту все серверы с персональными данными — снова часовая работа. Когда нужно понять, какие серверы простаивают и можно ли что-то выключить — задача почти невыполнимая, потому что метрики разнесены по четырём системам и приведены в разных единицах.
Это и есть та самая операционная сложность, ради которой мультиоблако часто не делают. Но если оно уже сложилось, и обратной дороги нет — нужна надстройка. Не замена провайдеров (они никуда не денутся), а слой управления поверх них.
Что должна уметь единая панель управления мультиоблаком
Тут стоит остановиться и сформулировать требования к инструменту, не привязываясь пока к конкретной реализации. Что нужно среднему бизнесу, чтобы перестать тонуть в кабинетах?
Во-первых — единый реестр серверов. Один список, в котором видны все физические и виртуальные машины компании, независимо от того, у какого провайдера они стоят. С базовой информацией: имя, IP, провайдер, регион, тип (виртуалка, dedicated, контейнерный хост), статус, аптайм, ключевые метрики. Не нужно открывать четыре вкладки браузера, чтобы посмотреть, что вообще есть.
Во-вторых — единый формат метрик. CPU, память, диск, сеть — одни и те же показатели для всех серверов, в одних единицах, на одном графике, с возможностью сравнения. Provider-специфичная аналитика — отдельно, общая — в одном месте.
В-третьих — единый биллинг. Все траты со всех провайдеров, нормализованные к одной валюте, с разбивкой по серверам, по типам ресурсов, по периодам. С прогнозом на месяц вперёд на основе текущего потребления. С возможностью настроить бюджет и получать алерт, когда расход приближается к лимиту.
В-четвёртых — единые операции. Перезагрузить, остановить, запустить, выполнить SSH-команду — одной и той же кнопкой, независимо от провайдера. Не «зайти в кабинет Timeweb, найти сервер, нажать перезагрузку», а «открыть свой инструмент, нажать перезагрузку», и пусть инструмент сам решает, через какой API провайдера эту перезагрузку выполнять.
В-пятых — единая безопасность. Один источник правды по SSH-ключам, один способ управления доступом, один аудит-лог. Иначе компрометация одного аккаунта у одного провайдера превращается в эпопею с проверкой остальных трёх.
В-шестых — рекомендации. Простые, понятные, основанные на реальных данных: вот сервер, который уже три недели грузит CPU меньше пяти процентов, его можно выключить или уменьшить. Вот сервер, у которого половина памяти не используется, можно перейти на тариф поменьше. Вот snapshot, не привязанный ни к одной машине, и он капает по сто рублей в месяц уже год — может, удалить?
И в-седьмых — независимость от провайдера. Это, пожалуй, самое важное. Инструмент должен быть устроен так, чтобы добавление нового провайдера не требовало переписывания половины системы. Сегодня у компании Timeweb и Hetzner, завтра она решит частично переехать в DigitalOcean — это должно решаться одним подключением, а не миграционным проектом на квартал.
Архитектурный принцип, на котором всё стоит
Если попытаться сформулировать инженерное решение этой задачи в одну фразу — нужна абстракция «облачный провайдер» как единый интерфейс, поверх которого скрываются особенности каждого конкретного API. Это классический паттерн адаптера, известный со времён, наверное, первых попыток сделать кроссплатформенный код, и в применении к мультиоблаку он работает так же чисто.
Интерфейс описывает набор операций, которые имеет смысл выполнять с любым облачным сервером, независимо от того, чья это инфраструктура. Получить список серверов в данном кабинете. Получить детальную информацию по конкретному серверу. Получить метрики — CPU, память, диск, сеть, в формате, который дальше можно сравнивать. Перезагрузить сервер. Запустить. Остановить. Выполнить SSH-команду и получить ответ. Семь-восемь базовых операций, которые покрывают примерно девяносто процентов того, что админ вообще делает с сервером изо дня в день.
Поверх этого интерфейса делаются конкретные реализации. Реализация для Timeweb обращается к Timeweb Cloud API, использует их формат токенов, парсит их JSON-ответы и приводит данные к общему виду. Реализация для Hetzner делает то же самое со своим API. Реализация для AWS использует SDK Amazon, для DigitalOcean — свой API, и так далее. Самая важная — реализация для custom-SSH, которая обрабатывает серверы, не принадлежащие ни одному «настоящему» облаку: dedicated железо у любого провайдера, on-prem машины в офисе, тестовые виртуалки в подвале. С точки зрения панели управления они выглядят так же, как облачные, — просто метрики собираются не через API провайдера, а через SSH-вызов на сам сервер.
Регистрация провайдера хранится в базе данных как объект конфигурации: какой провайдер, какие учётные данные, в каком рабочем пространстве он используется. Учётные данные — токены API, пароли — никогда не лежат в открытом виде. Шифруются симметричным алгоритмом, в случае грамотной реализации это AES-256-GCM с ключом, который хранится в переменных окружения сервера приложения и не попадает в репозиторий. Расшифровка происходит только в момент обращения к API, ключ кэшируется в памяти процесса. Это означает, что даже если кто-то получит доступ к дампу базы — он не получит ключи от облачных кабинетов.
Важный момент — уникальность подключения провайдера в пределах одного рабочего пространства. Один Timeweb-аккаунт на workspace, не больше. Это не техническое ограничение, это смысловое: если в одном пространстве сосуществуют два разных аккаунта одного провайдера, у пользователей и админов будет постоянная путаница, кто куда смотрит и куда что разворачивает. Лучше создать второе рабочее пространство, чем смешивать два аккаунта в одном.

Диалог подключения облачного провайдера — Timeweb, Hetzner, AWS, DigitalOcean или выделенный сервер по SSH. Архитектурно — один и тот же экран, разные имплементации под капотом
Когда новый провайдер подключается через интерфейс, происходит примерно такая последовательность: пользователь выбирает тип провайдера из выпадающего списка, вводит API-токен или другие учётные данные, указывает SSH-пользователя по умолчанию и порт (это пригодится для всех серверов, которые будут подключаться через этого провайдера). Система делает пробный запрос к API провайдера — обычно это вызов «получить список серверов» — и если ответ корректный, сохраняет конфигурацию. С этого момента все серверы, доступные через этот аккаунт, начинают появляться в общем списке.

Форма подключения Timeweb-аккаунта: название (как этот парк будет называться в системе), API-токен, SSH-пользователь и порт по умолчанию
Дальше начинается ежедневная работа. Список серверов обновляется по расписанию — фоновый процесс раз в несколько минут запрашивает у каждого провайдера актуальное состояние, сохраняет в базу, рассылает уведомления, если что-то изменилось (сервер выключен, перешёл в неожиданное состояние, добавился новый). Метрики собираются с другой периодичностью — обычно раз в минуту-две для активных серверов, реже для остальных. Команды управления (перезагрузка, запуск, остановка) выполняются по запросу пользователя через тот же провайдерный API, только в обратную сторону.
Cost-management как отдельный домен
Биллинг — это вообще отдельная история, которая заслуживает своей подсистемы. Каждый провайдер отдаёт информацию о тратах в своём формате: кто-то — детализированную почасовку, кто-то — суточную, кто-то — только итоговый счёт раз в месяц. Кто-то даёт данные через API, кто-то требует выгружать CSV. Валюты разные — рубли, евро, доллары. Налоги учитываются по-разному. Категории ресурсов называются по-разному: у одного — «инстанс», у другого — «виртуальная машина», у третьего — «droplet».
Чтобы свести всё это в единую картину, нужен отдельный сервис — назовём его cost-manager. Он раз в сутки в нерабочее время запускает фоновый job на каждый зарегистрированный провайдер, забирает оттуда данные о тратах за предыдущий день, нормализует их к выбранной пользователем валюте (обычно — рубли для российских компаний, по курсу из надёжного источника), разбивает по серверам и по типам ресурсов, складывает в свою таблицу CostRecord. Эта таблица — источник всей дальнейшей аналитики.

Раздел «Затраты» — все траты по всем провайдерам в одной валюте, с разбивкой по серверам, типам ресурсов и периодам
На основе CostRecord строятся отчёты. Сколько потратили в этом месяце, в прошлом, в прошлом году. По какому провайдеру сколько уходит. Какие десять серверов дороже всего. Какой сервис требует больше всего ресурсов хранения. Как менялись траты по месяцам. Прогноз на конец текущего месяца — простая экстраполяция текущего потребления.
Поверх отчётов — бюджеты. Пользователь задаёт лимит на месяц (например, сто тысяч рублей), и при приближении к этому лимиту система отправляет уведомление в почту, Telegram или другой канал. Это банально, но удивительно полезно: компании, которые впервые такое включают, обычно обнаруживают, что половина их облачного бюджета уходит на ресурсы, которые никто не помнит зачем создавал. Snapshot годовой давности от давно удалённого сервера. Volume, отсоединённый от инстанса и забытый. Зарезервированный IP-адрес, который никуда не указывает.
И здесь логично подключается следующий слой — рекомендации. Это уже не статичный отчёт, а активный анализ. Сервер с загрузкой CPU меньше пяти процентов на протяжении недели — кандидат на выключение или уменьшение размера. Сервер, у которого использовано менее двадцати процентов оперативной памяти за последние семь дней, — кандидат на переход на тариф поменьше. Snapshot или volume, не привязанный ни к одной машине, — кандидат на удаление. Бэкапы, не востребованные дольше срока retention-политики, — кандидаты на чистку. Каждая такая рекомендация показывается с ожидаемой экономией: «если выключить, сэкономишь столько-то в месяц», и пользователь решает, делать или нет.
Это даже не сложная аналитика, это просто аккуратный обзор того, что уже есть в данных. Но из родных кабинетов провайдеров такого обзора не получить — там всегда видна только своя часть, а решение об экономии часто требует сравнения между провайдерами.
Сети и связность
Отдельная тема, которую неизбежно поднимает мультиоблако, — это как серверы из разных провайдеров общаются между собой. В пределах одного провайдера большинство облаков поддерживают приватные сети — внутренние подсети, по которым серверы общаются без выхода во внешний интернет. Это и быстрее (трафик не идёт через провайдерский шлюз), и дешевле (внутренний трафик обычно бесплатный или почти бесплатный), и безопаснее (никто извне не подключится к приватному IP).

Раздел «Сеть» — управление приватными сетями внутри провайдеров
Между провайдерами приватных сетей не бывает по очевидным причинам. Если есть необходимость связать серверы Timeweb и Hetzner — это делается через VPN-туннели на уровне самих серверов. Wireguard в большинстве случаев, реже OpenVPN или Tinc. Это не задача панели управления, это задача системного администратора, но панель должна как минимум помогать с управлением этими VPN-конфигурациями: видеть, какие туннели куда установлены, какие пиры активны, не отваливалось ли соединение.
Для бизнеса, у которого мультиоблако — это «основной парк здесь, вспомогательный там, бэкапы ещё где-то», полноценная mesh-сеть между всеми облаками обычно избыточна. Хватает двух-трёх точечных VPN-соединений: между основным сервером приложения и backup-узлом для синхронизации данных, между web-нодой в России и аналитической в Европе, между VPN-выходом и внутренним сервером, к которому через этот выход обращаются.
Безопасность мультиоблачной инфраструктуры
Это та тема, по которой чаще всего возникают вопросы у руководителей, услышавших про мультиоблако. Логика такая: больше провайдеров — больше точек входа — больше риска. И эта логика верная, если безопасность построена так же, как двадцать лет назад: на общих паролях, общих ключах, доверии «вот мой админ, он всё знает».
Современная модель безопасности мультиоблака исходит из обратного принципа: каждый сервер — отдельная крепость. Если кто-то получает доступ к одному серверу, это не должно автоматически давать доступ к остальным четырнадцати. Реализуется это через простое и жёсткое правило: на каждом сервере свой уникальный SSH-ключ. Никаких «одного на все» — это первая ошибка, которую делают компании, разрастающиеся с одного сервера до двадцати. Сначала кажется удобным иметь один общий ключ и держать его в общей папке, потом удобно — пока однажды этот ключ не утекает и не приходится менять его на двадцати серверах одновременно, а тем временем кто-то уже успевает зайти везде.
В правильной архитектуре панель управления хранит для каждого сервера свой ключ, зашифрованный тем же AES-256-GCM, что и провайдерские токены. Когда нужно выполнить SSH-команду, ключ расшифровывается на лету, используется и тут же выгружается из памяти. Никто из людей этот ключ глазами не видит — его нет ни в репозитории, ни в файлах конфигурации, ни в личных папках админов. Если возникает необходимость передать доступ человеку — выдаётся отдельный, временный, привязанный к конкретному человеку ключ, который потом отзывается. Если человек уходит — отзываются его ключи, а не общий-один-на-всех.
Поверх этого — двухфакторная аутентификация на каждый сервер. Когда системный администратор открывает SSH-сессию через панель управления, помимо ключа требуется одноразовый код от приложения-аутентификатора. Опять же — уникальный для каждого сервера, чтобы компрометация одного TOTP-секрета не открывала двери в остальные. Это даёт ту самую гарантию, что даже при полном захвате рабочей станции админа (украли ноутбук, выкачали папку с ключами) злоумышленник всё равно не сможет зайти на серверы — нужен ещё телефон с настроенным аутентификатором.
И отдельный пласт безопасности — это то, что происходит с самими провайдерскими API-токенами. Они тоже шифруются в базе, тоже не светятся в открытом виде, но дополнительно для них имеет смысл настраивать ограничения у самого провайдера: токен с правами только на чтение и операции management (запуск, остановка, перезагрузка), но без права создания или удаления серверов. Если возможности создания нужны — лучше делать их через отдельный, тщательно охраняемый токен, который используется только в моменты онбординга.
Сценарий «переезд между провайдерами»
Один из частых поводов для разговоров про мультиоблако — это переезд. Компания решает уйти от одного провайдера, потому что у него поднялись цены, или ухудшилось качество, или появились политические риски. И тут оказывается, что переехать «одним днём» невозможно: нужно перенести данные, развернуть сервисы на новом месте, прогнать всё под нагрузкой, проверить, что ничего не сломалось, постепенно переключить DNS, и только потом выключить старое. Это процесс на недели, а иногда на месяцы.
В этот переходный период инфраструктура неизбежно становится мультиоблачной — частично у старого провайдера, частично у нового, и пока это так — нужно ими управлять параллельно. Здесь правильно построенная панель управления как раз показывает себя в полный рост: новый провайдер подключается одним конфигом, его серверы появляются в общем списке, сравнение метрик и затрат становится возможным напрямую. Можно увидеть, сколько ресурсов потребляет одна и та же нагрузка на разном железе. Можно посчитать реальную, а не оценочную экономию от переезда. Можно перенести один сервис, посмотреть неделю на показатели, и только потом принимать решение о массовой миграции.
После завершения переезда старый провайдер просто отключается из системы, его серверы перестают появляться в списке, исторические данные о его метриках и затратах остаются в базе для отчётности. Никакой драматической миграции данных в панели — просто щелчок настройки.
Этот сценарий не теоретический — он повторяется в той или иной форме у среднего бизнеса раз в два-три года. Меняются цены, меняются условия, меняется политическая обстановка, появляются новые провайдеры с более выгодными тарифами. Способность быстро и без боли подключить нового, попробовать, и при необходимости отключить старого — это и есть то самое преимущество, ради которого вся эта абстракция и затевается.
Реалистичная экономика всей конструкции
Стоит честно проговорить, во что обходится поддержание такой системы. Сама панель управления — это софт, который где-то живёт. Можно купить готовую коммерческую (на рынке есть несколько решений разной степени зрелости), можно использовать opensource-решение и поддерживать самостоятельно, можно построить своё, если есть инженерные ресурсы. Самостоятельная разработка — это вложение порядка нескольких сотен человеко-часов, что соответствует месяцу-двум работы одного крепкого full-stack-разработчика. Готовое решение — это абонентская плата, обычно в пределах тысячи-двух рублей в месяц на сервер.
Сама же подсистема панели — это один небольшой сервер: фронтенд, бэкенд, база данных, фоновые воркеры. Может крутиться на той же машине, что и любой другой внутренний сервис, потребляет немного. Стоимость владения — копейки по сравнению с инфраструктурой, которой она управляет.
Зато выигрыш — заметный. Сэкономленное время системного администратора, которое он раньше тратил на переключение между кабинетами и ручную нормализацию данных, — это часы в неделю, которые можно направить на более полезные задачи. Видимые расходы, которые раньше уходили в тень, — десятки тысяч рублей в год, которые благодаря рекомендациям удаляются. Снижение риска от компрометации — это не считается в деньгах, но при пересчёте через стоимость восстановления после инцидента — серьёзная сумма.
И главное — управляемость. Компания, у которой мультиоблако управляется централизованно, может расти. Десять серверов превращаются в двадцать, потом в тридцать, потом в пятьдесят, и операционная нагрузка на каждого нового админа растёт линейно, а не квадратично. Компания, у которой каждый новый провайдер означает «ещё одна вкладка, ещё один пароль, ещё одна боль», упирается в потолок очень быстро — обычно человек просто отказывается дальше за этим следить, и контроль теряется.
Что делать прямо сейчас
Если читатель — руководитель IT-направления в средней компании и узнал в описанной картине себя, последовательность действий выглядит примерно так. Сначала — провести инвентаризацию. Посчитать все серверы, у всех провайдеров, со всеми бэкапами, со всеми API-токенами, со всеми SSH-ключами. Записать. Чаще всего на этом этапе обнаруживаются забытые ресурсы, которые тихо съедают деньги. Только это уже окупит несколько часов работы.
Потом — оценить, оправдана ли существующая конфигурация. Возможно, какие-то серверы можно объединить, какие-то перенести к основному провайдеру, какие-то — наоборот, унести к более подходящему. Оптимизация не ради оптимизации, а ради снижения количества контролируемых сущностей до минимально необходимого.
Дальше — выстроить базовую безопасность. Уникальные SSH-ключи. Двухфакторная аутентификация. Отзыв старых учётных записей. Это можно сделать без всякой панели управления, просто руками, по одному серверу, и это нужно сделать в любом случае, мультиоблако там у вас или нет.
И только после этого имеет смысл выбирать или строить инструмент управления. К тому моменту понятно, какие провайдеры действительно нужны, какие операции выполняются чаще всего, какие отчёты были бы полезны. Можно адекватно сравнить готовые решения с собственной разработкой. Можно начать с минимума — единый список серверов и единый биллинг, остальное добавлять по мере необходимости.
Мультиоблако — это не магическое решение. Это просто признание реальности, в которой нет одного провайдера, идеально подходящего под все задачи среднего бизнеса. Признать эту реальность, выстроить под неё управляемый процесс — и продолжать заниматься своим основным делом, а не борьбой с интерфейсами четырёх разных кабинетов. Именно так и должна выглядеть зрелая IT-инфраструктура у компании, которая выросла из стадии «один сервер с сайтом» и пока не доросла до «отдел DevOps на десять человек». Этой промежуточной зоной живёт большинство, и именно для неё мультиоблачная архитектура с единой панелью управления — это не роскошь, а необходимость.