Одна из немногих вещей которые пугают и компании и разработчика это даунтайм. Мы не хотим чтобы очередной релиз или, например, миграция привели к даунтайму. Иногда даунтайм может случиться и без нашего прямого участия. Например, произошла пиковая нагрузка и сервисы упали, либо 🌋 залил лавой датацентр.
Хороший разработчик борется с даунтаймом на уровне архитектуры. Мы часто слышим что сервис
High available, реже слышим что он Fault tolerant. Иногда эти понятия путают. Давайте разберемся что есть что.Представим, что мы успешный стартап по аренде плакатов 🪧 для митингов про климатические изменения.
1️⃣ High availability
Мы хостим наш стартап в одном датацентре (
Availability Zone в AWS). В результате климатических изменений AZ затопило, вместе с ней и все сервера. Мы не можем выдавать в аренду плакаты 📉. Это не High availability.Лучше, если бы мы поместили сервера в разные
AZ и умный лоад балансер распределял бы по ним трафик. Тогда, в случае затопления, наш стартап продолжит работу. 2️⃣ Fault tolerance
Для нормальной работы нашего стартапа нужно 6 серверов, только такой сетап выдерживает текущую нагрузку. Обычно про пиковую нагрузку мы узнаем заранее, ориентируемся на твиттер Греты Тунберг. Наши сервера равномерно распределены по двум
AZ. Вдруг один затопило и все стало работать медленнее, три сервера не справляются с нагрузкой. Мы выдаем в аренду меньше плакатов 📉. Это не Fault tolerance.А вот если бы мы размещали по 6 серверов в двух
AZ, то есть имели бы избыточные ресурсы, то наши пользователи бы не заметили конфуза с затоплением. Fault tolerant системы выдерживают обычную нагрузку, даже если произошли какие-то перебои с инфраструктурой.Если представить, что каждый сервер обходится нам в 100€ в месяц, то очевидно, что построить
Fault tolerant систему дороже 💸.⬛️ Еще раз — даунтайм это плохо, из-за него бизнес теряет деньги. Лучше заранее, при проектировании, стараться строить систему где риск даунтайма мал.
High availability это маст хэв. А вот Fault tolerance это дороже, нужно посчитать имеет ли это смысл, возможно можно немного потерпеть и отмасштабировать руками.Вы строили
Fault tolerant системы? Пишите в комментариях.#хардскиллы