🔝 Eventual consistency (моя любимая) и доступность
В распределённых системах высокая доступность часто достигается за счёт согласованности "когда-нибудь" - модели, при которой данные со временем становятся согласованными, но не гарантированно сразу.
Это напрямую влияет на UX:
🔻 пользователь может не увидеть только что созданный объект;
🔻 разные экраны показывают разные версии данных;
🔻 возможны «скачки» состояния.
В high-load системах только так и выживают, но для пользователя - это источник когнитивного диссонанса.
🔃 Так что же выбрать: точность или доступность?
В основе всей проблемы лежит фундаментальный выбор:
🔸При доступности выигрываем uptime, но проигрываем точность данных
ИЛИ
🔸При согласованности выигрываем точность данных, но проигрываем время отклика.
На практике это проявляется так:
быстрый ответ → возможна неточность
точный ответ → выше риск таймаута или ошибки
И вот тут начинается работа системного аналитика, как мастера задавать неудобные, но правильные вопросы.
🟩 где допустима устаревшая информация?
🟩 какие операции должны быть строго консистентны?
🟩 какой уровень UX деградации приемлем?
Поэтому надежность мы рассматриваем под иным углом: про непрерывность взаимодействия любой ценой.
🟪 Как формализовать деградацию?
Всего 3 вопроса для фиксации в требованиях:
1. какие функции отключаются
2. какие данные упрощаются
3. как это отображается в UI
И ваша деградация становится управляемой.
Итог:
Максимальная доступность - это инженерный идеал, но в жизни она может только мешать. Чем ближе система к максимальной доступности, тем чаще она вынуждена работать "вполсилы". Поэтому нужно осознанно выбирать, где допустима деградация, и делать её максимально безболезненной для пользователя.
Канал есть в MAX
Post #154
101