Последние сбои в AWS, которые на прошлой неделе затронули крупнейшие сервисы, снова подняли старую дискуссию — что лучше: собственная инфраструктура или облако. Такие обсуждения в целом уже обыденность в нашей жизни и я бы оставил их без внимания, но после вчерашнего сбоя в Azure удержаться уже не смог.
Лично наша команда никак не пострадала. Мы столкнулись с небольшими сложностями из-за зависимых внешних сервисов, что добавило нагрузки на команду сопровождения, но ядро торговой системы продолжало работать без сбоев. Сам сбой Azure мы, по сути, заметили только из новостей.
Мы давно придерживаемся гибридного подхода. При проектировании архитектуры тщательно распределяли компоненты между собственными серверами и облаком, чтобы объединить преимущества и нивелировать слабые стороны. В результате выработали для себя несколько принципов.
Первое — все бизнес-критичные задачи должны быть внутри. Речь о тех процессах, без которых нарушается нормальное обслуживание клиентов и выполнение ключевых операций. Главная сложность — правильно определить границы критичности. На первый взгляд кажется, что это почти весь бизнес, но на самом деле важно чётко понимать, за что вы отвечаете перед клиентом, что входит в ваш SLA и какие функции клиент ожидает от продукта. Если часть этих функций вынесена в облако, это тоже должно быть отражено в SLA, ведь сбой стороннего сервиса неминуемо скажется и на клиенте.
Второе — задачи с высокой утилизацией процессора выгоднее держать on-prem. Если у вас есть процессы, которые нагружают CPU круглосуточно, покупка собственных серверов быстро окупается. Мы пересчитывали это много раз, и пока факт остаётся фактом: постоянные высоконагруженные вычисления в облаке обходятся дороже.
Я вот про “безопасность” я тут наоборот, не пишу. Для уровня middle и small-enterprise бизнеса я считаю что поддержка собственной функции контроля периметра обходится даже выше, чем использование AWS/Azure - там защита из коробки лучше. А защита “каких-то данных” на серверах и в БД является вообще не самым приоритетной точкой. Вектор атаки в 80% случаев нацелен на людей - пароли, доступы, почта, социальная инженерия и тд.
Облако подходит для гибкости. Оно идеально, когда нужно быстро или временно нарастить мощности, увеличить объём данных или развернуть дополнительный стенд. В краткосрочной перспективе это удобно и экономично.
И не надо забывать про DR. За последние два года я дважды сталкивался с полной недоступностью дата-центров AWS — в Токио и в США. Поэтому резервная инфраструктура в другом DC обязательна, и как раз здесь облако отлично работает: его можно быстро включить и восстановить работу критичных сервисов.
В такой системе координат мы мы распределяем задачи между своим железом и облаком.