Програми верхи на хмарі
Хмари третього типу володіють максимальною гнучкістю і розширюваністю, але це обертається наданням не просто віртуальної машини або деяких ресурсів, але цілих бібліотек і API. Тобі дають можливість запускати власні застосування, часто серйозно обмежуючи у виборі мови і додаткових бібліотек. Зате таке застосування зможе реалізувати "заповітну мрію всіх хмар" і гнучко отримувати ресурси за запитом. Обмежень віртуальної машини Ви не бачите; більш того, не підозрюєте про її існування: все, з чим працює програма – це виклики API і бібліотек, наданих сервісом. Здавалося б, хіба можна щось зробити в таких умовах? Ще й як! Взагалі, такий ступінь абстракції зараз модний тренд в IT.
Існує залежність: чим простіша мова і API, у рамках яких працюють програми, тим легше і гнучкіше ними масштабувати. Тому украй складно зустріти в хмарних системах звичні для WEB-розробників ресурси, принаймні, в стандартному вигляді. Узяти хоч би бази даних. Традиційні SQL-реляційні СУБД украй погано підходять для масштабованих систем (за рідкісним виключенням, ніби Oracle або DB2). Замість них використовуються власні розробки, кожна з яких зазвичай дуже цікава в технічному плані, а також – сторонні відкриті рішення. Одним з найпопулярніших вирішень сталі key-value сховища даних і системи на базі Google BigTable, а також його відкритих аналогів. Це дуже схоже на звичайний кеш – будь-які дані застосування записує в сховищі, асоціюючи їх з деяким ключем, цифровим або простий рядком, потім витягує або видаляє, указуючи ключ. Більш просунуті системи реалізують цілі структури даних, списки, черги і навіть допускають наближені до SQL вибірки з сортуванням і фільтрами. Часто дістається і файловій системі, яка замінюється подібністю звичного сховища, доповненого системою map/reduce для обробки великих обсягів даних.
Подібні особливості вимагають перегляду архітектури існуючих застосувань, коли потрібно розвернути їх в умовах хмари. Непросто перейти від звичайних баз даних, особливо якщо раніше тільки те й робив, що писав на PHP і MYSQL!
Amazon i Google
З розвитком технологій з’явилася можливість сховатися за шаром віртуалізації і проміжних бібліотек, так що програмістові реальних застосувань зовсім не треба думати про те, який же там сервер під цим крутиться. Подумай, адже всі основні мови сучасності давно вже виконуються на власних віртуальних машинах! Розробники відірвалися від заліза і повертатися до нього не дуже-то і хочуть. Якщо інфраструктура хмари добре спроектована, а мова вибрана правильно, то досить просто зробити так, щоб більшість програм (відміть: не все) змогли працювати і масштабуватися практично лінійно. При цьому розробник і користувач нічого не знатиме про те, як Ви усередині запускаєте все на десятці віртуальних серверів, кожен з яких працює на парі реальних. Поява першого серйозного і доступного cloud-хостингу від Amazon-а породила, по суті, цілу індустрію, явивши простим смертним самі просунуті технології.
Найбільш відомою системою такого роду є Google AppEngine, який надає якусь "пісочницю", обмежену цілком конкретним API і системними сервісами. "Пісочниця" обмежена декількома мовами – зараз це Python і Java, проте ресурсні обмеження достатньо ліберальні, щоб Ви ще довго про них не думали (заявлено, що сервіс доступний безкоштовно для сайтів, що мають до 5 мільйонів хітів у місяць; точніші обмеження дивись в документації). Сервіс працює як бета, тому тільки недавно стало можливим реєструватися всім охочим. Ціни на сервіс для комерційного використання або тих, кому мало лімітів, розумні і порівнянні з конкурентами (як завжди – оплата години або деяких абстрактних одиниць ресурсів).
Як не дивно, такий же сервіс випустила інша "імперія зла" - Microsoft Azure. У основі лежить спеціальна версія Windows Server 2008; решта сервісів, доступних розробникові, базується на технологіях, що вже зарекомендували себе, - .NET Runtime, SQL Service, Live, SharePoint, Dynamics CRM. Застосування мають доступ до всіх сервісів за допомогою абстрагованого від деталей API, через HTTP, REST, SOAP. Судячи за включенням у cloud типових бізнес-платформ, система буде в основному орієнтована на побудову корпоративних застосувань і сервісів. Поки йде тестування, можна дістати абсолютно безкоштовний доступ до всіх матеріалів.
Amazon – один з найбільших і масштабних гравців на ринку хмарних систем. Його сервісами користуються безліч компаній, майже все – стартапи, наприклад, гучний Twitter вирішив проблему масштабування саме за допомогою Amazon EC2. Розшифровується, як Elastic Compute Cloud, і сьогодні це найдоступніший і надійніший варіант на ринку. Проте врахуй, що доведеться платити за всі ресурси (передавані дані, процесорний час, зберігання даних), а можливості розширення кожного конкретного сервера все ж таки обмежені. Також у реальній роботі треба враховувати масу нюансів, наприклад, що при виключенні віртуальна машина (інстанс) не зберігає дані і втрачає свою IP-адрес.
Всі хмарні послуги від Amazon надаються під загальним брендом Web Services і включають, окрім EC2:
· SIMPLEDB – сервіс бази даних з простим інтерфейсом і SQL-подібними можливостями;
· Simple Storage Service або S3 для зберігання великих обсягів даних і REST-API для доступу;
· CloudFront – розподілена мережа зберігання і доставки контенту;
· Simple Queue Service – система черг повідомлень для створення розподілених застосувань;
· Elastic MapReduce – система обробки і аналізу великих обсягів даних на базі відкритої Apache Hadoop.
Дата добавления: 2016-07-22; просмотров: 1530;