Мессенджеры, пора делать следующий шаг

image

В последние пару лет, мессенджеры изменили привычный ход потребления контента, whatsapp, telegram, viber, простите. Теперь весь контент сосредоточен в них, аудитория растет дикими темпами, они многое изменили, но самое главное — им еще предстоит — способ доставки контента, а если точнее — P2P CDN.

Почему P2P CDN это необходимый шаг и как все может работать (и что это вообще такое?!) — всё это рассмотрим в посте.

Вступление


С момента запуска telegram — мессенджеры начали вбирать в себя функционал соц-сетей и уже очень сложно сказать, где соц-сеть, а где мессенджер, только одно может намекнуть, что перед нами — мессенджер: контент можно посмотреть только в приложении или же веб-версия очень ограничена. (Утверждение справдливо для большинства мессенджеров, включая телеграм т.к веб версия имеет не все функции)

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

Проблема


Тяжесть контента — основная проблема которую надо будет решить мессенджерам, каждый решает её как может, whatsapp (Facebook) — оплачивает сервера засчет ваших данных, telegram — пытается сделать ICO и пойти в сторону блокчейна. Но основная проблема — дороговизна инфраструктуры — никуда не уходит, просто источник денег для поддержки — меняется.

Но есть и вторая проблема — страны с медленным интернетом и дорогой интернет в любой стране: люди может и готовы бы потреблять больше контента, но либо доступ физически ограничен — (плохой сигнал) либо же очень дорог.

Решение


Решение этих проблем очень простое и я бы сказал «нативное» — P2P CDN.

Не зря в последних версиях iOS компания Apple по умолчанию всегда держит включенным Bluetooth и Wi-Fi, не зря Telegram хранит гигабайты кэшированного медиа — всё это можно использовать, причем потратив минимум времени на разработку — объединив всех пользователей конкретного мессенджера в огромную Mesh сеть.

Mesh сеть — это объединение по типу каждый с каждым, когда все пользователи приложения (например в автобусе) образуют единую сеть в которой информация может передаватся изолированно от большого интернета

Но как? зачем?


Что бы сейчас создать Mesh сеть на iOS/Android надо написать пару строчек кода — для этого сущестуют готовые фреймворки от разработчиков платформы, в play market/app store есть куча никому не нужных «offline messanger» для общения в лесу или на самолёте.

Что же можно передавать через Mesh сеть?

  1. Контент в каналах
  2. Сообщения Пользователь-пользователь
  3. Любой тяжелый контент из канала/чата/личных сообщений

Как это должно работать?


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

Звучит не оптимально, правда?


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

Другими словами — практически моментально вы синхронизируете свою ленту новостей с человеком который уже загрузил её. И в дальнейшем, приложение может оптимизировать работу, загружая контент только на 1 устройство через интернет, передаявая по Mesh сети на сосединие устройства.

Но и это еще не всё — если вы находитесь в месте с плохой связью, а вам нужно передать документ вашему другу который находится рядом с вами — мессенджер может найти его и по P2P сети передать ему документ. Что в конечном итоге сэкономит интернет трафик как вам так и другу, да и даже мессенджеру!

Whitepaper как я себе вижу работы мессенджера по P2P
Мессенджер ведёт у себя список всех каналов/чатов с ID + ключами, в древовидном режиме хранится весь контент который был загружен, аналогично с ID и ключами подписи.

Переодически идет опрос эфира на наличее узлов вашей же сети — сети мессенджера, при успешном нахождении идет сравнение сравнение контента между вами и соседом.

Фактически каждый узел будет предоставлять список того, на что он подписан (желательно с возможностью отключения такой функции для определенного канала/чата). Если найденый сосед — из списка контактов — можно производить полную синхронизацию и отправлять ему сообщения локально. Если же неизвестный — только синхронизировать тяжелый контент.

Как только установилось взаимодействие между узлами, происходит синхронизация доступного контента, если что-то отсутствует у абонента А, а есть у Б — А получает его от Б.

При поступлении нового контента, тот кто его первый получил, например А — может отправить его всем участникам сети (по типу multicast).

Причем, это схема будет работать и в более классическом виде для Mesh сетей — когда между А и Б есть еще Х — который не подписан на тот же самый канал, что А и Б — он будет просто посредником, передавая трафик между ними.

Естественно — для неизвестных узлов нельзя передавать данные номера телефона, только ID, а лучше временный ID, косвенно связанный с ID внутри мессенджера.

А что с безопасностью?


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

С разговорами и чатами ровно точно так же — вам потребуется иметь соединение с интернетом только для начала общения (проверка ключей шифрования) — дальнейшее взаимодействие может быть P2P — вы гарантировано будете уверяны, что трафик получает именно ваш друг.

И много где будет эта самая «Mesh P2P сеть»?


Если вы житель большого города — везде.

В общественном транспорте, на работе, да даже дома в квартире — ваш телефон может видеть соседние устройства. А теперь подумайте, что если все устройства у которых установлен популярный мессенджер, будут автоматически создавать ту самую сеть, без какой-либо настройки…

Итог


Давайде подведем итог — выше я описал, как с помощью незначительной доработки мессенджера сделать его:
 — Дешевле для обладателя
 — Повысить скорость его работы
 — Сделать привлекательным в странах с дорогим/медленным интернетом
 — Усилить защиту от блокировок
 — Новое поколение сервисов ориентированных на P2P
 — Сделать возможным частичную работу без интернета

Но, это только мысли, я очень надеюсь, что Telegram/Whatsapp/любой другой крупный мессенджер решится на такую авантюру и мы наконец-то перевернём страницу истории, открыв главу распределенного интернета. И что-то мне подсказывает, что я прав и эту главу начнут именно мессенджеры, а не браузеры или операционные системы…

© Habrahabr.ru