HighLoad++

Конференция разработчиков
высоконагруженных систем

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

Сергей Скворцов




RESTful архитектура для масштабируемых систем / Сергей Скворцов

Тезисы

Цель доклада – рассказать о преимуществах RESTful архитектур для использования в масштабируемых системах.

REST – это настоящий веб!

  • Что есть «ресурс»?
  • Representation – как это?
  • Почему «State transfer»? “Application state” vs. “resource state”.
  • Programmable Web vs. Human Web
  • Web Service vs. Web Application

Альтернативы:

  • XML-RPC
  • SOAP
  • WS-*

Что такое «истинный REST»?

  • Addressability
  • Statelessness
  • Connectedness
  • Uniform interface

Почему REST?

  • HTTP – это application protocol, а не transport protocol
    • Lingua franca для веб-девелоперов
    • Понятные всем методы
    • Понятные всем коды ответа
    • Прозрачен, легко отлаживать, есть библиотеки клиентов (и серверов!) для всех языков
    • Кэшируемость – это важно!
  • «Существительные» (ресурсы) против «глаголов» (методов)
    • GET, POST, PUT, DELETE, (+ HEAD)
    • CRUD?
    • SQL: SELECT, INSERT, UPDATE, DELETE

Масштабируемость

  • Components, Connectors, Data elements
  • Одна точка входа (end-point) RPC против полного URI – лучше распределяется нагрузка в последнем случае
  • Состояние на стороне клиента vs. “session affinity”
  • Statelessness – лучший load balancing.
  • Масштабируемость по URI «на пальцах»
  • Слоевая архитектура: веб-уровень для людей -> веб-уровень для программ -> application/DB/etc.
  • Общий интерфейс -> независимость компонентов + loose coupling.
  • Надежность: идемпотентность GET, PUT, DELETE.
  • REST as Unix Way!

Где используется REST:

  • True REST:
    • Atom Publishing Protocol – классический reference case
    • Google: Search, OpenSocial, Feeds, Translate, …
    • Amazon: S3, etc.
    • Yahoo!: почти все API
    • Ваше API?

Advanced topics:

  • Кошерны ли cookies?
  • Method override.
  • Форматы представлений:
    • JSON
    • YAML
    • XML (POX, Plain Old XML)
    • Plain Text?
  • Нужен ли WADL?
  • XHTML 5
    • form method=”PUT” template="/user/{username}"
    • form method=”DELETE”
  • REST и транзакции

В итоге, почему REST?

  • Просто, понятно и прозрачно
  • Логическая изоляция ресурсов от пользовательского веб-уровня
  • Масштабируемо, кэшируемо, надёжно.

Целевая аудитория

Веб-разработчики, которые хотят знать «что такое», «почему» и «где». В частности, про REST.

Где применимо?

Везде, где есть HTTP. Или так: везде, где есть Интернет.

О докладчике

Сергей Скворцов - технический руководитель, committer FreeBSD, Perl adept, RESTafarian, и прочая, прочая.

Контакты: skv@protey.ru
По любым вопросам обращайтесь:
Олег Бунин (, +7 (916) 635-95-84 , +7 (495) 646-07-68 , icq: 55370856, skype: oleg.bunin, @olegbunin, oleg-bunin.livejournal.com)
Пресс-служба : Джин Колесников (, +7 (917) 596-05-09 )

Почтовый адрес для отправки документов: ООО «Онтико», 115114, Москва, Летниковская ул., 16, офис 402 +7 (495) 646-07-68

Rambler's Top100
Рейтинг@Mail.ru