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

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

Доступность против надежности

Доступность и надежность — два похожих, но очень разных понятия. Важно понимать разницу между ними.

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

Доступность обычно относится к способности вашей системы выполнять задачи, на которые она способна. Система рядом? Он работает? Он отвечает? Если ответ да, то он доступен.

Как видите, доступность и надежность очень похожи. Системе сложно быть доступной, если она ненадежна.

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

Более того, когда мы думаем о доступности, мы думаем о том, «работает» ли система. Если я пошлю ему запрос, он ответит?

Система, которая складывает 2+3 и получает 6, имеет низкую надежность. Система, которая складывает 2+3 и вообще никогда не возвращает результат, имеет плохую доступность. Надежность часто можно исправить путем тестирования. Доступность обычно гораздо сложнее решить.

Вы можете внести программную ошибку в свое приложение, которая может привести к тому, что 2+3 даст ответ 6. Это можно легко обнаружить и исправить в наборе тестов.

Однако предположим, что у вас есть приложение, которое надежно выдает результат 2+3=5. Теперь вы можете представить себе запуск этого приложения на компьютере с ненадежным сетевым подключением. Результат? Вы запускаете приложение, и иногда оно возвращает 5, а иногда ничего не возвращает. Приложение может быть надежным, но оно доступно.

Что вызывает плохую доступность?

Что приводит к тому, что приложение, которое ранее работало хорошо, начинает обеспечивать низкую доступность? Есть много причин:

  • Исчерпание ресурсов. Увеличьте количество пользователей или объем данных, используемых в системе, и ваше приложение может стать жертвой исчерпания ресурсов, что приведет к замедлению работы и зависанию приложения.
  • Незапланированные изменения в зависимости от нагрузки. Рост популярности вашего приложения может потребовать внесения изменений для обработки возросшей нагрузки. Эти изменения, часто происходящие в последнюю минуту практически без предусмотрительности и планирования, повышают вероятность возникновения проблем.
  • Увеличено количество движущихся частей. Популярные приложения часто имеют все большее число разработчиков, дизайнеров, тестировщиков и других лиц, работающих над приложением. Это большее количество людей, работающих над приложением, создает большое количество движущихся частей. Чем больше людей работает над приложением, чем больше движущихся частей внутри приложения, тем выше вероятность нежелательных взаимодействий в вашем приложении.
  • Технический долг. Увеличение сложности приложений обычно увеличивает технический долг. Это увеличивает вероятность возникновения проблемы.

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

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

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

Первоначально опубликовано на www.leeatchison.com 14 января 2016 г.