О кончине веба как централизованной среды говорят давно, а в последнее время заговорили еще больше. Всесторонняя слежка АНБ, экспоненциально растущие объемы трафика и, конечно же, любимые нами блокировки ресурсов сыграли свою роль. Проблема только в том, что сделать веб децентрализованным, не сломав его, невозможно, однако мы можем перейти на совершенно иную технологию, из коробки предоставляющую средства для создания веб-страниц и приложений без единой точки отказа.

 

Вместо введения

Балансировщики нагрузки, кеширование, избыточность, распределенные базы данных, обратный прокси, IaaS, CDN — все эти термины уже давно стали обыденными не только для DevOps-инженеров, но и для IT-шников, работающих в совершенно иных сферах. Сегодня крупные интернет-компании используют кластеры из десятков и сотен серверов, формирующих инфраструктуру, которая выдержит и резкие наплывы посетителей, и отказ основных серверов, а нередко и физический обрыв кабеля.

Времена конфигураций «один сервер — один веб-сайт» уже давно прошли. Однако, как и раньше, мы продолжаем использовать все те же веб-технологии, что и старик Тим Бернерс-Ли. Мы изобрели HTTP/2, но до сих пор не придумали способа отвязать сервис от единой точки входа; у нас есть огромное количество технологий оптимизации отдачи контента, но почему-то мы до сих пор страдаем от DDoS-атак; у нас есть HTML5, однако мертвые ссылки остаются одной из главных проблем веба; мы платим копейки за мегабайт трафика, но отдаем огромные суммы за то, чтобы наш сервис оставался онлайн.

Мы делаем все, что в наших силах, чтобы веб был быстрым, высокодоступным и полезным, но, кажется, становится только хуже. Кто-то может назвать это нормальным, сославшись на растущее количество пользователей сети, нагрузки, объемы и «тяжесть» контента, однако корень проблемы заключается в ущербности самого HTTP как средства для отдачи огромных объемов трафика. Он просто для этого не предназначен. Система, построенная по принципу «один провайдер — миллионы потребителей», во все времена будет страдать от всех перечисленных проблем со все большим усложнением инфраструктуры провайдера, постоянно возрастающими расходами на ее содержание и опасениями, что в любой момент придет Роскомнадзор и выключит доступ к сервису одним нажатием кнопки.

Впервые это осознали создатели первых P2P-сетей и предложили совершенно иной способ распространения контента. Идея была проста как сапог: вместо того чтобы складировать все данные в одном месте, задачу их хранения и распространения возложили на самих потребителей, превратив их в полноправных участников раздачи контента. Как мы все знаем, технология не просто взлетела, а стала одним из столпов, на которых держится современный интернет.

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

 

Веб 3.0

IPFS (InterPlanetary File System) — это стек протоколов и технологий, позволяющий создать нечто вроде глобальной распределенной файловой системы, построенной по принципу P2P-сети. В такой сети все ноды равны и могут выступать как потребителями, так и провайдерами контента (но не обязательно). Поиск информации ведется с использованием распределенной хеш-таблицы (DHT), а адресация контента, как следствие, с помощью хеш-сумм файлов.

Проще всего представить IPFS как надстройку (оверлейную сеть) над интернетом, в которой используются иные методы доступа к ресурсам. Вместо привычного нам понятия «такой-то файл на таком-то веб-сервере» здесь используется понятие «хеш-сумма такого-то файла, который должен быть где-то в сети». Для получения файла клиенту нужно знать только хеш, все остальное сеть сделает сама: найдет узел, у которого есть копия файла, запросит у него файл и отдаст его нам. При этом сеть не имеет пределов горизонтального роста, и при увеличении ее размеров всего лишь незначительно увеличится длительность поиска файла в хеш-таблице (20 хопов для сети из 10 миллионов узлов с увеличением на один хоп при удвоении размера сети).

Применительно к вебу IPFS позволяет решить многие проблемы HTTP и обладает следующими преимуществами:

  • Высокая доступность. Веб-сайт, размещенный с помощью IPFS, не имеет точек отказа. При достаточно большом количестве узлов, реплицирующих веб-сайт или его части (или даже части файлов) у себя, выход одного, нескольких или даже большинства из них никак не повлияет на доступность веб-сайта. Более того, нагрузка на узлы, распространяющие контент веб-сайта, будет равномерно распределена между ними, что защитит от резких наплывов посетителей и DDoS-атак.
  • Параллельная загрузка. Клиент может загрузить части веб-сайта и отдельных файлов с разных узлов одновременно, равномерно распределяя нагрузку на них и увеличивая общую скорость загрузки.
  • Решение проблемы мертвых ссылок. Все файлы в IPFS адресуются с помощью хеш-сумм, так что, если один или несколько узлов перестанут хранить у себя файл, он все равно будет найден.
  • История версий. IPFS — версионная файловая система. При модификации файла старая версия остается неизменной и может быть адресована и найдена. Это позволяет из коробки получить wayback machine, которая будет работать до тех пор, пока хоть один узел будет хранить старую копию файла.
  • Обход цензуры. В IPFS нет единой точки входа и единого сервера, отвечающего за обслуживание веб-сайта или сервиса. Чтобы «выключить» сайт в IPFS, придется выключать все узлы, ответственные за хранение его частей. При достаточно больших размерах сети это нереализуемая задача.
  • Экономия на трафике. Благодаря равномерному распределению нагрузки на узлы можно существенно сократить расходы на трафик, размазав их по всем раздающим.

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

Вариант 1. Оформи подписку на «Хакер», чтобы читать все статьи на сайте

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

Вариант 2. Купи одну статью

Заинтересовала статья, но нет возможности оплатить подписку? Тогда этот вариант для тебя! Обрати внимание: этот способ покупки доступен только для статей, опубликованных более двух месяцев назад.


2 комментария

Подпишитесь на ][, чтобы участвовать в обсуждении

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

Check Also

Tips’n’Tricks из арсенала андроидовода. Самые интересные, полезные и нестандартные трюки с Android

Многие годы мы рассказывали про самые разные способы оптимизировать, модифицировать и твик…