Мечта, фантазии, единороги и радуги

Привет, сообщество! Я первый раз пишу здесь статью и поэтому очень нервничаю. Я хочу поделиться с вами мечтой и жажду найти единомышленников, которые будут вместе со мной идти к этой мечте. Итак, поехали.

Мне, как и многим из вас, наверняка иногда не хватает возможности опубликовать какое-то своё веб-приложение в интернете или запустить какие-то вычисление на железе более мощном, чем домашний компьютер. Все эти желания объединяет следующее: нехватка ресурсов расчетных и/или временных (по обеспечению постоянной доступности приложения в сети). Последнее решается созданием своего сервера, но быть его админом совершенно не хочется.

И тут я задумался что то, чего мне не хватает - это не что иное, как облако. И Google Cloud, AWS, Microsoft Azure и прочие гиганты уже давно всё это изобрели. Всё так. Но эти решения дадут вам ресурсы только за деньги и должна быть альтернатива, как свободное программное обеспечение противопоставляется проприетарному. Должна быть свободная или хотя бы более свободная альтернатива этим облакам.

Мне могут возразить, что есть, например, Heroku. Но ресурсы, которые даёт heroku бесплатно, сильно ограничены и они предоставляются скорее как рекламная акция для привлечения клиентов, нежели как реальная попытка создать альтернативу проприетарным облакам.

Думаю я достаточно сделал подводок, чтобы изложить свою мечту. Итак...

Мне хочется, чтобы мы программисты, девопсы и другие айтишники делились не только софтом, как придумал Ричард Столлман, но и железом. Чтобы мы с вами могли выставить своё железо в интернет и позволили им пользоваться другим людям. А в обмен на это смогли бы пользоваться железом других.

И тут всегда возникает закономерный вопрос: "а зачем мне это?". И вопрос не праздный, ведь зачем мне отдавать свои 2 ядра и 4 гига оперативки кому-то (далее будем называть эти ресурсы - ресурсами одного воркера) в обмен на то, что я смогу воспользоваться такими же ресурсами другого человека? Обмен получается бессмысленный, и при этом еще нужно обеспечивать постоянную доступность своего воркера в сети. Но все встает на свои места, если в обмен на предоставление ресурсов одного своего воркера, я получу в свое распоряжение ресурсы от 2ух воркеров (2 - число условное, просто чтобы показать общую идею). Или в обмен на то, что мой воркер полдня находится в сети, я могу своё приложение держать в онлайне не половину дня, а весь день. Примеров можно приводить много, но общая идея не меняется - в обмен на участие в сообществе, я получаю умножение предоставляемых мной и доступных мне ресурсов. И тогда быть членом такого сообщества становится реально выгодно и при это не нужно заниматься администрированием сервера, требуется только предоставлять ресурсы в сеть. Об остальном позаботится программа-оркестратор этого облака.

При этом ресурсы могут быть предоставлены и в виде виртуальной машины. Например, можно поставить у себя Ubuntu в VirtualBox, ограничить машину песочницей в размере 2 ядер и 4 гигов памяти и всё. Больше не требуется ничего.

Суровая реальность

Теперь давайте поговорим о том, откуда же возьмутся эти избыточные ресурсы. Ведь из одного ядра нельзя получить 2, как и из 2 гигов оперативки не рождается 4.

Чтобы разрешить данное противоречие на помощь приходят стандартные "мошеннические" схемы, которыми уже давно пользуются банки. Можно было бы попробовать развивать данную мысль на примере не банков, а, например, пирамид и МММ. Но это на любителя. И в банках и пирамидах есть элемент мошенничества, но я попробую мыслить именно в разрезе банков, т.к. они стоят на каждом углу и узаконены, а тема пирамид себя изрядно дискредитировала и может отпугнуть читателя. Итак...

Работа банков строится по следующему принципу. Я сознательно буду упрощать и прошу заядлых банкиров не писать, что все намного сложнее. Я упрощаю умышленно, чтобы не запутать читателя деталями. Принцип такой: Вася открыл вклад в банке и положил туда 100 рублей, Петя открыл вклад в банке и положил туда 100 рублей, а Маша пришла и взяла в банке кредит в размере 100 рублей. Итого на данный момент в банке свободно лежат 100 рублей, которые можно дать кому-то в кредит или вернуть Пете или Васе, если они завтра решат закрыть свой счет. Но вот если завтра и Петя и Вася решат одновременно позакрывать свои счета, то банк обанкротится, т.к. у него нет свободных 200 рублей, потому что часть из них роздана в кредит.

Таким образом, банки работают по принципу - взял у одних отдал другим в обмен на проценты. И если ты не будешь давать свои ресурсы в банк и сразу их забирать, а позволишь попользоваться ими банку, раздавая кредиты, то банк тебя отблагодарит процентом к твоему счету. Причём процент этот будет получен от людей, которые оплатили свои кредиты. А банк, чтобы не разориться, должен всегда часть своих ресурсов держать свободными, на случай передумавших вкладчиков, тогда он сможет долго держаться на плаву. Хотя случись какой-нибудь кризис и все вкладчики побегут забирать наличку и тогда банку придет конец. И это касается абсолютно любого банка, потому что его схема работы содержит вот такой элемент "мошенничества". Хотя реальными мошенниками мы называем только те банки, которые совсем не оставляют свободных средств на счетах и все раздают под кредиты, и способны обанкротиться даже в периоды, когда нет кризисов в экономике.

Таким образом, надежность банковской системы строится на предположении, что вкладчики одновременно не запросят все свои ресурсы.

Итоги. Банкинг

Итак, что же я предлагаю рассмотреть в качестве бизнес идеи. И может кто-то этим заинтересуется, как экономист или как технарь или как кто-то еще.

Давайте создадим облако, в которое выставим свои ресурсы в качестве банковского вклада (hardware банкинг). И на каждый наш воркер (минимальная единица вклада, т.е. аналог рубля) будем получать доступ к большему количеству ресурсов (чтобы понять сколько именно процентов мы можем дать, нужна помощь экономиста). И поскольку мы не будем ими пользоваться одновременно, т.к. это статистически маловероятно, то сеть должна будет стабильно работать.

Кроме того, это облако будет и доход приносить. Если мы поднимем в нем нужную инфраструктуру, вроде GitLab-ов, SonarQube-ов, Nexus-ов, Postgres-ов и прочего (software часть нашего банка), то облако сможет работать полноценным хостингом, аналогичным AWS. Тогда мы сможем зарабатывать деньги на хостинге и делить их в виде оплаты за участие либо в денежном эквиваленте (это будет похоже на майнинг по принципу POW, но без майнинга, блокчейна и криптовалют), либо деньги будут идти на покупку новых мощностей, которые также будут предоставляться членам сообщества, в качестве процента за их вклад и их доступные вычислительные ресурсы будут расти.

Экономику этого дела нужно еще внимательно просчитать. Нужны люди, энтузиасты, кого это зацепит и кто захочет поучаствовать в развитии идеи, как своими мозгами, так и руками. Есть что посчитать, есть что по программировать.

Очень жду обратную связь по данной идее в целом. По деталям разумеется будут вопросы. Также будут вопросы в терминологии. Это все решаемо. Главное идея и люди. Вы мне нужны!!!

P.S.

Я планирую купить немного железа, и развернув на нем kubernetes выставить в интернет, постепенно добавляя в открытый доступ всякие фишки вроде SonarQube-ов. Далее буду развивать свою идею отталкиваясь от этого первоначального вклада. На начальном этапе понадобятся люди, которые помогут мне в написании кода и решении текущих задач. Нужны будут те, кто будет ставить свой софт в это облако, даже понимая, что облако не стабильно и что на следующий день они могут потерять все данные. Разумеется такие члены сообщества, которые будут помогать не только вкладами, но будут вкладываться своим трудом в создание такого облака и участвовать в бета-тестировании, будут относиться к VIP и будут иметь больше привилегий, чем остальные. Вероятно, можно будет рассмотреть возможность предоставления им полного доступа ко всем ресурсам облака даже после его запуска в версии 1.0.0.

P.P.S.

И последнее, но не по значению. В данном вопросе я сторонник теории малых дел, поэтому постараюсь начать с себя и идти в направлении создания того, что написал выше с учетом вашей критики. У меня уже есть кое-какие наработки, которые я публикую в Гитлаб и планирую публиковать дальше. Также есть беклог задач, который будет расширяться. А в моем телеграм канале я стараюсь периодически отчитываться о проделанной работе. Прошу всех следить, критиковать и ругать!

UPD

Практическое продолжение статьи можно найти тут

Комментарии (21)


  1. alexmay
    25.02.2022 23:43
    +3

    Товарищ Сократ, а как вы будете бороться с тем, что предоставляя свои ресурсы в пользование вы можете столкнуться с их криминальным/противозаконным использованием?


    1. peaceful-coder Автор
      26.02.2022 00:53

      Да, это так. Еще могут начать на них майнить, чего бы мне не хотелось. С любым злоупотреблением борются через KYC. Можно подумать в этом направлении. Но такие детали я пока не продумывал. По идее, это решаемый технически-организационный момент.

      Первоочередная задача запустить сеть кубера. Потом придумать конкретные механизмы шаринга мощностей. Сталкиваясь с проблемами будем постепенно их решать


  1. LeshaRB
    26.02.2022 00:34
    +2

    По мне ерунда какая-то....

    Даже начав с банального, что я взял в аренду ресурсы кого-то

    А тот забыл за интернет оплатить, в итоге просела скорость или вообще отрубили....

    Кто такие издержки покроет?

    Да и серверный проц , это серверный, он получше будет, чем проц для стационарного. В этом плане Heroku выигрывает... Если бесплатно


    1. peaceful-coder Автор
      26.02.2022 01:01
      -1

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

      По поводу хероку спорно, мой друг там пытался проводить онлайн игры и что-то пошло не так. Хотя это частный кейс, но там тоже не все стабильно.


  1. Tanner
    26.02.2022 02:17

    1. peaceful-coder Автор
      26.02.2022 11:21

      Там идея другая. Там, как я это понимаю, о желании, чтобы мощности не простаивали. Я же хочу создать сообщество, которое сможет не только давать мощности под чужие идеи, но и само сможет использовать эти мощности. Цель создать площадку, где программисты смогут публиковать в интернете свои проекты на своем и не только железе (эта часть идеи похожа на Heroku). Идея схожа по духу с WEB 3.0, когда мы все станем владельцами некой большой сети в рамках интернета


      1. Tanner
        26.02.2022 12:19

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

        Мне очень нравится ваша идея в таком виде.

        Только кубернетисы, конечно, для этого не подойдут, а подойдёт какой-нибудь heroku-подобный serverless контейнер. Я не смотрел в эту сторону раньше, не знаю, существуют ли такие, или нужно будет писать своё.

        И надо будет немножко повозиться с определением эквивалента мощности. Плюс понадобятся некие централизованные ресурсы для сведения баланса, пробития NAT, распределения лямбд по контейнерам, ну и для организационных целей. Тут можно будет просто продавать часть ресурсов за деньги при необходимости. Лучше оформить это как нон-профит, при этом нужен будет ещё какой-то свой сервис, чтобы автоматически публиковать бюджет. Как-то так.


        1. peaceful-coder Автор
          26.02.2022 13:04

          Да, спасибо за мысли! С NAT-ом вот уже воюю, про эквиваленты мощности тоже думаю. До остального пока не дошел. В планах. А кубер как первый этап. В его сторону стал смотреть по 2-ум причинам:

          1. spark умеет с ним работать (в деталях пока не разбирался)

          2. в любом случае хочу развернуть свой GitLab, SonarQube, Nexus, Harbor и прочие элементы инфраструктуры профессиональной разработки, чтобы в случае чего иметь возможность быть автономными и следить за качеством кода и деплоя.


        1. Tanner
          26.02.2022 13:12

          Самый близкий по сути проект к тому, что я имел в виду под

          heroku-подобный serverless контейнер

          видимо, https://caprover.com/. Но у него недостатки такие (дальше цитаты из мануалов):

          (Simple Setup) The recommended method to install CapRover is via DigitalOcean
          one-click app. CapRover is available as a One-Click app in DigitalOcean
          marketplace.

          даунгрейдить virtual server до serverless не имеет никакого смысла. Ни технически, ни финансово.

          (Run Locally) Note that this is an advanced process. Some of the concepts used in this section are not easy for the beginners. In order to run CapRover on your local machine (just for testing and development) you need Docker installed on your machine.

          а это уже совершенно недопустимо. Инсталляция на любой платформе (или как минимум на популярных) должна сводиться к самому типичному для этой платформы способу установки прикладного ПО. То есть на Ubuntu -- apt install, на Маке -- brew install или перетаскиванием *.dmg, на Windows -- кликом на *.exe и т. д.

          А вот что можно запросто выбросить из списка фич, так это поддержку баз данных. Уже и так создан миллион сервисов персистентности для serverles apps.


      1. Tanner
        26.02.2022 12:33

        Ну и, конечно, я бы с удовольствием присоединился к проекту, но только если весь код будет распространяться под свободной лицензией (пермиссивной или копилефт, не принципиально).


  1. Schokn-Itrch
    26.02.2022 04:46

    Хайпожор, не иначе.

    P.S. Человек, просто Человек. Когда что-то делают для людей, то принято как-то делится с людьми. Иначе получается ньюген-фьючер-надо-блино-крипто-пирамида. Ссылку дать?


  1. unsignedchar
    26.02.2022 07:34
    +1

    В банке становится больше денег потому, что все клиенты банка участвуют в экономике. Что-то производят, покупают, продают, поднимают ВВП, который и обеспечивается этими деньгами. Если деньги просто появляются - это либо инфляция либо МММ.

    А в случае с процессорной мощностью - сколько не майните, больше процессоров в сети не станет. "Проценты" участникам платить нечем.


    1. peaceful-coder Автор
      26.02.2022 11:15

      Эмитентом денег является ЦБ или ФРС в случае с США. Если напечатано было 10 долларов, то сколько не продавай и не покупай или иначе участвуй в экономике, то в обороте больше 10 долларов не станет, согласитесь. Их в любом случае нужно печатать. И если печатают аккуратно, то количество денег примерно должно быть равно количеству товаров, если можно так выразиться. Если переборщат, то будет инфляция, согласен.

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


      1. unsignedchar
        26.02.2022 12:07

        количество денег примерно должно быть равно количеству товаров


        Допустим да. Произвели больше товаров — можно/нужно выпустить больше денег — вкладчики получают вознаграждение в виде %%.
        С процессорной можностью так не выйдет. Сколько не считай — процессоров больше не станет.


        1. peaceful-coder Автор
          26.02.2022 12:44

          А где я написал, что в ходе вычислений будет появляться новое железо? Если выше такое есть, то укажи, пожалуйста, где именно? К какой моей фразе ты апеллируешь? Звучит реально глупо, но я не могу найти, где я такое написал. Если такое есть, то это моя ошибка, и я попробую перефразировать, чтобы не возникало такого недопонимания.


          1. unsignedchar
            26.02.2022 14:35

            Сорян ;) Зацепило сравнение с банком, делающим деньги из воздуха. Просто пока существует майнинг - всегда можно использовать с пользой "лишнюю" процессорную мощность; нет смысла отдавать ее дёшево и покупать дорого.


      1. gecube
        27.02.2022 02:27

        Если напечатано было 10 долларов, то сколько не продавай и не покупай или иначе участвуй в экономике, то в обороте больше 10 долларов не станет, согласитесь

        это не так работает. Мы можем эти 10 долларов разбить на 5 +5. Вы мне 5 отдали, я Вам - стул, например. А потом ко мне приходит Вася и я ему занимаю 2. А мне он дает расписку. Но Вася надежный - у него кокосы есть. Если что я у него их заберу. В результате - в системе уже 10 долларов и расписка на 2 доллара. ИТОГО - 12. Ну, и т.д.


  1. SensDj
    26.02.2022 09:33
    +2

    Мне тоже грустно смотреть как иногда простаивают вычислительные мощности моих компьютеров... Пытался искать распределённые проекты, которые приносят реальную ощутимую пользу - не нашёл ничего по душе.
    Потом возникла такая идея: можно продавать за недорого вычислительные мощности персоналок тем людям, кто сидит со смартфона и хочет часик-другой поиграть в ААА-игру не нагружая процессор (а значит и аккумулятор) своего смартфона, т.е. игра запускается на персоналке и передаёт видеопоток на смартфон. Или даже не продавать, а дарить своим родственникам и друзьям. Нужный софт есть (типа AnyDesk) но он подходит только для личного использования, там нельзя настроить временный доступ для любого желающего "по часам и суткам". Т.е. нужно делать свой софт и делать сайт, через который желающие поиграть будут находить свободные персоналки.


    1. 1dNDN
      28.02.2022 16:58

      Видел как раз какой-то сервис, который таким занимается.

      P.S. Drova.io и иже с ним. Не срослось у меня с ними, потому что во время чьей-то игровой сессии использовать пк самому не получится. Кроме того, профит так себе и нужно иметь установленные у себя лицензионные копии игр. Игры самому покупать надо


  1. konikulin
    28.02.2022 11:55

    Добавить к вашей идее крипту в качестве вознаграждения за ресурсы, главное придумать как обойти майнинг и будет рабочая схема.Я выделяю кусок своего железа - плачу за электричество и интернет - взамен получаю некую крипту, которую могу обменять на бирже на что-то нужное мне (или в идеале если этой криптой можно будет оплачивать товары и услуги). Если это всё будет децентрализовано и использовать IPv6, думаю будет полезно. А в последующем можно будет развернуть такое на мобильные устройства, лежит ночью мобила на зарядке и половиной ядер что-то шуршит и считает.


  1. Rast1234
    28.02.2022 14:34

    Даже если закрыть глаза на сетевые проблемы с nat, нестабильным каналом, плавающим пингом и тд, остается один банальный вопрос стабильности нод и скорости разворачивания своего сервиса, когда ноды переезжают. Разворачивать какой-нибудь сложный/нагруженный сервис в такой среде я бы не стал - ему или понадобится конское число реплик, или он будет постоянно в оффлайне, рассогласованном состоянии, в процессе переливки данных между нодами.