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

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

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


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

    Сервисы


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

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


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

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


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

    Only registered users can participate in poll. Log in, please.

    А вы бы взялись участвовать в таком проекте?

    • 21.0%Да, как разработчик62
    • 3.0%Финансово9
    • 27.7%Добрым словом82
    • 27.0%Просто подожду результатов80
    • 21.3%Нет, идея мне не интересна63

    Similar posts

    Ads
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More

    Comments 24

      0
      наверно, коммерческие облака со временем будут использовать общие интерфейсы API или появятся generic враперы типа LINQ

      кроме того облака должны предоставлять импорт и экспорт данных через открытые и популярные форматы, и при необходимости легко конвертируемые в БД привычных СУБД

      что будет, если moedelo.org выключится на пару месяцев или вообще канет в лету?
      у них импорта/экспорта так и нет?
        0
        Коммерческим облакам ничто не мешает предоставлять REST-API уже сейчас, и некоторые так делают, но не все и не на все хранящиеся данные. Коммерческие фирмы должны думать о конкурентах и не очень-то желают облегчить переход к ним пользователя. Обратно — пожалуйста.
        В случае личных облаков приоритет смещается на данные пользователя, а не на коммерческие интересы, а большое количество пользователей означает большую вычислительную мощность, поэтому нет причин выдумывать свои интерфейсы, если есть готовые, которые можно, при необходимости, расширить.
          0
          когда конкуренция увеличится и наступит комодизация, пользователь перед покупкой будет подолгу копаться в фичах и выбирать, что ему нужно, а не провайдеру

          по аналогии, много сейчас СУБД без ODBC интерфейса?
            0
            Сколько времени прошло между появлением СУБД и ODBC? Или даже стандарта SQL? Как с совместимостью с объектными БД? Можно перенести все из Cache в MySQL и продолжать работать? Далеко не все так просто, как хочется думать, а переносимость никогда не была главным приоритетом для коммерческих решений, немало примеров, когда подсаживают на свой стек.
              0
              никто и не утверждает, что стандарты появятся скоро

              приоритетом при оповещении о выключении облака за неделю до
              habrahabr.ru/post/116572/
              является эвакуация данных хоть как-нибудь, а не супер комфортно

              вы в курсе, что бэкап, который не пытались восстановить, считается потенциально отсутствующим?

              кроме каше (будь оно не ладно), кстати, существуют еще десятки нереляционных СУБД
                0
                никто и не утверждает, что стандарты появятся скоро

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

                Да, я что-то говорил против этого?
                кроме каше (будь оно не ладно), кстати, существуют еще десятки нереляционных СУБД

                о чем и речь, каждый делает по-своему. Впрочем, если продолжать тему, можно скатиться в OpenSource vs proprietary.
                  0
                  смысл в стандарте для пользователей понятен, хоть он и будет отличаться от основного
                  наверно, в качестве аналога можно привести NPA для nHibernate, пока в гордом одиночестве?

                  а для провайдера со временем это будет конкурентным преимуществом или даже критичной фичей, хотя на данный момент с точностью до наоборот, чтобы удержать им критично, чтобы такой фичи не было, время все расставит на свои места
        +3
        Мне кажется надёжнее и эффективнее просто взять какой-нибудь Synology NAS и в несколько кликов развернуть там VPN + DDNS + Cloud
          0
          Да, но только для личного использования. Опять же, если NAS, или диск в нем помрет (если вы не поставили еще и зеркало), все данные будут утеряны. А если, скажем, фотоальбом будет продублирован в зашифрованном хранилище на телефоне, ноутбуке, планшете, smart-tv, потерять все разом будет непросто. А при распределенном хранилище даже в случае стихийного бедствия можно будет восстановить все на новом железе, если не потерять ключи.
            0
            Даже снимки с телефонов сейчас занимают очень много места. Не говоря про зеркалки, где крайне желательно хранить raw файлы в архиве. Плюс музыка (опять же, зачастую в loseless форматах). Фильмы. Я не сильно представляю как терабайт личных данных будут распределены и продублированы по телефонам с 14 гб (в среднем) памяти на борту. И это если представить, что интернет у нас быстрый-быстрый.

            На счёт «помрёт диск» — я поэтому и сказал про NAS, т.к. там уже сразу идёт поддержка Raid-ов. А HDD сейчас очень дешёвые. Ставьте два диска по 2-4 ТБ в Raid 1 и у вас получается решение ваших задач без лишних хлопот.
              0
              Далеко не все пользователи хранят фотоальбомы в RAW ) Если на одного такого будет 1000 обычных с фотками в районе 1-2 мбайт JPEG — почему бы и нет? Не только ведь телефоны будут в сети, да и если будет спрос на большие объемы, появится и предложение. Вы заметили, как затормозилось увеличение флеш-памяти на мобильных устройствах? Дальше 64Гбайт практически не идет. Все потому, что падает спрос на большие объемы, благодаря использованию коммерческих облаков. Если возрастет спрос на личное пространство со стороны обычных пользователей, можно ожидать обратный эффект.
              Интернет кое-где вполне себе быстрый-быстрый, у меня на даче уже 2 года есть 3G, нельзя вечно кивать на те места, где это не так, иначе не будет ни спроса на скоростной интернет, ни соответствующего развития. И потом, коммерческим облакам это ведь не мешает?
              На счёт «помрёт диск» — я поэтому и сказал про NAS, т.к. там уже сразу идёт поддержка Raid-ов.

              В однодисковых synology с рейдом не поиграешься.
            0
            И потом, synology+диск не так уж и дешево обойдутся, и если нет необходимости именно в хранении больших объемов, покупать их только ради личного облака довольно накладно.
              0
              Если для небольших объёмов — тогда да. Но тут уже легче будет использовать сервисы мета-облаков, которые позволяют синхронизировать несколько бесплатных облаков — вероятность того, что все разом перестанут работать почти не существует.
                0
                Но это ведь только хранение файлов. На самом деле меня гораздо больше волнует не личный dropbox, тут уж и на скриптах с rsync можно сделать, а именно хранение личных данных сервисов у себя, вернее в доступном месте, объемы могут быть и совсем маленькие.
                  0
                  Насколько я понял из статьи — это и требуется. А всё остальное — дело клиентской программы (как именно она будет эти файлы воспроизводить).
                    0
                    Не совсем, это также и вычислительные ресурсы, например, если это аналог youtube, может потребоваться конвертирование видео-файлов, или шифрование больших объемов, или сервер распределенной БД, да мало ли что. Без вычислительных ресурсов поддерживать облако даже для хранения файлов будет проблемно. Нужно ведь как-то искать и находить других пиров, выполнять дублирование файлов, чтобы они всегда были онлайн и т.д.
                0
                Самому сделать NAS сервер с Openmediavault с похожим функционалом.
            • UFO just landed and posted this here
              0
              Идея использовать для хостинга (облака, хранения данных) персональные компьютеры довольно заманчива, но есть несколько проблем с реализацией. Предположим, мы планируем использовать для хостинга обычные десктопы. В каком количестве нам необходимо продублировать информацию, чтобы обеспечить 99% её доступность? Предположу, что не менее чем на 20-и машинах. Если на меньшем, то вполне вероятна ситуация, что все они будут выключены в определённые промежутки времени. В итоге хранение данных обойдётся значительно дороже, чем если они будут храниться в серверных.
                0
                Использовать такую сеть только для хранения большого количества данных будет довольно накладно, но суть не в том, чтобы получить много халявного свободного места в облаке, этого можно достичь и с существующими облачными сервисами, а в том, чтобы хранить и обрабатывать пользовательские данные облачных сервисов на их (пользователях) компьютерах, под их контролем, а не на чужих серверах.
                У того же google reader'а не так уж и много хранимых данных на одного пользователя, а учитывая, что многие rss-ленты используются не одним пользователем, общий объем данных выйдет совсем не накладным, однако такой сервис не прекратит существование, пока у него есть хоть один пользователь.
                0
                А я бы принял участие в таком проекте в качестве разработчика, правда я на Java не особо умею программировать (да и вообще под мобильные устройства), зато умею на C/C++.
                Но правда у всего этого есть одно но: большинство устройств живут за NAT'ом, а ipv6 пока очень слабо распространен, потому все же для каждого конкретного облака, нужен будет некий сервер (или некоторое количество серверов), который будет выступать как прокси + для помощи обнаружения нод от облака. Ну впрочем я могу оказаться не правым, может уже придумали, как это обойти
                  +1
                  В идеале, это должна быть распределенная операционная система вроде Plan 9, которая должна запускаться в специализированной виртуальной машине на каждом устройстве (а в полном идеале должна стать доминирующей ОС для всех устройств со своим GUI). Эта система будет платформой для общей файловой системы и ресурсов, управлять учетными записями и будет предоставлять API для сервисов. Задачей системы будет распределение нагрузки. Облегчить распределение можно специализацией клиентов: мобильные только потребляют сервисы + небольшой кеш, настольные же предоставляют дисковое пространство + вычислительные ресурсы. Выбирать специализацию можно при установке клиента.

                  Со стороны пользователя это может выглядеть довольно просто: как набор веб-интерфейсов (с адресами типа cloud://) или нативных клиентов к сервисам работающим в распределенной ОС.
                    0
                    Мы делаем Erlang On Xen в частности для того, чтобы запускать карманные инстансы на произвольных архитектурах поверх голого гипервизора.

                    Only users with full accounts can post comments. Log in, please.