Функционал, который сейчас предоставляет платформа, намного шире одних вебсокетов.
Дополнительно к функционалу реализована отказоустойчивость, репликация, балансировка нагрузки. Для каждого приложения выделяется кластер БД, API.
Согласно нашей тарифной политике, пользователю доступно бесплатно:
20 запрсов к API в секунду
10Гб для хранения файлов
200 одновременных подключений к websockets
3 секунды на исполнение серверного кода
Давайте проведем небольшой расчет. Для реализации простого приложения, которому достаточно вышеуказанных лимитов, потребуется БД, app server, балансировщик. Расчет будем вести с учетом не самых мощных машин. Для небольшого отказоустойчивого проекта нам потребуется:
БД реплика (арбитер поставим на машинку с application server) — 2 машины по 4 ядра, 16 Гб Озу
Балансировщик — 2 машины (на случай отказа) по 8 ядер, 8 Гб Озу
App server — (в целях экономии поставим на те же машинки, что и балансировщики)
Берем стоимость ресурсов с сайта известного российского облачного хостера:
4 ядра, 16 Гб Озу — 5 980р
8 ядер, 8 Гб Озу — 3 900р
(3900 * 2) + (5980 * 2) = 19760
Итого стоимость: 19760 руб. в месяц
В стоимость не включены расходы на канал, дисковое пространство, а также стоимость услуг администратора.
Лучше напишите, что с правами (подписка/получение/отправка)?
Доступ к вебсокетам регулируется ключом websocketKey, который можно поменять в настройках приложения.
Есть ли возможность подписки по маске?
В данный момент нет, но мысль интересная, подумаем.
p.s. Хотелось бы получить больше информации по поводу плюшек, которых не хватает и были бы востребованы.
Например: подписка по маске, буферизация и т.д.
Магия в том, что нет никакой серверной логики. Т.е. Вы подключаете SDK, указываете канал на который нужно подписаться, и он работает в режиме broadcast. В приведенном примере чата всего один общий канал. Но никто не мешает использовать разные каналы для создания тех же комнат.
Платформа Scorocode хранит данные о подписчиках на каналы и при поступлении данных рассылает их. Вы можете использовать эти возможности например для синхронизации корзины на разных вкладках, используя в качестве названия канала id пользователя, где каждый клиент будет подписываться на свой канал, либо для отправки каких-либо обновлений определенному пользователю.
Спасибо за комментарий. Целью статьи было не создание чата, а возможность рассказать немного о внутреннем устройстве websocket'ов в сервисе Scorocode, а так же показать пример, как эту технологию можно использовать в рамках нашего сервиса.
По поводу «не тратиться», мы уже думаем над кодогенерацией :)
Дополнительно к функционалу реализована отказоустойчивость, репликация, балансировка нагрузки. Для каждого приложения выделяется кластер БД, API.
Согласно нашей тарифной политике, пользователю доступно бесплатно:
Давайте проведем небольшой расчет. Для реализации простого приложения, которому достаточно вышеуказанных лимитов, потребуется БД, app server, балансировщик. Расчет будем вести с учетом не самых мощных машин. Для небольшого отказоустойчивого проекта нам потребуется:
Берем стоимость ресурсов с сайта известного российского облачного хостера:
4 ядра, 16 Гб Озу — 5 980р
8 ядер, 8 Гб Озу — 3 900р
(3900 * 2) + (5980 * 2) = 19760
Итого стоимость: 19760 руб. в месяц
В стоимость не включены расходы на канал, дисковое пространство, а также стоимость услуг администратора.
Доступ к вебсокетам регулируется ключом websocketKey, который можно поменять в настройках приложения.
В данный момент нет, но мысль интересная, подумаем.
p.s. Хотелось бы получить больше информации по поводу плюшек, которых не хватает и были бы востребованы.
Например: подписка по маске, буферизация и т.д.
Платформа Scorocode хранит данные о подписчиках на каналы и при поступлении данных рассылает их. Вы можете использовать эти возможности например для синхронизации корзины на разных вкладках, используя в качестве названия канала id пользователя, где каждый клиент будет подписываться на свой канал, либо для отправки каких-либо обновлений определенному пользователю.
По поводу «не тратиться», мы уже думаем над кодогенерацией :)