Условия входа
Проект по прежнему остаётся закрытым. Но с апреля я начал выводить его в публичную плоскость — и даже принял несколько новых участников. Я не подключаю к своей сети всех подряд — заявки от незнакомых людей я, как правило, отклоняю. Это принципиальная позиция: я строю небольшую частную сеть, а не сервис для общего пользования.
У этого есть для этого вполне конкретные причины — и в этой статье я как раз хочу открыто поговорить об условиях подключения и о том, зачем я вообще расширяюсь.
В марте у нас выбило часть инфраструктуры. До этого проект жил на том, что было, — и в целом хватало. Но когда начинаешь думать про устойчивость, понимаешь: одного-двух серверов мало. Нужны узлы. Причём не периферийные — с ними у меня проблем нет, — а узлы ядра.
Ядро — это то, что находится за периметром. Иностранный хостинг. И вот здесь постоянная история: крипта, доллары, тенге, нестандартные способы оплаты, каждый раз новая схема. Это всё решаемо — но утомляет. Поэтому я начал искать людей, у которых есть возможность поднять сервера ядра — и которые готовы отдать его под моё оперативное управление.
Вот как это устроено на практике.
Новый участник самостоятельно поднимает кластер из Entry и Core ноды. Сервер остаётся в его собственности: он за него платит, он следит за его здоровьем, он отвечает за трафик перед хостером. Я беру его в оперативный контроль — получаю доступ для развёртывания на его базе общей сетевой инфраструктуры. При этом владелец остаётся единственным пользователем своего узла. Я периодически могу подключаться — но лишь для того, чтобы использовать ваш узел в качестве резерва, а не постоянной нагрузки.
Каждый, кто-по каким-то причинам решил выйти из проекта, может просто отключить сервера у своего хостера. В любой момент, окончательное решение остается за вами.
Схема меня устраивает ещё и по другой причине: каждый владелец самостоятельно мониторит свой узел и своевременно оплачивает счета хостера. Система хелфчекинга и мониторинга нагрузки — в планах, но на практике будет реализована еще неизвестно когда.
Теперь об архитектуре — для общего понимания вопроса.
Сеть строится по схеме ядро—периферия. Узлы ядра — это мощные, постоянные серверы, на которых держится всё остальное. Периферия — оболочка: менее мощные машины, более текучие, с планомерной ротацией IP-адресов. К каждому узлу ядра цепляется своя изолированная периферия — и это отдельный кластер, не пересекающийся с остальными.
Моя цель — сделать так, чтобы разворачивание и сворачивание периферии происходило без боли. Добавить узел, убрать, поменять — автоматически, с минимальными усилиями. Пул адресов должен систематически обновляться: постоянство — это мишень, как я уже писал в «Записках выжившего лемминга».
И вот здесь появляется следующий уровень задачи. Всей этой системе нужно общее распределённое хранилище данных — не централизованное. Я планирую строить его на базе etcd, поверх которого появится API для работы с данными, а следом — интерфейсы для пользователей: Telegram, веб. Общая идея: любой запрос обрабатывается с любого узла ядра, и сеть безболезненно переживает потерю части из них.
На перспективу картина такая.
Я хочу, чтобы у каждого участника был свой полноценный кластер — за которым он сам следит и который сам поддерживает. А на экстренный случай — возможность выйти через чужой узел и восстановить всё с нуля, аки феникс из пепла. Для этого и нужно общее хранилище: не как центр управления, а как распределённый фундамент, который живёт на всех узлах сразу.
Это и есть конечная цель. Каждый сегмент независим, но при компрометации одного — остальные остаются. И каждый участник знает, что есть запасной выход.
В конечном счете, для меня этот проект - больше социальный, чем коммерческий (по крайней мере, на данном этапе). Я развиваю его, для реализации своих личных целей — для создания устойчивой инфраструктуры выхода в сеть без ограничений, для пользования сервисами, беспрепятственного общения и обмена информацией.
Я также использую его для самопиара и укрепления личного бренда — ведение блога, соцсетей и публикации на специализированных платформах, — все это занимает 80% времени, которое я мог бы уделить техническому развитию этого проекта. Мне приходится общаться с людьми — и не потому что у меня непомерное эго, жажда общения и желание получить больше лайков в социальных сетях. Все это — далеко за пределами моей зоны комфорта.
Однако — даже таким динозаврам как я, надо как-то приспосабливаться, чтобы пережить эволюцию.