Модные слова в архитектурном документе
В документе об архитектуре нашего приложения есть пара модных слов, которые я не могу назвать интуитивно
Распространяемое приложение без сохранения состояния
Сменная модель безопасности
Я могу понять, что значит распределенный, но что значит быть без гражданства? Что подразумевается под распространяемым приложением без сохранения состояния? Можете ли вы привести пример такого приложения?
Что такое подключаемая модель безопасности? Я понимаю, что подключаемый API - это то, что можно подключить или заменить другой реализацией, но я думаю, что безопасность - это то, что хорошо интегрировано в приложение и лежит в его основе. Это можно сделать подключаемым? Можете ли вы привести примеры того, как выглядит такой подход?
2 ответа
Распространяемое приложение без сохранения состояния
Распределенное приложение без сохранения состояния позволяет легко горизонтальное масштабирование (т.е. добавление большего количества машин с экземплярами приложения в систему).
Состояние без сохранения относится к экземплярам приложения, не поддерживающим информацию о состоянии. Поскольку состояния нет, любой экземпляр приложения будет выдавать один и тот же вывод для данного ввода независимо от того, какой ввод он получил ранее. Поэтому не имеет значения, какой экземпляр отвечает на запрос.
Это значительно упрощает масштабируемость, поскольку нет необходимости поддерживать сеансы, которые "привязаны" к определенным экземплярам. Логика распределения запросов (например, балансировщик нагрузки) может распределять нагрузку на любой экземпляр, не беспокоясь о том, что произошло ранее. Экземпляры могут быть добавлены или удалены из кластера, не беспокоясь о живых сессиях.
Такие архитектуры обычно поддерживают информацию о состоянии на уровне персистентности системы, что означает, что экземпляры приложения получают свежую информацию о состоянии с уровня персистентности для каждого обрабатываемого ими запроса. Это штраф за гибкость масштабирования.
Подключаемая модель безопасности
Модель безопасности определяет, как пользователи имеют право доступа к ресурсам. Примерами моделей безопасности являются списки ролей и контроля доступа.
Реализация модели безопасности взаимодействует с бизнес-логикой. Прежде чем делать что-то чувствительное, бизнес-логика должна запросить у логики безопасности авторизацию. Сложная бизнес-логика может иметь много мест, где такие проверки должны быть выполнены. Если логика безопасности и бизнес-логика тесно связаны, то есть бизнес-логика напрямую вызывает логику безопасности, трудно изменить модель безопасности.
Подключаемая модель безопасности заменяет двойную связь слабой связью, когда бизнес-логика взаимодействует через интерфейс плагина с моделью безопасности. Поскольку бизнес-логика ничего не знает о внутренних элементах логики безопасности, логика безопасности может быть заменена без изменения бизнес-логики.
Такой интерфейс плагина часто реализуется в виде набора обратных вызовов, настраивается в бизнес-логике и используется бизнес-логикой для запроса логики безопасности.
С подключаемой моделью безопасности (по крайней мере, с той, с которой я знаком) конечный пользователь получает возможность настроить, какие методы безопасности используются для приложения. Например, конечный пользователь может выбрать использование стандартного метода имени пользователя / пароля, либо смарт-карт, либо сканирования сетчатки глаза, либо некоторой комбинации вышеперечисленного. Он "подключаемый", потому что поставщик, предоставляющий механизм безопасности (устройство чтения смарт-карт или что-то еще), предоставляет некоторое программное обеспечение для подключения к инфраструктуре аутентификации.
Некоторые примеры см. В разделе Сменные модули аутентификации Linux (PAM) или Java-пакет javax.security.auth.login.