avatar
Карьера аналитика
@analytics_career
29.11.2022 14:55
❗️Лонгрид, который нужно дочитать.

Продолжаем про REST и его принципы:

2️⃣ Statless (без состояния)

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

Такой подход значительно ускоряет время обработки запроса, позволяет масштабировать сервер и использовать кэширование.

3️⃣ Кэширование
В оригинале этот принцип говорит нам о том, что каждый ответ от сервера должен иметь пометку - можно ли его кэшировать.

Что такое кэширование само по себе?

Например, клиент вызвал сервер и говорит ему: "Дай мне информацию о пользователе Андрей".
Для получения этой информации сервер сходил в какой-нибудь сервис, где хранятся данные пользователей, добыл из него информацию об Андрее и вернул на клиент, предварительно сохранив ее в кэше.
В следующий раз, когда клиент запросит информацию об Андрее, сервер достанет ее мгновенно из кэша, а не будет осуществлять интеграцию с сервисом хранения пользовательских данных, что, очевидно, очень сильно сэкономит время и в целом нагрузку на систему.

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

4️⃣ Единообразие интерфейса

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

5️⃣ Layered system (слоистая архитектура)
В первом пункте мы рассматривали только два участника взаимодействия внутри системы - сервер и клиент. В реальной жизни между ними могут быть, к примеру, proxy-сервера, роутеры, балансировщики — все, что угодно. И то, по какому пути запрос проходит от клиента до сервера, мы часто не можем знать.

Концепция слоистой архитектуры заключается в том, что ни клиент, ни сервер не должны знать о том, как происходит цепочка вызовов дальше своих прямых соседей.
❗️Таким образом, меняя состав этой "цепочки" вызовов, например, добавляя новые балансировщики, proxy и т.д., мы не должны замечать никакой разницы и это не должно приводить к доработкам на стороне клиента или сервера.

#аналитика #интеграции #REST
5
👍 4
🔥 1
17 1.3K

Обсуждение 0

Обсуждение не доступно в веб-версии. Чтобы написать комментарий, перейдите в приложение Telegram.

Обсудить в Telegram