Облако в кармане

в 7:43, , рубрики: Peer-to-Peer, безопасность в сети, краудсорсинг, Облачные вычисления, облачные сервисы, распределенные системы, метки: , ,

Недавний топик про Google Keep сподвигнул меня написать про идею, которая появилась вскоре после закрытия Google Reader.
Это событие ясно продемонстрировало главный недостаток облаков — отсутствие контроля над собственными данными. Я, к счастью, не полагался особенно на «избранное», комментирование и прочие фичи reader'а, поэтому переход на яндекс.подписки мне дался сравнительно безболезненно, однако есть и другие сервисы, потеря которых обойдется мне гораздо дороже. Кстати, не обязательно именно сервис закроют, возможно закроют только мою учетку по какой-либо причине, без всяких предупреждений за несколько месяцев и возможности выгрузить данные.
Конечно, можно было бы поднять свой VPS, установить на него все нужные сервисы… Но это стоит денег, необходимо найти свободные альтернативы (что не всегда возможно), администрировать, следить за безопасностью и бэкапами, да и просто далеко не всем доступно. Кроме того, любые социальные возможности становятся проблематичными.
Каким же образом можно было бы решить проблему контроля за собственными данными, сохранив при этом удобство облачных сервисов?

Инфраструктура

У многих из нас дома имеется как минимум один компьютер, а то и больше, не одно мобильное устройство, возможно умные телевизоры или wifi-роутеры с внешними дисками. И таких устройств все больше, их мощности все растут, и у каждого есть свой процессор, ОЗУ и ПЗУ, сетевой интерфейс, и почти у всех — ОС, позволяющая запускать собственные программы. Этого вполне достаточно, чтобы стать персональной платформой для облачных сервисов. Такая платформа могла бы хранить данные и предоставлять ресурсы для их обработки.
Даже при использовании одним пользователем, такое облако могло бы хранить личные данные, контакты, почту, медиа-контент, предоставляя доступ всем устройствам членов семьи через интернет и локальную сеть.
Если же удастся создать инфраструктуру для объединения личных облаков в распределенную сеть с разделением ресурсов, возможности такой сети значительно расширятся. Личные данные можно было бы хранить в зашифрованном виде в нескольких копиях, что спасло бы даже в случае серьезных происшествий, вроде пожара. Правда, в случае утери атрибутов доступа, такие данные вы потеряете безвозвратно. Нет никакой фирмы, в которую можно было бы прислать письмо или зайти с паспортом, чтобы вам все восстановили. Это обоюдоострый меч.

Сервисы

Ну и самое интересное — появилась бы возможность поднимать действительно бесплатные облачные сервисы. Сейчас вы не можете просто взять и запустить бесплатный облачный сервис — вам потребуются серверы, а значит — монетизация, ну или хотя бы идея для нее, чтобы получить инвестирование. Поэтому заведомо убыточные идеи, как бы они ни были полезны, в облака просто не выйдут, либо быстро заглохнут.
С другой стороны, если уже есть бесплатное облако, можно реализовать для него сервис — ПО и протокол взаимодействия (API) — и все пользователи, которым этот сервис окажется нужен, возьмут на себя все затраты на хранение и обработку данных, получив за это полный контроль за нужными им данными.
Возьмем, к примеру, аналог youtube в таком облаке. Если необходимое ПО и протокол написаны, каждый сможет поднять у себя такой аналог. Разумеется, при этом все видео изначально придется хранить и конвертировать у себя. Но если к протоколу присоединятся другие участники, они разделят это бремя между собой, и чем больше участников — тем меньше затраты ресурсов каждого из них. При этом, если кому-то вдруг покажется, что какое-то видео пропагандирует суицид, максимум, что он может сделать — удалить его из своей сети и вежливо попросить других участников сделать это.
Можно было бы вынести в облако ту же википедию и не вывешивать баннеры с грустными глазами, попутно решив вопрос с цензурой.
Если же выйдет так, что сервис потеряет популярность, что ж, пока вы им пользуетесь, все нужные вам данные будут вам доступны, и вы сможете, при желании, перенести их в более популярный сервис, снизив затраты ресурсов. И это, я считаю, главный плюс такой схемы.
Замечу, что такие облачные сервисы не обязательно должны дублировать и пытаться вытеснить существующие облака, скорее такое облако будет существовать параллельно. Все же пользовательские ресурсы ограничены, и прям все вынести в личные облака не выйдет.
Ничто не мешает и организациям поднимать свои внутренние облака и запускать на них сервисы для собственных нужд, снизив затраты на собственные сервера и разработку/закупку ПО.

Техническая реализация

Придется реализовать протокол для нахождения других участников сети распределения между ними нагрузки, возможно получится адаптировать bittorrent или BOINC. Помимо этого, протокол должен обеспечивать гарантированный доступ к распределенным данным, с учетом того, что далеко не все участники онлайн 24/7, никто ведь не захочет ждать «сидера», чтобы догрузить файл с облака.
При этом, например, мобильные устройства должны иметь ограничения по использованию ресурсов при работе от аккумуляторов, а интернет-подключение может быть медленным и/или дорогим. Все эти детали придется учесть.
Необходим поиск узлов, реализующих одинаковые сервисы, чтобы они могли синхронизировать данные и разделять нагрузку. Нужно разделять ресурсы и между разными сервисами, работающими на одних устройствах.
Ну и, разумеется, нужен API, позволяющий разрабатывать облачные сервисы, притом работающие на всех совместимых устройствах.
Поддержка iOS выглядит очень проблематичной, с большой вероятностью Apple не разрешит так вольно распоряжаться ресурсами мобильных девайсов, а значит только jailbreak. Хотя, конечно, есть мизерный шанс, что она наоборот присоединится к инициативе и добавит собственную реализацию.
В общем и целом, это достаточно много работы, притом весьма высококвалифицированной. Может оказаться, что все указанные задачи и вовсе пока не реализуемы, особенно гарантированный доступ к данным, но с ростом возможностей персональных устройств и количества участников сети, эти проблемы в перспективе должны быть разрешимы.
Кстати, если вы вспомнили Opera Unite, возьмите с полки пирожок. Она вполне могла бы стать такой сетью, или по-крайней мере, поднять интерес к идее, но, похоже, Opera потеряла к ней интерес :(

Кто же этим займется?

Увы, не знаю. У меня сейчас другие заботы. К тому же, с большой вероятностью придется писать на Java, в которой я не силен, да и не очень меня к ней тянет. Когда появится больше свободного времени или денег — тогда возможно и начну, либо найму кого-нибудь. Маловероятно, что один разработчик такое потянет.
Очевидно только, что это будет некоммерческая разработка с открытым кодом. Возможно, в каком-нибудь вузе решат взяться? Думаю, на таком проекте можно не один диплом сделать. Или такое уже кто-то делает? Может у вас есть какие-нибудь оригинальные идеи сервисов для такой сети? Поделитесь в комментариях.

Автор: yul

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js