Досліднику необхідно змоделювати згортання білка. Він входить до системи через термінал, щоб використовувати не один комп’ютер, а підключитися до великої мережі, що розподіляє навантаження. Трейдеру слід передбачити рух акцій. Він відкриває дані на кишеньковому КПК, використовуючи обчислювальні потужності бекенд-інфраструктури своєї компанії. Військовому командувачеві необхідно координувати удар. Він покладається не на один серверний комплекс, а отримує доступ до ресурсів трьох різних ізольованих військових мереж для формування стратегії.
Ці сценарії звучать як наукова фантастика або корпоративна утопія, але всі вони вказують на одну й ту саму базову архітектуру: мережні обчислення (grid computing).
Це цифровий аналог об’єднання ресурсів. У мережевих обчисленнях ви маєте справу не лише з потужністю власного комп’ютера. Ви отримуєте доступ до обчислювальних ядрів, пам’яті та сховища кожної авторизованої машини в системі. Це розподілені обчислення на стероїдах. Ціль? Змусити мережу розрізнених комп’ютерів працювати як один величезний єдиний суперкомп’ютер.
Міф про один комп’ютер
Історично, якщо вам потрібно більше потужності, ви купували швидший комп’ютер. Ви додавали більше оперативної пам’яті. Ви встановлювали жорсткий диск більшого обсягу. Існувала межа того, що міг зробити один окремий комп’ютер, незалежно від того, скільки грошей ви в нього вкладали. Мережеві обчислення руйнують цю межу.
Уявіть собі похід. Ви їдете поодинці. У вас один намет. У вашого друга інша. Один привозить їжу, інший позашляховик. Якщо ви їдете одні, вам доводиться нести все самому. Ви обмежені своєю власною силою та своїм власним спорядженням. Якщо ви подорожуєте разом, ви поділяєте навантаження. Ви використовуєте навички один одного. Подорож стає простішою, швидше і ефективнішою, тому що ніхто не несе всю ношу поодинці.
Мережеві обчислення застосовують цю логіку до даних.
Стандартний комп’ютер покладається на свій центральний процесор (ЦП). Цей мікропроцесор обробляє числа та керує даними. Він також покладається на пам’ять (ОЗП), яка є тимчасовим високошвидкісним сховищем, розташованим близько до ЦП, та накопичувачі (жорсткі диски або бази даних), які є постійними, але повільнішими. За замовчуванням користувач обмежений межами власного обладнання.
У мережевих обчисленнях ці межі зникають. Система пов’язує ці ресурси разом. Коли ви виконуєте запит, мережа використовує не лише ваше ЦП. Вона розподіляє частини завдання на тисячі інших машин у мережі. Для користувача це здається магією. Ви отримуєте доступ до колективної потужності усієї мережі, а не лише до кремнію перед вами.
Це не нове, але ще не готове
Суть у наступному: мережеві обчислення – це не нова ідея. Це специфічний тип розподілених обчислень. Розподілені обчислення існують уже десятиліттями, коли різні комп’ютери діляться ресурсами через мережу. Але справжні мережеві обчислення йдуть далі. В ідеальному стані кожен ресурс є загальним. Кожен такт процесора і кожен байт сховища стають надбанням спільноти.
Доступ до них має бути безшовним. Інтерфейс не повинен виглядати так, ніби ви зламуєте мейнфрейм. Він має виглядати так, ніби ви працюєте на своєму власному робочому столі. Різниця полягає в невидимій потужності, що стоїть за лаштунками.
Однак технологія ще далека від досконалості. Ми все ще перебуваємо в складному перехідному періоді. Вчені та інженери зараз борються зі стандартами та протоколами. Зараз багато мережевих систем покладаються на власне програмне забезпечення. Вони ізольовані. Щоб приєднатися до мережі, часто потрібні спеціальні інструменти постачальника. Поки галузь не домовиться про універсальний набір правил, впровадження буде незручним. Організації не хочуть інвестувати в інфраструктуру, яка може бути несумісною з іншими.
Пастка жаргону
Якщо ви зануритеся в документацію з мережевих обчислень, ви потонете в абревіатурах. Ця сфера багато запозичує в інших технологічних секторах. Щоб зрозуміти, як це працює, потрібно відокремити суть від шуму.
Мережеві обчислення пов’язані з кількома іншими моделями, і межі між ними часто розмиті:
- Спільний комп’ютер: Це широка категорія. Це стосується будь-якої групи комп’ютерів, які спільно використовують обчислювальну потужність для виконання завдання. Це досить загальний термін.
- Допоміжні обчислення: Часто надаються за допомогою програмного забезпечення як послуги (SaaS). Уявіть собі електрику. Ви не будуєте електростанцію; ви підключаєтеся до мережі та платите за те, що використовуєте. Компанії пропонують сховище або обчислювальну потужність залежно від споживання.
- Хмарні обчислення: Це найвідоміший термін сьогодні. У хмарних обчисленнях програми та сховище живуть в Інтернеті. Ви не володієте обладнанням; ви орендуєте доступ до нього. Хоча хмарні та мережеві обчислення мають спільні корені, мережеві обчислення більше зосереджені на об’єднанні незадіяних ресурсів для масивних обчислювальних завдань, тоді як хмарні обчислення часто зосереджені на наданні послуг через Інтернет.
Щоб орієнтуватися в цих поняттях, потрібно знати словниковий запас. Ось основи:
- Кластер: Група мережевих комп’ютерів, які спільно використовують ресурси. Вони працюють разом як одне ціле.
- Вузол: будь-який пристрій у мережі, який може надсилати, отримувати або пересилати дані. Контрольні вузли керують потоком.
- XML (розширювана мова розмітки): Мова розмітки, яка описує дані. Він читається як людьми, так і машинами. Вузли керування використовують похідні XML, такі як WSDL (мова опису веб-служб), щоб зрозуміти, як обробляти певні програми та типи даних.
- Хаб: центральна точка в мережі, де з’єднуються кілька пристроїв.
- IDE (Інтегроване середовище розробки): Набір інструментів, які програмісти використовують для створення програм.
- Пісочниця: ізольоване середовище, яке використовується для тестування програм без ризику для основної системи.
Технологія працює. Концепція виправдана. Але найбільшою перешкодою залишається фрагментація стандартів. Поки «сантехніка» мережевих обчислень не буде стандартизована, ми продовжуватимемо бачити ізольовані острівці потужності, а не справді єдиний глобальний суперкомп’ютер.
Технічна термінологія
Щоб зрозуміти грід-обчислення, вам потрібно говорити мовою. Це не просто модні слова; це механізм того, як різні машини спілкуються одна з одною.
Інтероперабельність (сумісність) є фундаментом. Без неї ваш ПК та Macintosh залишаються ізольованими островами. Вони мають різні операційні системи, різні архітектури. Вони не можуть працювати разом, якщо програмне забезпечення не усуне цей розрив.
Потім йдуть відкриті стандарти. Пропрієтарні стандарти прив’язують вас до екосистеми одного постачальника. Відкриті стандарти є громадськими. Кожен може їх прийняти. Це робить інтеграцію набагато простіше, оскільки всі грають за тими самими правилами.
Ми також говоримо про паралельну обробку. Це не просто багатозадачність на одному чипі. Це використання кількох процесорів для вирішення одного обчислювального завдання. Це тісно пов’язане з розподіленими обчисленнями, які використовують ресурси мережі, що не використовуються, для виконання роботи.
Платформа – це просто основа. Це може бути операційна система, архітектура, мова програмування чи навіть веб-сайт. Розробники будують свої продукти поверх неї.
Коли одного сервера недостатньо, вам потрібен серверний кластер (ферма серверів). Група серверів, що працюють разом над завданнями, надто складними для однієї машини.
Але купівля додаткового обладнання дорога. На сцену виходить віртуалізація серверів. Цей метод використовує програмне забезпечення для поділу одного фізичного сервера на кілька ізольованих віртуальних платформ. Кожен віртуальний сервер працює зі своєю власною операційною системою незалежно. Одна машина може одночасно хостити сервер на Linux та сервер на Windows. Це можливо, тому що більшість серверів простоюють більшу частину часу. Віртуалізація скорочує витрати на обладнання для грід-систем, яким потрібні десятки вузлів.
У цьому середовищі сервіс (послуга) — це будь-яка програмна система, яка дозволяє комп’ютерам взаємодіяти через мережу.
Комунікація часто спирається на SOAP (Simple Object Access Protocol). Набір правил обміну XML-повідомлень через мережу. Він був розроблений Microsoft. Це синтаксис для розмови.
Управління даними призводить до поняття стану (state). У ІТ стан – це будь-які постійні дані. Вони зберігаються протягом усього життєвого циклу програми. Коли ви додаєте книги в кошик Amazon, це дані зі станом. Amazon відстежує ваш вибір, поки ви переглядаєте каталог. Сервіси зі станом дозволяють створювати багатокрокові програми, які покладаються на узгоджені основні дані.
І, нарешті, “транзієнтність” (тимчасовість). Здатність вмикати чи вимикати сервіс у мережі без збою всієї операції.
Обмін ресурсами
Тож як ці елементи зв’язуються разом?
Декілька організацій змагаються у створенні стандартизованих протоколів. Ціль? Зробити середовища грід-обчислень готовими до використання “з коробки” (plug-and-play).
Грід-системи існують уже сьогодні. Але сумісність часто буває нестабільною. Чому? Тому що кожна система часто використовує унікальний набір протоколів та інструментів. Дві грід-системи можуть не розуміти одна одну. Відсутність згоди є вузьким місцем.
Функціональна система грід-обчислень зазвичай потребує трьох речей:
- Керуючий вузол. Зазвичай це сервер, який виконує адміністративні функції. Це диспетчер.
- Мережа. Комп’ютери, що працюють із спеціальним грід-програмним забезпеченням. Вони діють як інтерфейси і пули ресурсів. Мережа може бути однорідною (однакова ОС, однакове обладнання) або гетерогенною (суміш всього поспіль). Вона може бути провідною або через відкритий Інтернет.
- Проміжне ПЗ (Middleware). Робоча конячка. Програмне забезпечення, яке дозволяє різним комп’ютерам виконувати процес через мережу. Без проміжного програмного забезпечення комунікація неможлива. Немає єдиного формату для проміжного ПЗ, що посилює проблему фрагментації.
Керуючий вузол зайнятий. Він розставляє пріоритети завдань. Він планує роботу через мережу. Він вирішує, які ресурси одержує кожне завдання. Він контролює навантаження. Критично важливо, щоб він забезпечував відсутність уповільнення локальної машини користувача. Грид повинен використовувати ресурси, що не використовуються. Якщо комп’ютер гальмує під час роботи грида, система дає збій.
Проблема стандартизації
Потенціал безмежний. Але тільки якщо всі згодні з протоколами та інструментами.
Без стандартного формату сторонні розробники застрягли. Незалежні програмісти хочуть створювати програми на гриді, але вони не можуть гарантувати сумісність. Їм, можливо, доведеться створювати різні версії однієї й тієї ж програми для різних систем. Це триває багато часу. Розробники не хочуть виконувати одну й ту саму роботу двічі.
Стандартизований набір протоколів дозволив би розробникам зосередитись на одному форматі. Одна кодова база. Одна грід-система.
До того часу ми застрягли із фрагментованим ландшафтом. Потужним, так. Але безладним.
Це повертає нас до питання: якщо обладнання є і програмне забезпечення існує, чому не кожна мережа є гридом?
Парадокс безпеки розподіленої потужності
Об’єднання розрізнених машин на єдину обчислювальну тканину звучить як утопічне рішення обробки даних. Але це негаразд. Це логістичний головний біль, обернутий на ризики безпеки. Коли ви підключаєте два комп’ютери, не кажучи вже про тисячі, ви неминуче стикаєтеся з питаннями конфіденційності, контролю доступу та неправомірного захоплення ресурсів.
Програмне забезпечення проміжного рівня (middleware) є відповіддю, або, принаймні, тимчасовим рішенням. Протоколи мережевих обчислень власними силами не вирішують ці проблеми; вони лише полегшують розробникам створення інструментів, що це роблять. Головна проблема? Шифрування.
Більшість інженерів покладаються на шифрування захисту даних. Ви кодуєте інформацію так, щоб прочитати її могли лише ті, хто має ключ. Злам такого коду зазвичай вимагає розкладання величезних чисел на прості множники – завдання, на яке у звичайного суперкомп’ютера йдуть роки. Але іронія: система мережевих обчислень може бути використана як зброя для злому саме цих кодів. Якщо об’єднати процесорів, що досить простоюють, час, необхідний для злому надійного шифрування, скорочується з років до днів.
«Хакер теоретично може створити систему мережевих обчислень з метою злому зашифрованої інформації».
Пропрієтарне програмне забезпечення може запропонувати незначний захист, але відкриті стандарти, необхідні для функціонування мережевих обчислень, залишають двері широко відчиненими. Кожен вузол вимагає специфічного програмного забезпечення взаємодії з іншою мережею. Якщо в цьому програмному забезпеченні є вразливість, то страждає вся мережа.
Потім виникає проблема доступу. Не можна дозволяти всім робити все, що завгодно. Якщо користувач захопить усі ресурси, виникне взаємне блокування (deadlock). Вузол керування зависне. Нічого не відбуватиметься. Тому протоколи авторизації та аутентифікації стають обов’язковими. Тільки вибрані користувачі отримують повний доступ до мережі. Решта? Вони отримують свій комп’ютер, позбавлений додаткової обчислювальної потужності.
Хто стежить за вітриною?
Програмне забезпечення проміжного рівня та вузол управління діють як охоронці мережі. Вони керують потоками даних. Вони стежать за тим, щоб жоден окремий комп’ютер не домінував у мережі, і навпаки, щоб мережа не виснажувала персональний комп’ютер користувача до останньої краплі процесорного часу. Якщо система забирає у вас власні обчислювальні ресурси, це неефективно. Це вороже.
Від наукової фантастики до лабораторного столу
То куди ж насправді прямує ця потужність? Чи не у ваші відеоігри. Не до ваших електронних таблиць.
Більшість мережевих обчислень, що працюють сьогодні, належать академічним колам і науковим установам. Технічно це “системи спільного використання обчислень”, а не справжні постійні корпоративні мережі. Вони використовують циклі процесора, що простоюють. І вони виконують тяжку роботу.
SETI@home: Прослуховування порожнечі
Проект пошуку позаземного інтелекту (SETI) вивів мережні обчислювальні системи на перший план. Радіотелескопи збирають терабайти космічного шуму. Один комп’ютер не може знайти голку в копиці сіна таких даних. SETI@home створив програму, яка перетворює мільйони домашніх ПК на віртуальний суперкомп’ютер. Ви встановлюєте її. Вона працює у фоновому режимі. Вона аналізує дані про наявність сигналів інопланетян. Якщо ви хочете пограти в Call of Duty, програма поступається. Коли ви виходите із системи, вона відновлює свою роботу.
Folding@home: Розгадка білкової головоломки
Потім є група Панде (Pande Group) із Стенфорда. Вони шукають не інопланетян; вони шукають причини хвороби Паркінсона та Альцгеймера. Ключ криється у згортанні білків. Білки набувають певних форм для виконання своїх функцій. Коли вони згортаються неправильно, йдуть хвороби.
Folding@home моделює процес згортання білків. Це величезна обчислювальна проблема. Група Панде сподівається, що зрозумівши фізику неправильного згортання, вони зможуть знайти нові методи лікування. Процес ідентичний SETI: скачайте програму, дозвольте процесору простоювати вночі і зробіть внесок у медичну науку.
Ефемерна природа волонтерських обчислень
Таких проектів є десятки. Багато хто з них не є постійними. Як тільки дослідницької мети досягнуто, мережа розпадається. Іноді новий проект замінює старий. Іноді він просто зникає.
Це цікава модель. Ви позичаєте свої цикли, що простоюють, науці. Ви нічого не отримуєте натомість, крім теплого почуття задоволення від вкладу в дослідження SETI чи медицини. Програмне забезпечення налаштоване на низький пріоритет. Воно шанує ваш комп’ютер. Воно відключається, коли воно вам потрібне. Воно прокидається, коли ви не використовуєте комп’ютер.
Але чи має це значення? Якщо мережу можна використовувати для зламування шифрування, якщо контроль доступу крихкий, якщо проекти тимчасові… чи ризик? Код уже існує. Процесори підключені до мережі. Питання в тому, чи ми створюємо інструмент для відкриттів або ботнет, який чекає свого часу.
Після того, як ваш комп’ютер завершує обробку даних, програмне забезпечення проекту відправляє ці дані назад на керуючий вузол. Вузол сортує їх та поміщає результати у відповідну базу даних. Потім він надсилає вашій машині нову порцію даних. Цей цикл повторюється до завершення завдання. Якщо в проекті бере участь чимало людей, амбітні цілі досягаються за напрочуд короткий час.
У міру того, як ці грід-системи стають більш досконалими, ми побачимо, як все більше організацій створюють універсальні мережі. Можливо, настане день, коли корпорації безпосередньо об’єднуються в мережі один з одним. У такому світі обчислювальні проблеми, які сьогодні здаються нерозв’язними, можуть бути вирішені лише за кілька годин обробки. Нам залишається лише чекати та дивитися.
Реальні успіхи: Проект у порівнянні з геномами
Теорія — це добре, але результати важливіші. Візьміть як доказ Проект порівняно геномів (Genome Comparison Project). Це дослідницьке зусилля було спрямовано порівняння білкових послідовностей більш ніж в 3500 організмів. Воно стартувало 20 грудня 2006 року.
До 21 липня 2007 року проект уже досяг усіх своїх цілей. Для цього не знадобилася жодна ферма суперкомп’ютерів. Для виконання важкої роботи використовувалася грід-система обчислень. Ось у чому сила розподілених ресурсів.
Що таке грид-обчислення?
Люди часто плутають їх із стандартними хмарними обчисленнями. Відмінність полягає в масштабі та меті. Грід — це мережа комп’ютерів, які діляться ресурсами на вирішення великих і складних завдань. Він діє як віртуальний суперкомп’ютер.
Можна вважати, що грид-обчислення — це використання ресурсів з кількох адміністративних доменів для вирішення єдиної проблеми. Вони об’єднують потужність безлічі окремих комп’ютерів, розподілених через мережу, часто у громадському Інтернету. Це відрізняє їхню відмінність від простого кластера, який зазвичай перебуває у межах однієї організації.
Популярні приклади грід-проектів
Чому це важливо для вас? Тому що ці мережі вирішують реальні світові кризи. Ось кілька помітних прикладів:
- SETI@home : Використовує вільні обчислювальні потужності мільйонів персональних комп’ютерів для пошуку позаземного життя. Він перетворює процесори, що простоюють, на пункти прослуховування глибокого космосу.
- Folding@home : Фокусується на згортанні білків. Вивчаючи процес згортання білків, дослідники сподіваються краще зрозуміти такі захворювання, як хвороба Альцгеймера та Паркінсона.
- World Community Grid : Вирішує гуманітарні завдання. До них входять дослідження раку, вивчення ВІЛ/СНІДу та ініціативи в галузі чистої енергії.
Ці проекти показують, як грид-обчислення перетворюють устаткування, що простоює, в силу, що служить науковим цілям. Щоб допомогти вам не потрібно бути вченим. Вам просто потрібен доступ до Інтернету та трохи вільного часу.
Чому це важливо зараз
Складність цих систем зростає. Найближчим часом більше корпорацій, ймовірно, створять універсальні мережі. Ми рухаємося до епохи, коли обчислювальні проблеми зводяться до керованих фрагментів. Це демократизує високопродуктивні обчислення. Це означає, що вам не потрібна серверна кімната вартістю мільйон доларів для запуску симуляцій.
Інфраструктура вже існує. Альянс Globus та Форум відкритих гридів (Open Grid Forum) продовжують удосконалювати стандарти. Такі компанії, як IBM, давно інвестують у те, щоб зробити грид-обчислення доступними. Інструменти полегшують співпрацю через Інтернет для виконання цих масштабних завдань.
Погляд у майбутнє
Наступного разу, коли ви побачите, що ваш комп’ютер простоює, пам’ятайте, що він може бути частиною чогось більшого. Він може аналізувати білкові послідовності чи сканувати зірки. Технологія дозріла. Областей застосування стає більше. І вплив реальний.
«Грид-обчислення розширюють своє охоплення».
Усі елементи на своїх місцях. Питання лише в тому, чи зможемо ми їх використовувати досить швидко. Майбутнє розподіленої роботи не наближається. Воно вже тут, працюючи у фоновому режимі нашого повсякденного життя.



























