Недавний топик про Google Keep сподвигнул меня написать про идею, которая появилась вскоре после закрытия Google Reader.
Это событие ясно продемонстрировало главный недостаток облаков — отсутствие контроля над собственными данными. Я, к счастью, не полагался особенно на «избранное», комментирование и прочие фичи reader'а, поэтому переход на яндекс.подписки мне дался сравнительно безболезненно, однако есть и другие сервисы, потеря которых обойдется мне гораздо дороже. Кстати, не обязательно именно сервис закроют, возможно закроют только мою учетку по какой-либо причине, без всяких предупреждений за несколько месяцев и возможности выгрузить данные.
Конечно, можно было бы поднять свой
Каким же образом можно было бы решить проблему контроля за собственными данными, сохранив при этом удобство облачных сервисов?
Инфраструктура
У многих из нас дома имеется как минимум один компьютер, а то и больше, не одно мобильное устройство, возможно умные телевизоры или wifi-роутеры с внешними дисками. И таких устройств все больше, их мощности все растут, и у каждого есть свой процессор, ОЗУ и ПЗУ, сетевой интерфейс, и почти у всех — ОС, позволяющая запускать собственные программы. Этого вполне достаточно, чтобы стать персональной платформой для облачных сервисов. Такая платформа могла бы хранить данные и предоставлять ресурсы для их обработки.
Даже при использовании одним пользователем, такое облако могло бы хранить личные данные, контакты, почту, медиа-контент, предоставляя доступ всем устройствам членов семьи через интернет и локальную сеть.
Если же удастся создать инфраструктуру для объединения личных облаков в распределенную сеть с разделением ресурсов, возможности такой сети значительно расширятся. Личные данные можно было бы хранить в зашифрованном виде в нескольких копиях, что спасло бы даже в случае серьезных происшествий, вроде пожара. Правда, в случае утери атрибутов доступа, такие данные вы потеряете безвозвратно. Нет никакой фирмы, в которую можно было бы прислать письмо или зайти с паспортом, чтобы вам все восстановили. Это обоюдоострый меч.
Сервисы
Ну и самое интересное — появилась бы возможность поднимать действительно бесплатные облачные сервисы. Сейчас вы не можете просто взять и запустить бесплатный облачный сервис — вам потребуются серверы, а значит — монетизация, ну или хотя бы идея для нее, чтобы получить инвестирование. Поэтому заведомо убыточные идеи, как бы они ни были полезны, в облака просто не выйдут, либо быстро заглохнут.
С другой стороны, если уже есть бесплатное облако, можно реализовать для него сервис — ПО и протокол взаимодействия (API) — и все пользователи, которым этот сервис окажется нужен, возьмут на себя все затраты на хранение и обработку данных, получив за это полный контроль за нужными им данными.
Возьмем, к примеру, аналог youtube в таком облаке. Если необходимое ПО и протокол написаны, каждый сможет поднять у себя такой аналог. Разумеется, при этом все видео изначально придется хранить и конвертировать у себя. Но если к протоколу присоединятся другие участники, они разделят это бремя между собой, и чем больше участников — тем меньше затраты ресурсов каждого из них. При этом, если кому-то вдруг покажется, что какое-то видео пропагандирует суицид, максимум, что он может сделать — удалить его из своей сети и вежливо попросить других участников сделать это.
Можно было бы вынести в облако ту же википедию и не вывешивать баннеры с грустными глазами, попутно решив вопрос с цензурой.
Если же выйдет так, что сервис потеряет популярность, что ж, пока вы им пользуетесь, все нужные вам данные будут вам доступны, и вы сможете, при желании, перенести их в более популярный сервис, снизив затраты ресурсов. И это, я считаю, главный плюс такой схемы.
Замечу, что такие облачные сервисы не обязательно должны дублировать и пытаться вытеснить существующие облака, скорее такое облако будет существовать параллельно. Все же пользовательские ресурсы ограничены, и прям все вынести в личные облака не выйдет.
Ничто не мешает и организациям поднимать свои внутренние облака и запускать на них сервисы для собственных нужд, снизив затраты на собственные сервера и разработку/закупку ПО.
Техническая реализация
Придется реализовать протокол для нахождения других участников сети распределения между ними нагрузки, возможно получится адаптировать bittorrent или BOINC. Помимо этого, протокол должен обеспечивать гарантированный доступ к распределенным данным, с учетом того, что далеко не все участники онлайн 24/7, никто ведь не захочет ждать «сидера», чтобы догрузить файл с облака.
При этом, например, мобильные устройства должны иметь ограничения по использованию ресурсов при работе от аккумуляторов, а интернет-подключение может быть медленным и/или дорогим. Все эти детали придется учесть.
Необходим поиск узлов, реализующих одинаковые сервисы, чтобы они могли синхронизировать данные и разделять нагрузку. Нужно разделять ресурсы и между разными сервисами, работающими на одних устройствах.
Ну и, разумеется, нужен API, позволяющий разрабатывать облачные сервисы, притом работающие на всех совместимых устройствах.
Поддержка iOS выглядит очень проблематичной, с большой вероятностью Apple не разрешит так вольно распоряжаться ресурсами мобильных девайсов, а значит только jailbreak. Хотя, конечно, есть мизерный шанс, что она наоборот присоединится к инициативе и добавит собственную реализацию.
В общем и целом, это достаточно много работы, притом весьма высококвалифицированной. Может оказаться, что все указанные задачи и вовсе пока не реализуемы, особенно гарантированный доступ к данным, но с ростом возможностей персональных устройств и количества участников сети, эти проблемы в перспективе должны быть разрешимы.
Кстати, если вы вспомнили Opera Unite, возьмите с полки пирожок. Она вполне могла бы стать такой сетью, или по-крайней мере, поднять интерес к идее, но, похоже, Opera потеряла к ней интерес :(
Кто же этим займется?
Увы, не знаю. У меня сейчас другие заботы. К тому же, с большой вероятностью придется писать на Java, в которой я не силен, да и не очень меня к ней тянет. Когда появится больше свободного времени или денег — тогда возможно и начну, либо найму кого-нибудь. Маловероятно, что один разработчик такое потянет.
Очевидно только, что это будет некоммерческая разработка с открытым кодом. Возможно, в каком-нибудь вузе решат взяться? Думаю, на таком проекте можно не один диплом сделать. Или такое уже кто-то делает? Может у вас есть какие-нибудь оригинальные идеи сервисов для такой сети? Поделитесь в комментариях.
Автор: yul