Tuesday, May 3, 2011

REST архитектура

В процессе размышлений о системном стеке решил попробовать использовать принципы REST-архитектуры. Несколько предлагаемых принципов:

  • система представляется как множество ресурсов, к которым могут быть применены стандартные операции получения, удаления и изменения
  • все доступные ресурсы имеют собственный идентификатор
  • вся необходимая информация для выполнения запроса передается с самим запросом, т.е. отсутствует серверный контекст

Если следовать этим принципам, то открываются интересные возможности для системы, не имеющей серверного контекста:

  • она отлично скалируется горизонтально
  • исчезает необходимость синхронизации данных сессии
  • упрощается выведение серверов на поддержку
  • если результат исполнение запроса не зависит от пользовательской сессии, а зависит лишь от адреса, по которому произошло обращение, то ответ сервера может быть эффективно закэширован


Все это смотрится весьма заманчиво для массовой интернет-системы.
Есть и еще одно интересное следствие из такой архитектуры - ее высокая модульность и расширяемость. Добавление новых типов ресурсов можно производить практически независимо от остального кода, не трогая остальных сервисов.

В общем, я, кажется, купил :)

No comments: