Відмінності CaaS, PaaS і IaaS: Як вибрати модель побудови хмарної інфраструктури



Ми багато пишемо про використання хмарних технологій — а корпоративного IaaS навіть присвятили окремий блог. Однак світ технологій постійно змінюється, і з'являються все нові підходи до побудови інфраструктури, в тому числі за допомогою віртуалізації, хмарних сервісів або контейнерів. Дуже легко загубитися у всіх доступних опціях і почати задаватися питанням: «А чи не можна робити те, що я роблю, більш ефективним способом?»

Тому, в сьогоднішньому топіку ми постараємося розповісти про головні відмінності таких концепцій побудови хмарної інфраструктури, як:

  • Інфраструктура як послуга (IaaS);
  • Платформа як послуга (PaaS);
  • Контейнери як послуга (CaaS).
Коли справа стосується веб-інфраструктури, універсального рішення не існує – до всього потрібен індивідуальний підхід.

Почнемо з початку: виділені сервери

Біля витоків хостинг-інфраструктури стоять дата-центри, заповнені серверами, комутаторами, маршрутизаторами, масивами даних і іншим мережевим обладнанням. Будь-яке інше рішення (PaaS/IaaS/CaaS), про який ми будемо зараз говорити, являє собою всю ту ж картину – величезна кількість серверів у величезній кімнаті, просто поверх усього цього обладнання інженери додали кілька рівнів абстракції. Це спростило управління системою і автоматизировало деякі завдання, які повинні були виконуватися вручну.

Виділені сервери, також відомі як «голе залізо», мають свої переваги і недоліки.

Переваги:
  • Продуктивність – ви користуєтеся комп'ютером безпосередньо, минаючи рівні абстракції і віртуалізацію;
  • Надійність – невелика кількість елементів, схильних до поломок і несправностей;
  • Використання ресурсу – при використанні виділених серверів процеси не борються з іншими процесами або віртуальними машинами за обчислювальні потужності процесора, пам'ять та мережеві ресурси.
Недоліки:
  • Складність управління – клонувати виділений сервер не так легко – для нього можна створити образ, який потім просто буде працювати в іншому місці.
  • Ціна – у більшості випадків ви платите за апаратну частину, а також за її розміщення, або просто орендуєте її у хостинг-провайдера. У будь-якому випадку, у вас не вийде просто відключити сервер, якщо він раптом став вам не потрібен – доводиться ретельно планувати витрати.
  • Всі ваші процеси і програми, запущені на виділеному сервері, що працюють на одній операційній системі. Щоб домогтися гарної масштабованості, зазвичай потрібно виконувати одне завдання на одному сервері – наприклад, розділити веб-сервер і сервер баз даних. Складно оптимізувати роботу операційної системи, коли вона повинна справлятися з безліччю завдань відразу.

Спрощуємо життя: віртуалізація

На жаль, недоліки виділеного сервера сильно переважують його гідності. З постійно зростаючою швидкістю розгортання і боротьбою компаній за лідерство на цьому ринку, віртуалізація стала природним кроком в еволюції дата-центрів.

Що таке віртуалізація

Якщо в двох словах, то віртуалізація дозволяє вам розбити виділений сервер на маленькі віртуальні сервери, які мають доступ лише до частини всіх ресурсів фізичного сервера.

Ви можете взяти фізичний сервер з двома чотириядерними процесорами і 16 Гб оперативної пам'яті і перетворити його в 8 віртуальних машин, де на кожну буде виділено одне ядро і 2 Гб оперативної пам'яті.

Прикладами технологій віртуалізації можуть служити Xen, KVM, VMware і Hyper-V і ще багато інших.

Переваги:
  • Ви можете клонувати віртуальні машини, якщо вам потрібно більше їх кількість при збільшеному навантаженні;
  • Можна зберігати образи віртуальних машин, щоб можна було легко відновити їх.
Недоліки:
  • Використання віртуалізації означає зростання накладних витрат і зниження продуктивності;
  • Образи віртуальних машин, у більшості своїй, не можна переміщати між хостинг-провайдерами;
  • Робота з віртуальними машинами за раніше вимагає «ручного» втручання, експертизи і великої кількості часу для управління.

Еволюція: віртуалізація стає IaaS

Останнім часом все частіше, коли люди говорять про хмарі, то мають на увазі інфраструктуру як послугу (IaaS)?

Так що ж таке інфраструктура як послуга?

  • Віртуалізація чийого-небудь апаратного забезпечення, керованого через API;
  • Програмний доступ до обчислювальних потужностей та сховищ, а також мережевих ресурсів і конфігурацій;
  • Запуск нової машини, коли вона потрібна, і її відключення, коли робота з нею закінчена – ви платите тільки за час використання;
  • Ресурси дата-центру – це засоби забезпечення, що надаються в якості послуги.
Компанія Amazon стала першопрохідцем в цій сфері, коли в 2006 запустила інфраструктуру Amazon Web Services (AWS) та веб-сервіс EC2. З плином часу в різних країнах світу з'явилися свої гравці — ось тут, наприклад, представлений рейтинг провайдерів Росії.

Чому це так важливо?

Раніше, якщо ви хотіли запустити онлайн-бізнес, вам доводилося замислюватися про дата-центрі: стежити за кількістю серверів і стійок, щоб їх вистачило для розширення проекту, а також за мережними ресурсами, які повинні були опанувати всім вхідним трафіком від користувачів.

Це було нелегко для країн, проектів, майбутнє яких було невизначеним (як і напрямок розвитку).

1. Розробники отримали «надздібності»:

  • Нову ідею можна запускати негайно;
  • Якщо ідея виявилася успішною, то дуже легко розширювати серверну базу;
  • Якщо ідея виявилася невдалою, то грошові втрати будуть мінімальними.
Ось тут можна почитати про те, які моделі оплати IaaS зараз існують на російському ринку.

2. Більше можливостей для автоматизації роботи дата-центрів:

  • Повністю автоматизована архітектура стала реальністю – з'явилася концепція інфраструктури як коду;
  • Автоматичне масштабування раніше здавалося неможливим, однак зараз веб-інфраструктура здатна розширюватися і стискатися відповідно до потреб користувача;
  • Дуже швидко сталася автоматизація різних частин дата-центру: сховища, мережеві технології і величезна кількість інших систем, які вимагали певного набору навичок, стали управлятися через API, що відкрило нові горизонти можливостей суспільству розробників.
Тепер, коли ми розглянули основні частини IaaS, ми можемо перейти до наступної теми – PaaS (платформа як послуга).

PaaS

Платформа як послуга спрощує розгортання і керування додатками, при цьому приховуючи всі деталі і подробиці, такі як робота з серверами, балансировщиками навантаження, DNS і так далі. У зв'язку з цим зникає необхідність у фахівцях з обслуговування, що дозволяє розробникам приділяти більше уваги розгортанню.

Існує величезна кількість PaaS-провайдерів: одним з найпопулярніших є Heroku. Цікавий факт – Heroku повністю працює поверх AWS і пов'язана з ним. Це може бути проблемою, якщо ви не хочете запускати свою програму на серверах AWS.

Без IaaS, такі платформи як Heroku, швидше за все, не з'явилися б. PaaS-провайдери використовують IaaS для того, щоб надавати свої послуги. PaaS дозволила ще сильніше зменшити час, що проходить з моменту появи ідеї до розгортання програми – ще більша автоматизація процесів, які повинні були виконуватися вручну, а також зниження необхідного рівня знань для роботи зі спеціалізованими системами. Це ті ж причини, які супроводжували перехід від виділених серверів до IaaS.

Створити PaaS дуже складно
Щоб абстрагувати концепцію роботи з серверами, потрібно виконати дуже багато. Під капотом PaaS знаходяться наступні компоненти:

  • Система складання, яка компілює код і зберігає його для подальшого використання;
  • База даних управління додатками, яка стежить за змінами в Git, робочими версіями і мета-даними додатка;
  • Планувальник завдань кластерів, який працює з величезною групою серверів як з одним великим комп'ютером, запускаючи ваш додаток на декількох машинах відразу, а також здійснює спостереження за виконанням завдань;
  • Балансувальник навантаження, який управляє трафіком, йде з інтернету, і що курсує між різними додатками;
  • Автоматизація роботи DNS, яка створює записи автоматично при зміні додатків;
  • І, мабуть, найважливіший компонент, якась форма контейнеризації (FreeBSD Jail, Solaris Zones, Linux Containers), яка буде запобігати втручання однієї програми в роботу іншого.
Перший і останній пункти – це ті елементи, які сприяли вибухового зростання Docker. Підтримка Linux Container була невід'ємною частиною ядра Linux, але тільки великі компанії або PaaS-провайдери автоматизували їх використання. Docker спрощує роботу з контейнерами Linux і надає стандартизований формат образів. Вони зробили безкоштовної більшу частину секретного інгредієнта PaaS.

Це виявилося дуже корисним, тому що багато компаній працюють з постійно зростаючою клієнтською базою, а мобільні, соціальні і IoT-технології постійно створюють нові шаблони руху трафіку – всі бажають перейти від тривалих циклів випуску до послідовного розгортання.

Компанії використовують архітектури та микросервисы, орієнтовані на програмне забезпечення, тому їм необхідна можливість автоматичного розгортання та тестування коду, а також масштабування в залежності від зміни трафіку.

Проблема в тому, що у них немає ресурсів або досвіду, щоб надати таку функціональність команді розробників, тому ці завдання перекладаються на PaaS. На жаль, коли ви застосовуєте такий підхід, то віддаєте частину контролю «чорного ящика» і починаєте від нього залежатиме, попутно витрачаючи величезну кількість грошових коштів.

В іншому випадку компанії постійно наново винаходять велосипед або починають використовувати повільні інструменти, утримання та забезпечення безпеки яких стає серйозною проблемою.

IaaS або PaaS, що ж краще?

Говорячи простою мовою, IaaS нагадує здачу сервера в оренду на певний проміжок часу. PaaS можна описати як щось-більш складне: зв'язаний набір інструментів, що дозволяють запустити ваш веб-додаток і керувати ним.
Давайте проведемо порівняння за ключовими пунктами і відповімо на поставлене питання.

Продуктивність

Дуже малоймовірно, що ви помітите значні відмінності в швидкості роботи типового програми на IaaS і PaaS. Однак PaaS пішла досить далеко від «заліза» – це як порівнювати фізичний та віртуальний апаратне забезпечення – втрати неминучі.

Проблема «шумних сусідів», коли програми, з якими працює один PaaS-провайдер, можуть впливати на продуктивність один одного, проявляє себе практично таким же чином, як у IaaS-провайдерів. У разі IaaS ви можете використовувати инстансы великих розмірів, що найчастіше означає виділений доступ до фізичної машині, у якої немає «сусідів».

Перший раунд: перемагає IaaS (з незначною перевагою).

Надійність

Якщо ж ви подивитеся на надійність з точки зору управління додатками, тобто здатності визначати нестабільні або неправильно функціонують инстансы і вживати коригувальні дії, то PaaS дійсно надає для цього потужні інструменти.

Однак якщо підійти до питання з боку цілої платформи, то PaaS виявляється ще більш ненадійною, ніж IaaS. Більша кількість компонентів PaaS-системи означає більше точок ризику, де може знадобитися втручання.

Другий раунд: перемагає IaaS.

Масштабованість

Тут PaaS пропонує кілька рішень, дуже схожих на автоматизоване масштабування, які обходять IaaS.

У типовій PaaS-системі збільшити або зменшити число воркеров (workers) не складніше, ніж обробити просту команду. Це може бути корисно для запланованих подій з різким підвищенням трафіку.

IaaS пропонує незначна кількість готових рішень для масштабування. Припускаючи, що ваші програми працюють з балансировщиком навантаження, ми можемо додати нові инстансы, а потім розгорнути на них останню версію програми, проте це займе хвилин 15. PaaS зробить це за 15 секунд.

IaaS, AWS-платформа зокрема, пропонує потужні інструменти для автоматизованого масштабування, однак для цього потрібне створення образів машин для кожного релізу, а також ручна настроювання правил, по яким буде виконуватися масштабування.

Третій раунд: PaaS, хоча можна і краще.

Управління життєвим циклом додатків (ALM)

Тут у IaaS немає ні єдиного шансу – управління життєвим циклом є візитною карткою будь PaaS-платформи.

Якщо ви підете дорогою IaaS, то доведеться використовувати своє власне рішення для управління додатками: стеження за інфраструктурою, змінами програми та збільшенням кількості инстансов. Існує велика кількість якісних інструментів, однак PaaS дає їх, так би мовити, «з коробки».

Більшість (?) PaaS-платформ надають універсальний інтерфейс для управління додатками. Підкуповує те, з якою легкістю ви можете дублювати цілі середовища. Ви можете запустити клону всієї своєї системи всього за пару хвилин.

Більш того, більшість екосистем PaaS дозволяють використання сторонніх хмарних рішень – кешування, проксі, пошта і бази даних. Можна легко знайти рішення для простих завдань, наприклад, запуску черг Redis – простота, низька вартість і відсутність необхідності супроводу дуже привабливі. Однак там мало рішень для таких серйозних завдань, як реалізація головної бази даних програми.

Хоча багато PaaS-системи забезпечують інструментарій для агрегації логів, ми часто стикалися з ситуаціями, коли надана інформація не володіла достатньою «прозорістю», тому пошук несправностей затягувався. Незліченна кількість годин було витрачено на налагодження програми, яке відмовлялося коректно розміщуватись – нам дуже хотілося підключитися по SSH і переглянути лог-файли.

Четвертий раунд за PaaS, але хотілося б більшої «прозорості».

Вартість

Вартість, зрозуміло, залежить від того, якого провайдера ви віддасте перевагу (і в якій країні він буде знаходитися).

Припустимо, що для запуску програми потрібно 512 Мб оперативної пам'яті і 5 робочих процесів. На Pivotal Web Services вам доведеться віддавати близько $55 в місяць. Середній інстанси EC2 з 3,75 Гб оперативної пам'яті у зарубіжних провайдерів обійдеться в $40 в місяць.

Також потрібно врахувати те, наскільки розміри використовуваного инстанса відповідають робочому навантаженні. Не можна змінювати розміри инстансов так, як вам завгодно – це означає, що ви будете переплачувати за зайві потужності. PaaS дозволяє вам платити тільки за ті ресурси, які ви використовуєте.

Ось тільки вартість деяких платформ, наприклад, Heroku, може швидко стати занадто великий (навіть за мірками IaaS).

П'ятий раунд: переможець не визначений.

Отже, IaaS або PaaS

Вийшло так, що в деяких сферах виграє PaaS, а в інших – IaaS. Така реальність.

Грунтуючись на власному досвіді, можемо сказати, що для додатків з критичної робочої навантаженням більше підійде IaaS – модель PaaS поки недостатньо розвинена і має певну кількість «слабких місць». Проте можна очікувати, що з часом PaaS-платформи «закалятся», стануть стабільнішими, а їх операційна прозорість зросте.

Якщо ви можете дозволити собі велику ступінь ризику, то PaaS пропонує гнучкі можливості по управлінню програмами, що дозволяють значно прискорити цей процес, у порівнянні з IaaS.

Контейнерні хостинг-платформи

Що таке контейнерні хостинг-платформи або контейнери як послуга (CaaS)? Це все, що було описано в попередніх секціях, але побудоване на основі елементів, що надаються Docker.

Автоматизована система збирання, кластерний планувальник, балансувальник навантаження, автоматизація DNS і виявлення сервісів – це те, що вам потрібно, щоб використовувати контейнери для хостингу складних багаторівневих додатків.

Замість незручних билдпаков (buildpacks) для створення додатків, ви отримуєте образи Docker. Образи легко зібрати і протестувати перед розгортанням, тому ви завжди впевнені, що все працює як треба. Тепер користувачі не обмежені надаються провайдером набором інструментів і можуть запускати все що завгодно в образі Docker.

Однак вибір вірної контейнерної хостинг-платформи Docker нелегке завдання. Ось кілька моментів, на які варто звернути увагу:

  • Вибір величезний, проте коли ваші додатки готові для роботи з Docker, тестування кожного з них стає тривіальною задачею;
  • Використання рішення, пропонованого вашим хостинг-провайдером, наприклад Triton або ECS, все-одно прив'язує вас до нього [провайдера], що нівелює таке гідність Docker, як переносимість;
  • Багато CaaS-рішення мають систему управління, запущену на їх власному обладнанні, і агента, який з'єднується з API на ваших серверах – це загрожує відключенням вашого кластера;
  • Рішення, що дозволяють вам запускати всю систему з брандмауером, складні і мають мільйони життєво важливих елементів, тому для роботи (оновлення і управління) з ними потрібно своя команда;
  • Прості рішення з брандмауером не володіють високою доступністю;
  • Замість залежно від хостинг-провайдера ви отримуєте залежність від CaaS-провайдера. Не можна запустити платформу, що включає систему управління, API і користувальницький інтерфейс, на своєму власному обладнанні, без використання інтерфейсу управління SaaS. Почавши платити, краще продовжити це робити.

Висновок

Спасибі за те, що прочитали цей історичний екскурс у розвиток веб-хостингу від виділених серверів до CaaS. Ми сподіваємося, що даний матеріал відповів хоча б на деякі ваші запитання та дав розуміння того, яку користь здатні принести контейнери.

Пости по темі:


Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.