За последние несколько лет websockets стали более или менее стандартным компонентом во всех современных веб-приложениях, но почему так произошло и как мы к этому пришли? Что еще более важно, как websockets могут помочь вам более эффективно мониторить вашу облачную инфраструктуру?
Из-за технического характера этой темы можно очень глубоко погрузиться в детали. Но я постараюсь изложить все на относительно высоком уровне и сосредоточиться на преимуществах для пользователей нашей облачной инфраструктуры.
Старый способ ведения дел
На заре развития интернета все было статичным. Если вам нужно было взаимодействовать с сервером (помимо рендеринга статической страницы), вам приходилось выполнять какой-то CGI-скрипт. Типичным примером этого была подписка на список рассылки. Вы вводите свой адрес электронной почты, нажимаете «отправить» и видите отдельную страницу, которая обработала данные. Это, в свою очередь, был скрипт, который принимал входные данные и обрабатывал их на сервере.

К 90-м годам серверное программирование значительно развилось. Технология прошла путь от выполнения простых задач до создания полностью динамических страниц. Такие языки программирования, как PHP, и более продвинутые серверные технологии, такие как mod_perl, позволили создавать гораздо более сложное веб-программирование. Хотя эти технологии были значительными, они все еще развивались вокруг концепции генерации страницы при загрузке. После загрузки приходилось перезагружать всю страницу, чтобы обновить содержимое.
По мере развития веба мы вступили в AJAX/Web 2.0-эру ’00-х годов, веб-страницы стали гораздо более динамичными и интерактивными. Больше не нужно было перезагружать страницу, чтобы обновить содержимое на экране. Все, что требовалось сделать, — это запустить некоторые действия JavaScript. Многие AJAX-страницы по-прежнему работали на PHP, но с внедрением клиентского JavaScript их можно было сделать более динамичными.
Внедрение AJAX
С появлением AJAX постоянное взаимодействие между сервером и клиентом стало приобретать все большее значение. Внезапно от одного пользователя на определенной странице могло генерироваться значительное количество вызовов API. Мы делаем это по принципу «pull» (стягивание), что означает, что клиент запрашивал обновления с сервера через определенный интервал (или на основе какого-то действия).
С наступлением ’10-х годов стало обычным делом полностью разделять веб-страницы на фронтенд (HTML/JavaScript/CSS) и бэкенд (Ruby on Rails, Django и т. д.), который часто размещался на других серверах. Фронтенд взаимодействовал с бэкендом через API. Фронтенд был более или менее статичным. При такой тенденции выполнение вызовов API к серверу стало серьезным узким местом. Если вам нужно было получить десять разных вещей с сервера, это часто означало, что вам нужно было сделать десять разных вызовов API, причем каждый вызов нес в себе значительные накладные расходы и задержку.
Современный способ
Чтобы решить эту проблему задержки и накладных расходов, в рамках HTML5 были представлены websockets, которые теперь реализованы во всех современных браузерах. В отличие от традиционного подхода «pull» (когда клиент запрашивает изменения у сервера), websocket — это, как следует из названия, сокет, через который сервер может «проталкивать» (push) изменения клиенту. Следовательно, если изменений нет, нет необходимости в каком-либо обмене данными. Кроме того, поскольку клиент может напрямую взаимодействовать с сервером без дополнительных накладных расходов на открытие и закрытие соединений, приложение становится намного более отзывчивым.
Именно так устроено наше собственное веб-приложение. Само приложение представляет собой статическую страницу, которая открывает соединение websocket с API. Как только этот сокет открыт, веб-приложение может получать уведомления об изменениях от сервера. Мы по-прежнему отправляем команды в RESTful API, но отправляем уведомления с сервера клиенту с помощью websocket.
Не только для веб-страниц
Хотя наиболее очевидным сценарием получения обновлений через веб-сокет является использование браузера, существуют и другие варианты. Возможно, вы пишете инструмент, который отслеживает изменения в вашей архитектуре и запускает действия на основе этого. В таком случае вы можете значительно ускорить работу своего приложения, используя наш веб-сокет.
В нашей библиотеке Python, pycloudsigma, у нас есть встроенная поддержка веб-сокетов. У нас даже есть простой пример того, как вы можете использовать это для мониторинга активности веб-сокетов всего с помощью нескольких строк кода. Вот краткая демонстрация работы monitor_websocket_activity.py, отслеживающего действия, вызванные вводом пользователя в веб-приложении.
Для получения дополнительной информации о наших услугах ознакомьтесь с нашими Возможностями.
Комментарии
Комментариев пока нет. Будьте первым.