Capacity is not consent
Часть 2 Распределённых вычислений
Я рассматривал распределённые вычисления как в основном проблему планирования. Есть работа, есть машины, и система пытается объединить одно с другим. Это описание упускает человека, который владеет машиной.
Простаивающий GPU может быть технически доступным и одновременно недоступным во всех смыслах, которые имеют значение. Владелец может не принять нагрузку, данные, энергопотребление, бремя обслуживания или риск. Возможность — это не согласие.
Я вижу это так: управление — это не то, что мы добавляем после того, как сеть заработает. Это часть того, что делает сеть возможной. Прежде чем нагрузка сможет переместиться, кто-то должен суметь ответить на несколько простых вопросов. Кто просил эту работу? Почему была выбрана эта машина? Что разрешено приходить с нагрузкой? Кто может отказать в этом? Что произойдёт, если машина исчезнет на середине процесса?
Эти вопросы существуют и в центре обработки данных. Разница в том, что централизованный оператор отвечает на большинство из них в пределах одной административной границы. Оператор владеет или контролирует машины, устанавливает условия обслуживания, измеряет работу и решает, какие политики применяются. Когда машины принадлежат множеству независимых людей или организаций, эти решения больше не идут в комплекте.
Нагрузка пересекает более одной границы
Машина может быть доступной, пока работа всё ещё не авторизована.
- ЗапросЧеловек просит результатКакой результат нужен и какой контекст может перемещаться?
- РазмещениеКоординатор находит ресурсыКакая машина способна, доступна и подходит?
- РазрешениеВладелец машины всё ещё может отказатьСоответствует ли эта работа объявленной политике владельца?
- ЗаписьОбе стороны сохраняют полезный отчётЧто выполнялось, по какому правилу и кто нёс риск?
Распределение меняет участников, а не только размещение
Соблазнительно рисовать распределённые вычисления как карту: какая-то работа остаётся локальной, какая-то выполняется поблизости, а какая-то идёт в большой удалённый пул. Эта карта полезна, но она описывает, где выполняется работа. Она не описывает, кто имеет над ней полномочия.
Как минимум, распределённая работа затрагивает три разных интереса.
Человек, запрашивающий работу, хочет получить результат. Его волнуют стоимость, скорость, приватность и качество результата.
Система, координирующая работу, хочет найти подходящие ресурсы и поддерживать её движение. Её волнуют доступность, совместимость и то, можно ли объединить части в надёжный сервис.
Человек или организация, предоставляющие машину, имеют другую заботу. Они несут расходы на электричество, амортизацию, подключение, обслуживание и риск безопасности. Они также могут иметь правила о том, какой вид работы машине никогда не следует выполнять.
Иногда одна компания занимает все три позиции, что делает границы лёгкими для пропуска. В действительно распределённой системе они могут принадлежать разным сторонам. Планировщик может найти машину без полномочий её использовать. Покупатель может оплатить ресурсы без получения общего права на машину. Владелец может предложить некоторые ресурсы без сдачи контроля над всем, что к ним подключено.
Поэтому я думаю, что единица, которая координируется, — это не просто вычисления. Это вычисления в соответствии с конкретным набором разрешений, обязательств и условий отказа.
Облако не терпит неудачу в этом
Крупные поставщики облачных услуг уже перемещают инфраструктуру за пределы своих центральных регионов. AWS описывает Outposts как принадлежащую AWS и управляемую AWS инфраструктуру, установленную на сайте клиента. Azure Arc представляет машины вне Azure как ресурсы Azure, которые можно управлять с помощью инструментов Azure. Google Distributed Cloud расширяет инфраструктуру и сервисы Google Cloud в центры обработки данных и граничные локации.123
Это полезные системы. Они решают реальные требования вокруг задержки, локализации данных, операционной согласованности и отключённых окружений. Я не думаю, что их модель центрального управления — это упрощение. Это часть продукта.
Поставщик может поддерживать сервис, потому что контролирует операционную модель. Он может решить, какое оборудование поддерживается, как обновляется программное обеспечение, какая телеметрия требуется и как обрабатываются сбои. Клиенты отказываются от некоторой свободы действий в обмен на согласованность и ответственность.
Что я бы не делал, так это не путал бы приближение облачной плоскости управления к клиенту с распределением самой плоскости управления. Первый вопрос географический: где находится машина? Второй — институциональный: чьи правила управляют машиной, нагрузкой и отношениями между ними?
Стимулы тоже разные. Поставщик облака разумно мотивирован сделать больше нагрузок совместимыми со своими сервисами и операционной моделью. Владелец отдельной машины может захотеть ровно противоположное по умолчанию: ничего не работает, если оно не удовлетворяет узкой политике, которую выбрал владелец. Ни одна позиция не иррациональна. Они исходят из разных принципов.
Это не означает, что крупный поставщик никогда не мог бы участвовать в более распределённой системе. Это означает, что отсутствующий слой маловероятно появится просто за счёт расширения существующего облака наружу. Система, ориентированная на поставщика, предназначена для того, чтобы разнородные локации вели себя как один поставщик. Система, ориентированная на владельца, должна сохранять значимые различия в полномочиях.
Рыночная площадка решает только часть проблемы
Существуют также открытые рынки вычисления. Akash, например, описывает рынок, на котором операторы инфраструктуры предлагают ресурсы, устанавливают цены, делают ставки на развертывания и получают оплату через лизинг.4 Проекты добровольных вычислений координировали независимо принадлежащие машины для научной работы в течение десятилетий.5
Поэтому интересное утверждение — это не то, что никто не пытался координировать компьютеры, которые они не владеют. Это было бы неправильно.
Пробел, к которому я всё возвращаюсь, уже. Большинство рынков ресурсов начинаются с поставщика, который уже решил работать с инфраструктурой для других людей. От поставщика ожидается поддержание сервера, выведение его в сеть и принятие нагрузок в соответствии с правилами рынка. Это ближе к маленькому центру обработки данных, чем к обычному человеку, сохраняющему контроль над машиной, которая также имеет другую жизнь.
Когда участие достигает машин, которые являются личными, прерывистыми или только частично доступными, лизинг — это не всё соглашение. Владелец может захотеть машину обратно немедленно. Семья может её использовать. Бизнес может нуждаться в ней для своей основной работы. Чувствительная нагрузка может быть приемлемой, в то время как другая — нет. Сети может быть разрешено использовать GPU, но не файлы, периферийные устройства или идентичность, которые случайно находятся рядом.
Доступность — это предложение. Это не постоянная сдача.
Минимальный контракт управления
Я не думаю, что ответ начинается со сложной конституции. Он начинается с небольшого числа прав, которые остаются реальными, когда система занята, когда вовлечены деньги и когда что-то не работает.
Владелец может определить, что разрешено. Машина должна быть в состоянии предложить конкретный вид ресурсов для конкретного вида работы. "Онлайн" — это слишком широкое разрешение.
Владелец может отказать на границе, которая выполняет работу. Политики в другом месте сети недостаточно, если сама машина не может отклонить рабочую нагрузку, поступившую без надлежащего разрешения.
Разрешение может закончиться. Участие должно иметь область и срок действия. Отзыв, который существует только после опустошения текущей очереди, не является действительным отзывом.
Маршрут оставляет полезную запись. Запрашивающий должен иметь возможность понять, где выполнялась работа и в соответствии с какой политикой. Владелец должен иметь возможность понять, что было принято, не получая копию чьих-то приватных данных.
Сбой имеет владельца. Если машина отключается, результат неправильный или рабочая нагрузка нарушает соглашение, система нуждается в известном пути: повторить попытку в подходящем месте, снизить возможность, обратиться к человеку или остановиться. «Сеть это обработала» — это не ответственность.
Стороны могут уйти. Система не является действительно добровольной, если выход технически возможен, но экономически или операционно карателен способами, которые никто не объяснил при входе.
Эти принципы не указывают архитектуру сети. Это намеренно. Те же вопросы применяются независимо от того, находится ли участвующая мощность в доме, малом бизнесе, университете, региональном операторе или традиционном центре обработки данных. Реализация может отличаться. Права должны оставаться узнаваемыми.
Экономика следует за властью
Распределенную мощность часто описывают как избыточную мощность, что может звучать как бесплатно. Это не так.
Актив уже существует, но кто-то за него все еще заплатил. Он износится. Он потребляет энергию. Он занимает место. Ему нужна связь, техническое обслуживание, охлаждение и в конце концов замена. Если машина должна оставаться доступной в определенное время, владелец также отказывается от выбора. Они не могут использовать одну и ту же мощность дважды.
Практический экономический вопрос не в том, устраняет ли распределение капиталоемкость. Это вопрос о том, куда смещается капиталоемкость, кто какие риски несет и как система признает разницу.
Простая цена за единицу вычислений может быть достаточной для стандартизированной инфраструктуры под профессиональным управлением. Она становится менее информативной по мере того, как машины и обязательства становятся более разнообразными. Две машины могут выполнять одно и то же вычисление, предлагая при этом очень разную доступность, границы приватности, задержку, стоимость энергии или поведение восстановления.
Здесь встречаются управление и экономика. Машина, которая принимает более узкий класс работ, может быть более надежной для этого класса. Машина, владелец которой обещает доступность, предоставляет больше, чем машина, мощность которой может исчезнуть без предупреждения. Участник, который несет дополнительный операционный риск, не должен рассматриваться так, как если бы пропускная способность была всей услугой.
Я не знаю правильную единицу измерения цены для такой системы. Я скептически отношусь к тому, что токены, секунды или часы ускорителя в одиночку это опишут. Эти единицы измеряют активность. Они не обязательно измеряют качество соглашения, окружающего активность.
Дизайн стимулов также должен сопротивляться очевидным ярлыкам. Оплата только за выполненную работу может побудить поставщиков принять работы, которые они должны отклонить. Оплата только за доступность может вознаградить мощность, которая технически присутствует, но не полезна. Штрафование каждого прерывания может сделать обычных людей нежелающими участвовать вообще.
Конечное состояние имеет значение, потому что стимулы в конечном итоге становятся поведением. Если система вознаграждает только использование, она будет пытаться держать каждую машину занятой. Если она вознаграждает надежное обслуживание в соответствии с объявленными ограничениями, у нее есть причина уважать эти ограничения.
Что распределение могло бы улучшить
Здесь доступны реальные преимущества, но ни одно из них не приходит автоматически.
Работа может остаться ближе к человеку или организации, которые владеют контекстом. Это может снизить задержку и ненужное движение данных. Это не гарантирует приватность; программное обеспечение и политика по-прежнему должны заработать это утверждение.
Мощность может поступать из большего количества мест. Это может улучшить устойчивость, если области отказа действительно независимы. Тысяча машин, скоординированных через один хрупкий орган, географически распределены и операционно централизованы.
Существующие активы могут использоваться более эффективно. Это может улучшить экономику, если дополнительное использование превышает затраты на энергию, износ, поддержку и координацию. «Уже приобретено» не означает «бесплатно в эксплуатации».
Система может сохранить местное усмотрение. Это может быть наиболее важное преимущество и самое сложное для измерения. Человек может участвовать, не превращая свою машину в отделение чужого центра обработки данных.
Чтобы сделать эти преимущества реальными, необходимо еще работать над несколькими пробелами: портативная политика, происхождение рабочей нагрузки, надежное измерение, понятный отзыв, обработка споров, плавная деградация и способ сравнения качества обслуживания между машинами, которые не идентичны. Это не дополнительные функции на вычислительном рынке. Это условия, при которых рынок может быть надежным.
Тест, который я бы использовал
Я не утверждаю, что каждый ноутбук должен стать центром обработки данных или что централизованная инфраструктура должна быть заменена. Централизованные системы часто являются правильным местом для тяжелых работ, стабильной доступности и операций, которые выигрывают от одного ответственного поставщика.
Вопрос в том, может ли другая категория существовать рядом с ними: вычисления, скоординированные по машинам, владельцы которых остаются субъектами системы.
Тест просто сформулировать и сложно удовлетворить. После того, как машина становится обнаруживаемой, после того, как рабочая нагрузка ожидает, и после того, как существует экономический стимул для ее выполнения, может ли владелец по-прежнему отказать в соответствии с политикой, которой система вынуждена соблюдать?
Если ответ «нет», вычисления могут быть распределены. Власть — нет.
Примечания
-
AWS описывает Outposts как полностью управляемый сервис, который расширяет инфраструктуру, сервисы, API и инструменты AWS на помещения клиента с оборудованием, принадлежащим и управляемым AWS: What is AWS Outposts? ↩
-
Microsoft описывает серверы с поддержкой Azure Arc как машины за пределами Azure, которые получают удостоверения ресурсов Azure и управляются аналогично собственным виртуальным машинам Azure: What is Azure Arc-enabled servers? ↩
-
Google описывает свой портфель Distributed Cloud как расширение инфраструктуры и сервисов Google Cloud на центры обработки данных и граничные расположения с подключенными и изолированными моделями работы: Google Distributed Cloud ↩
-
Akash описывает децентрализованный рынок, где поставщики предоставляют вычисления, устанавливают цены и получают доход, размещая рабочие нагрузки арендаторов: Should I Run an Akash Provider? ↩
-
BOINC — это давно работающая платформа для добровольных вычислений, которая координирует пожертвованные ресурсы на независимо принадлежащих компьютерах: BOINC: A Platform for Volunteer Computing ↩