2008-10-12

Highload++ 2008: RESTful архитектура для масштабируемых систем

По сути живой пересказ статьи RESTful. В двух словах — «RESTful» это отход от изобретания сущностей и использования HTTP, как протокола транспортного уровня (типа SOAP/WS-* и прочего откапывания стюардессы, то есть CORBы), к его настоящему статусу универсального прикладного вебпротокола. Собственно эту архитектуру и придумал автор HTTPшного RFC 2116.

CORBA похоже уже всех достала, вот даже доклады по ней зарубают.

Все состояния хранятся на клиенте, а взаимодействие с сервером полностью определяется URLом ресурса, и примененным к нему HTTP-методом. HTTP-методам надо вернуть их семантику («GET» — для запроса, «POST» — для изменения и т. п.) и тогда наступит счастье, ибо будет идеальное масштабирование — любой «GET» или «POST»-запрос можно направить к любому серверу, так как он будет полностью самодостаточен для выполнения без малейших кук и серверных сессий. Соответственно все шоколадно должно быть с кешированием и т. п.

В реале думаю, далеко не безоблачно. Я сразу вспомнил, как я лет 10 назад наелся проблем с ограничением буфера (4КБ. в Apache), плюс ограничение броузера (IE вроде до последних версий было 2КБ), из-за чего все кто мог, не приходя в сознание перешли на метод «POST» и использовали «GET» только при тривиальных операциях.

Пробежался по вебу с запросам «REST GET max size» — проблемы еще вполне актуальны.

Плюс, совершенно непонятно как делать авторизацию (гонять «авторизацию» в параметрах — явно бред, хотя некоторые так делают).

Плюс, неочевидный момент — с интерфейсной точки зрения, все это будет мешать делать короткие запоминаемые и удобные пользователю URLы, и таким образом вышибать из использования такой активно используемый многими интерфейс, как адресная строка. Представьте, что все варианты запросов лягут в историю URLов в адресной строке — она станет совсем бесполезна, как для быстрого набора с подсказкой, так и для поиска или перебора.

В общем, пока непонятно. Возможно RESTful хороша для всякого AJAXа, где состояние по-любому живет на клиенте. Может с внедрением HTML5 броузеры будут более-менее полность адаптированы под REST.

Комментариев нет: