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