WebSocket — протокол связи, предназначенный для обмена сообщениями между браузером и сервером через постоянное соединение в режиме реального времени.

Данные по веб-сокетам передаются в обоих направлениях в виде «пакетов», причём это происходит без разрыва соединения и дополнительных HTTP-запросов. По веб-сокетам можно передавать как текстовые, так и бинарные данные. Протокол имеет хорошую поддержку современными браузерами и работает без ограничений, связанных с кросс-доменными запросами.

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

В части бэкенд-разработки почти все современные фреймворки поддерживают работу с веб-сокетами, однако для реализации приложений с достаточно высокой нагрузкой интерпретируемые языки (PHP, Ruby, Python) не очень подходят, так как им не хватает производительности для работы с большим количеством клиентских соединений.

Мы рекомендуем решения на Elixir / Erlang (фреймворк Phoenix) или на языке программирования Go (библиотека Gorilla WebSocket), так как реализация взаимодействия по веб-сокетам на этих языках уверенно выдерживает огромное количество соединений даже на одном сервере.

Elixir — функциональный компилируемый язык программирования общего назначения. Он построен поверх языка Erlang, то есть Elixir — это почти тот же самый Erlang, но с «синтаксическим сахаром».

Использование Elixir с Erlang OTP обеспечивает распределённость и отказоустойчивость, исполнение в режиме мягкого реального времени, возможности метапрограммирования с макросами и полиморфизмом на базе протоколов.

Узнать больше →

Phoenix — веб-фреймворк, написанный на функциональном языке программирования Elixir. 

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

Узнать больше →

Go или GoLang — компилируемый многопоточный язык программирования. 

Язык был разработан Google для решения проблем корпорации, возникающих при разработке программного обеспечения. Хорошо подходит для проектов, где требуется максимально высокая скорость отклика или где ожидается очень высокая нагрузка.

Узнать больше →

JavaScript (JS) — язык программирования, который наиболее широко JS используется в браузерах как язык сценариев для придания интерактивности веб-страницам.

Также JS может использоваться для бэкенд-разработки, для разработки мобильных приложений и для других задач. В языке отсутствуют стандартная библиотека, стандартные интерфейсы к веб-серверам и базам данных, а также нет встроенной системы управления пакетами. Но всё это решается подключением сторонних библиотек и использованием дополнительного ПО.

Узнать больше →

Тематические технологии:

Язык программирования Ruby
Фреймворк Ruby on Rails
Язык программирования Python
Язык разметки HTML
CSS — каскадные таблицы стилей
Библиотека React
Библиотека MobX
Библиотека MobX State Tree

Cтатьи по теме:

GIT — система управления версиями
GIT — распределённая система управления версиями, созданная Линусом Торвальдсом для управления разработкой ядра Linux и в настоящее время получившая очень широкое распространение в среде разработчиков программного обеспечения.
Стандарты кодирования — залог хорошей сопровождаемости проекта
Любая командная разработка может быть эффективной только в том случае, если участники команды имеют общее видение. Иначе разработка начинает напоминать басню Крылова «Лебедь, Щука и Рак».
Принцип программирования YAGNI — «Вам это не понадобится»
Если упрощенно, то следование данному принципу заключается в том, что возможности, которые не описаны в требованиях к системе, просто не должны реализовываться. Это позволяет вести разработку, руководствуясь экономическими критериями — Заказчик не должен оплачивать ненужные ему функции, а разработчики не должны тратить своё оплачиваемое время на реализацию того, что не требуется.
Принцип программирования KISS — делайте вещи проще
Большая часть программных систем необосновано перегружена практически ненужными функциями, что ухудшает удобство их использование конечными пользователями, а также усложняет их поддержку и развитие разработчиками. Следование принципу «KISS» позволяет разрабатывать решения, которые просты в использовании и в сопровождении.
Принцип программирования DRY — don’t repeat yourself / не повторяйте себя
Следование принципу программирования «DRY» позволяет добиться высокой сопровождаемости проекта: простоты внесения изменений и качественного тестирования.
Серверные языки программирования
Серверные языки программирования нужны для реализации бизнес-логики, то есть разработчик при помощи языка программирования описывает возможные сценарии использования сайта или приложения.
CMS — коробочные системы управления сайтами
Система управления сайтом — это программный продукт, который создан для упрощения создания основных видов сайтов. Как правило, системы управления достаточно универсальны, то есть на них можно собрать что угодно: от информационного сайта до интернет-магазина или портала.