Архитектурное правило, согласно которому каждый запрос от клиента к серверу обрабатывается независимо от предыдущих. Сервер не сохраняет информацию о состоянии клиента между запросами.
Ключевые аспекты:
- Сервер не помнит клиента: Каждый запрос содержит всю необходимую информацию для его обработки.
- Масштабируемость: Упрощается горизонтальное масштабирование, так как любой сервер может обработать любой запрос.
- Надежность: Отказ одного сервера не влияет на возможность обработки запросов другими серверами.
- Пример: HTTP является протоколом без сохранения состояния.
Применим в различных уровнях архитектуры, включая:
- UI: Отсутствие сохранения состояния на фронтенде между сессиями.
- Backend API: Каждый запрос к API автономен.
- База данных: СУБД сама по себе может быть Stateful, но взаимодействие с ней через Stateless API возможно.
Преимущества:
- Улучшенная производительность и масштабируемость.
- Упрощенное развертывание и обслуживание.
- Повышенная устойчивость к сбоям.
Недостатки (которые решаются внешними механизмами, такими как сессии, токены):
- Необходимость передавать данные состояния в каждом запросе.
- Сложность управления длительными сессиями без дополнительных средств.