Adaptive Execution Fabric (AEF) — концепція систем, де обчислення самі збирають тимчасову архітектуру під нове завдання
Уявіть систему, яка не складається із заздалегідь визначених серверів, сервісів і маршрутів. А тепер уявіть, що замість цього обчислення щоразу збираються заново — як тимчасова команда, створена виключно під конкретне завдання, і зникають одразу після його виконання.
Саме про це й ідея Adaptive Execution Fabric (AEF): а що, як розподілена система — це не фіксована структура, а процес постійного самоскладання?
Сьогодні майже всі великі цифрові системи влаштовані як міста з наперед прокладеними дорогами. Є сервери, є сервіси, є маршрути, якими рухаються запити. Але що більшим стає таке «місто», то складнішим воно стає:
- гірше реагує на зміни;
- важче переносить збої;
- і дедалі складніше адаптується до непередбачуваних навантажень.
AEF пропонує радикально іншу модель — систему, яка не існує у вигляді готової інфраструктури, а виникає «на вимогу». І найцікавіше тут те, що для кожного нового завдання архітектура може збиратися заново. Фактично це означає, що два однакові запити потенційно можуть виконуватися двома різними обчислювальними структурами.
ЯК ЦЕ МОЖНА ЗРОЗУМІТИ БЕЗ ТЕХНІЧНИХ ТЕРМІНІВ
Перш ніж переходити до формальних компонентів, варто уявити просту аналогію. Уявіть Uber, який не шукає таксі, а щоразу формує «ідеальну команду допомоги»:
- водія;
- перекладача;
- кур’єра;
- спеціаліста під конкретне завдання.
Причому ця команда формується не за фіксованим списком, а за змістом запиту. Щойно завдання виконане — команда зникає. Наступний запит уже створить іншу комбінацію учасників. Приблизно так і працює AEF, тільки замість людей — обчислювальні компоненти.
З ЧОГО СКЛАДАЄТЬСЯ ТАКА СИСТЕМА
Щоб описати цю ідею точніше, вводяться кілька ключових елементів. Але важливо розуміти: це не «постійні частини інфраструктури», а радше ролі, які тимчасово виникають усередині обчислювального процесу.
1. Обчислювальні одиниці (AEU)
Це мінімальні робочі елементи системи. Кожна така одиниця вміє виконувати певний тип обчислень. Аналогія: це схоже на спеціаліста, який підключається до проєкту, виконує завдання й переходить далі.
У класичній архітектурі сервіс існує постійно. У AEF обчислювальна роль може існувати лише кілька секунд — або навіть частки секунди.
2. Система смислового пошуку (DAI)
У класичних системах потрібно заздалегідь знати, до якого сервера звертатися. У AEF усе працює інакше. Коли з’являється завдання, система шукає не «адресу», а «смисловий збіг».
Простіше кажучи:
не «де знаходиться потрібна функція?»,
а «які елементи найкраще підходять для розв’язання цього завдання?»
Це схоже на ситуацію, коли ви шукаєте не конкретного лікаря на ім’я, а найбільш відповідного спеціаліста під вашу проблему — і система сама підбирає його за змістом запиту.
3. Тимчасові з’єднання (Nexus)
Коли відповідні елементи знайдено, система тимчасово об’єднує їх у робочу структуру. Таке з’єднання:
- існує лише під час виконання завдання;
- не є постійним;
- і зникає одразу після завершення роботи.
Фактично обчислювальна архітектура тут стає тимчасовим явищем.
4. Перевірка довіри (K)
Але тут виникає важлива проблема. Компонент, який підходить за змістом, не обов’язково є безпечним або надійним. Тому система розділяє два питання:
- чи підходить елемент для завдання;
- і чи можна йому довіряти.
Для цього використовується окремий шар перевірки. Саме він визначає, чи може компонент брати участь в обчисленнях.
5. Регулятор стійкості (EC)
Коли навантаження стає надто високим, система починає втрачати узгодженість. Елементи надто швидко створюють і розривають зв’язки, а тимчасові структури починають конфліктувати між собою. Це схоже на мегаполіс, у якому транспортна система перебудовується швидше, ніж люди встигають адаптуватися до нових маршрутів.
Регулятор стійкості не керує системою безпосередньо. Його завдання простіше: не дати всій структурі розпастися на хаотичні фрагменти.
ЩО ВІДБУВАЄТЬСЯ ВСЕРЕДИНІ СИСТЕМИ
Якщо спростити, процес виглядає так:
- З’являється завдання.
- Система шукає відповідні компоненти за змістом.
- Перевіряє, чи можна їм довіряти.
- Тимчасово об’єднує їх в обчислювальну структуру.
- Виконує завдання.
- Структура зникає.
І при наступному запиті все може зібратися вже зовсім інакше.
ЩО МОЖЕ ПІТИ НЕ ТАК
Така модель звучить гнучко й красиво, але саме тут починаються складні проблеми. Наприклад, різні частини системи можуть по-різному розуміти «сенс» завдання. Якщо один компонент використовує одну модель інтерпретації, а інший — іншу, вони можуть помилково вважати одне одного сумісними.
Це схоже на ситуацію, коли двоє людей говорять майже однією мовою, але поступово починають вкладати в однакові слова різний зміст. У результаті система інколи просто відмовляється створювати з’єднання — щоб уникнути небезпечніших помилок виконання.
КОЛИ СИСТЕМА ПОЧИНАЄ «РОЗПАДАТИСЯ»
За високого навантаження виникають ще дивніші ефекти. Замість єдиної структури система може почати дробитися на локальні групи, які дедалі гірше узгоджуються між собою. Фактично всередині одного обчислювального середовища починають тимчасово виникати майже незалежні «мікросистеми».
Це нагадує ситуацію, коли райони величезного міста поступово починають жити за власними правилами й усе менше взаємодіють між собою. Саме тому системі потрібен механізм стабілізації, який періодично «перезбирає» зв’язки між компонентами.
ЧОМУ ЦЕ ВЗАГАЛІ ВАЖЛИВО
Головна ідея AEF не в тому, щоб замінити наявні архітектури. Швидше це спроба запропонувати інший спосіб мислення про обчислення. Сьогодні майже вся інфраструктура будується навколо заздалегідь визначеної структури:
- сервісів;
- API;
- маршрутів;
- постійних зв’язків між компонентами.
AEF пропонує протилежний підхід: структура обчислень не задається наперед, а виникає під конкретне завдання.
Це особливо важливо у світі, де:
- навантаження постійно змінюються;
- системи стають надто великими;
- а заздалегідь спроєктовані архітектури дедалі частіше не встигають адаптуватися до реальності.
ЩО ЦЕ МОЖЕ ЗМІНИТИ В МАЙБУТНЬОМУ
Якщо подібні підходи колись стануть практичними, розробка розподілених систем може змінитися радикально. Замість того щоб:
- заздалегідь проєктувати складну інфраструктуру;
- підтримувати величезні мережі сервісів;
- і вручну координувати взаємодію компонентів.
ми будемо описувати лише завдання.
А обчислювальна структура тимчасово збиратиметься автоматично — під конкретну ситуацію та поточний стан системи. Але важливо розуміти: наразі AEF — це не готова технологія, а дослідницька модель. Вона цікава не тим, що вже працює, а тим, що пропонує інший погляд на саму природу обчислювальних систем.
ЗАМІСТЬ ВИСНОВКУ
Adaptive Execution Fabric — це спроба уявити світ обчислень, у якому система не існує у фіксованому вигляді, а постійно перебудовує себе під поточне завдання. Якщо подібні ідеї виявляться життєздатними, майбутні обчислювальні системи нагадуватимуть не набір серверів, а динамічні структури — тимчасові «організми обчислень». Якщо ні — сама концепція все одно залишається корисною, бо показує межі сучасних жорстко заданих архітектур.
16 коментарів
Додати коментар Підписатись на коментаріВідписатись від коментарівen.wikipedia.org/...unteer_computing_projects
утилізація заліза ідея не нова (привіт BOINC та Folding@home, але суть у переході від важкої статичної координації до адаптивної збірки на льоту під намір. Якось так) дякую.
Та воно, ніби, завжди було на льоту, ще з часів IncrediBuild.
за IncrediBuild окремий респект, це класика, крута аналогія! Але там усе все ж крутиться навколо статичного локального графу залежностей для компіляції конкретного коду, а тут хочеться вийти на рівень ефемерної «тканини» загального призначення, яка сама збирається під інтент і зникає через 100мс. Хоча коріння у цьго звісно, спільне. :) / і це ще не все/
Там задачі роздаються динамічно на вільні машини в мережі. Граф компіляції статичний — але він також обраховується окремо під кожний проект, котрий закидають в ІнкредіБілд — власне те, що ви щойно описали.
Велике дякую за інфу, пам’ятатиму ,можливо, це знадобиться надалі.
tl;dr
claude code + aws cli access = big fun, big bills.
Це точно) Наділити ШІ автономією та дати йому root- до AWS — найкращий спосіб перевірити ліміти своєї кредитки. Тут закон «Autonomia in lege» потрібе як ніколи, причому закон , це жорсткі ліміти бюджету в консолі Амазону. Кому потрібні хакери, коли є Claude:)
То був тонкий тролінг. Бо ШІ як і твоя вундервафля має недетермінований план виконання.
ШІ ці апетити на відеокартах пробачають, бо він типу намагається вирішувати задачі які взагалі погано алгоритмізуються.
А ось нахіба той дикий ШІ-стайл оверінженіринг для задач які добре алгоритмізуються — це тобі потрібно буде придумати якусь брехню для інвесторів.
Про інвесторів прям в яблучко! :) Але брехати не будемо. Якщо вундервафля впаде, координатор EC за 15мс очистить оперативу, сліди білування, а інвесторам покажемо красивий детермінований лог успіху. Головне, щоб вони не запитали нашо нам три ноди «сестер» для утилізації YAML-сміття. Та й взагалі , нас і тут непогано годують.
Ідея збірки під конкретне «намірення» (intent) звучить красиво, але наскільки реалістично інтегрувати таку логіку в існуючу enterprise-інфраструктуру, яка намертво зав’язана на статику і K8s? Що думаєте про зворотну сумісність, чи це концепт суто для грінфілд-проєктів?
Звичайно, для грінфілду! Навіщо страждати та писати кілометри YAML-конфігів для статики, якщо можна один раз дати системі свободу збиратися під намірення, а потім просто пити каву і дивитися, як «пепелац» летить сам? ;)
Цікаво надає нові креативні ідеї.
Дякую за Вашу цікавість до статті.
Дякую, 😉
І Вам, Ева дякую! :)