Доступность в новом году
Вы когда-нибудь пытались собрать несколько человек в одном месте в одно и то же время? Согласитесь, что это бывает нелегко даже для компании из трёх человек. И даже если двое уже на месте, третий может серьёзно опоздать. Впереди новогодние праздники и встречи неизбежны, так почему бы не поднять тему доступности! ;-)
Программиста Сашу оставили дежурить все новогодние праздники, ведь степень его ответственности настолько высока, что доступность составляет аж 99.00! Тимлид Петя уверен, что за все две недели, пока он будет есть оливье, Саша будет офлайн не более 15 минут в день. А вот если бы он дал Саше в помощь безответственного Игоря, доступность которого еле-еле достигает 80.00, то вместе они бы настолько весело проводили время, что могли бы до 5 часов игнорировать входящие сообщения.
Давайте разберёмся, откуда Петя всё это знает и как он смог обеспечить себе стабильный новый год.
Дело в том, что примерно то же самое происходит и в программной системе, когда для выполнения какой-то операции нужен доступ к нескольким службам одновременно. Например, сходить в парочку микросервисов и БД.
Как только на очередном собрании вы слышите, что кто-то предлагает усложнить алгоритм добавлением еще одного звена, вспоминайте о доступности. Петя давно заметил, что в пылу обсуждений об этом нередко забывают: "Для ускорения роутинга мы сделаем в PostgreSQL специальную таблицу..." Если PostgreSQL будет недоступен, то стабильный, но медленно работающий роутинг перестанет работать. Вы к этому готовы?
Доступность – это способность системы долго и непрерывно находиться в рабочем состоянии. Она измеряется в процентах. 100% означает, что сервис всегда работоспособен, но такой показатель практически недостижим, поэтому говорят о "девятках". Сервис с доступностью 99.99% недоступен 8.64 секунды в сутки.
Как вычислить общую доступность? Если компоненты работают последовательно, то вероятность полного отказа равна произведению вероятностей отдельных отказов. Допустим, у вас есть три компонента системы с известной доступностью: A=99%, B=98%, C=97%. Общая доступность равна: A*B*C=0.99*0.98*0.97=0.9411. Это значит, что такая система будет недоступна (1-0.9411)*24=1.41 часа в сутки. Многовато, не так ли?
Кажется, что только Саша был не в курсе этой простой арифметики. В любом случае, Саша, счастливого тебе Нового года!
P.s. Посмею напомнить, что у меня есть Telegram-канал "Архитектоника в ИТ", где я публикую материал на похожие темы примерно раз в неделю. Подписчики меня мотивируют, но ещё больше мотивируют живые дискуссии, ведь именно в них рождается истина. Поэтому подписывайтесь на канал или на мой блог здесь. Будем обмениваться опытом и мнениями. ;-)