Короткий ответ
Single point of failure (SPOF) — это компонент системы, отказ которого приводит к отказу всей системы или значимой её части, потому что у него нет резервирования или альтернативного пути обработки запроса.
Как это работает подробнее
SPOF находят, рисуя диаграмму зависимостей сервиса и для каждого компонента (включая "невидимые" — DNS, сертификаты, единственный NAT gateway, единственная очередь сообщений) задавая вопрос "что произойдёт, если этот компонент станет недоступен?". Если ответ — "весь сервис упадёт", это SPOF.
Пример / кейс
Ожидаемое поведение: при анализе диаграммы становится видно, что несмотря на резервирование приложения, отказ единственного NAT gateway или базы данных всё равно положит весь сервис — это и есть скрытые SPOF, которые нужно устранять в первую очередь.
Пример кода
example.txt
Архитектура: 5 инстансов приложения в разных зонах → единственный NAT gateway в одной зоне
→ единственная база данных без реплики.Что использовать на практике
- Практический подход. Устранение SPOF обычно означает добавление резервирования (несколько инстансов, несколько зон/регионов) или хотя бы graceful degradation при его отказе. Не все SPOF экономически целесообразно устранять — иногда дешевле принять риск и описать его явно, чем резервировать редко используемый компонент.
Подводные камни
- Частые ошибки. Резервировать приложение, но оставлять единственную точку отказа в инфраструктуре (единственный NAT gateway, единственная зона доступности, один DNS-провайдер); не рассматривать внешние зависимости (например, единственный провайдер аутентификации) как потенциальный SPOF; считать, что "облако само всё резервирует" без проверки конкретной конфигурации.