През последните години облакът е не просто мода, а необходимост и задължително условие за успех в мрежата (ето защо). А заедно с него постепенно навлиза и още един, пряко свързан с възможностите му термин – serverless. Без сървър? Нали така се превежда буквално? Как е възможно това? Нали в крайна сметка добрата стара интернет архитектура се крепи именно върху връзката между потребителя и сървъра?
Да, този термин определено е доста интересен, важен в перспектива. И, също така, пълен с погрешни тълкувания и интерпретации. Нека се опитаме накратко да обясним какво значи и защо наистина принципът зад него се приема за толкова перспективен сред специалистите.
Долу сървърите!
Ама как е възможно? Нямаш сървър? Пускаш заявката си онлайн и вадиш кристалното кълбо, за да гадаеш какво би трябвало да изрисува браузърът ти? Нищо подобно, разбира се. Сървърите ще ги има най-вероятно докато го има и интернет, защото архитектурата на мрежата е базирана главно и основно на тях. В случая по-скоро става дума за доста погрешно избрано име на дадена технология. Създадено с идеята да привлече повече последователи и ентусиазъм, без да се мисли дали то наистина обяснява цялата идея зад себе си. Е, не я обяснява никак.
А тя накратко е следната. Сървърите си ги има. Просто не знаем кои са, къде са, какви са… защото не ни е нужно. Отправяме заявката си към облака, а негова работа е да знае кой конкретен виртуален и физически сървър ни е нужен, така че да ни свърши най-добра работа. Кой е най-близо до нас, кой има най-голям потенциал да посрещне повече потребители, кой в момента е „зает“ с най-малко работа. Или, в общия случай, и трите заедно – кой е най-рационално да върне отговор на заявката ни.
Неслучайно и самият термин serverless (които си няма достатъчно добър превод на български) до голяма степен се преплита и с дефиницията за облачни услуги – при тях потребителят не се интересува от детайли, инфраструктура, физически устройства, а просто получава наготово това, от което се нуждае.
Сървъре, легни!
При Serverless технологиите доставчиците на облачни технологии поемат цялата отговорност за услугата. Всичко това, разбира се, стана възможно с развитието на технологиите, на производителните възможности на модерните компютри, на цялостната мрежова инфраструктура.
Още нещо ключово важно както за това конкретно направление, така и за облака като цяло – потребителят заплаща само за услугата, която е използвал, в обемите, които са му били нужни. А в общия случай, тъй като става дума за структури, които могат да балансират натоварването от заявките на огромен брой потребители, заради по-ниските общи разходи, със сигурност излиза пò на сметка да плащаш за serverless технологии, отколкото да се грижиш за собствен център за данни.
Всичко това помага и за използването на толкова нашумялото през последните години направление CI/CD – continuous deployment, continuous integration. Програмистите могат да работят над съответния проект, а следващата негова версия да се появява безаварийно и без никакви сътресения при потребителите, без например да трябва известно време те да нямат достъп до дадения сайт. Просто отново обстоятелството, че не конкретен сървър е отговорен, за да достави услугата, позволява неусетно вариантът на страницата да бъде заменен от нова версия постепенно, едва тогава, когато е разположен на новия си „невидим“ сървър и готов да се появи на екраните на потребителите си.
Сървър в контейнер
Всичко това е незаобиколима част и от друга страна на съвременната софтуерна разработка, за която подробно сме ви разказвали в блога на ZETTAHOST.bg. Модерните уеб приложения, почти като незаобиколим стандарт, днес са „пакетирани“ в Docker контейнери и направлявани от диригента на оркестъра Kubernetes, за да добият модерния си вид. И какво, може би вече малко по малко се подрежда пъзелът? Който изрисува цялостната днешна организация на тежките, големи модерни сайтове, които същевременно могат да се обновяват постоянно, без това да е за сметка на потребителското изживяване. И без да има значение къде и как работят сървърите, които изпращат съответната страница до потребителя, който я отваря.
Както ги определят едни от иноваторите в това направление от компанията Cloudflare, „serverless технологиите са метод за предоставяне на бекенд услуги, базиран на това колко е потребявано. Доставчикът на такива услуги ви позволява да пишете и деплойвате код, без да се налага да мислите за инфраструктурата, която да осигури всичко останало, което ви е необходимо. Компанията, която използва услугите, заплаща единствено компютърното време, без да е задължена за определен обем, брой сървъри и технологии, свързани с тях“.
Скрито на сигурно
Още един полезен резултат от всичко това – няма никаква причина да се притеснявате за внезапно нарасналия трафик, ако изведнъж сайтът ви стане обект на огромен интерес. При това, без да трябва да плащате за изключително скъпа услуга. Защото serverless технологиите скалират бързо и без особени настройки и усилия от страна на потребителя – ресурсите им са достатъчно гъвкави. И достатъчно големи, за да не могат да се изчерпят.
А не бива да забравяме и сигурността – например, едни от най-честите проблеми пред големите (и не само) сайтове днес си остават DDoS атаките. След като услугата е дистрибутирана и сървърната мощ насреща на практика е неограничена, те просто спират да бъдат толкова изкусително оръжие в арсенала на хакерите.
Код без код
Редно е да е отбележим, че зад определението serverless се крие и отделно направление в онлайн технологиите, чиято идея е да се намали зависимостта на приложенията от сървърите, съвсем буквално. Разбира се, без тях няма как да се случват нещата, идеята по-скоро е основната рамка на проектите да се зарежда еднократно, а отделни дребни, възможно най-ограничени пакети данни да се „дърпат“ от мрежата след това.
Все пак, доста по-рядко ще срещнете термина в този му смисъл, все по-популярен става той в значението, за което ви разказахме дотук.
И така, вече сте наясно, че облакът и serverless технологиите са доста близки термини, затова е важно, преди да се разделим, да кажем няколко думи и за разликите между тях.
Накратко, облачната технология се дели на три основни групи с не прекалено мелодичните на български названия Iaas, Paas и Saas.
Serverless as a service
„Инфраструктурата като услуга“ (Infrastructure as a service или IaaS) е и най-базовата форма на облака. Тук потребителят „наема“ инфраструктура, независимо дали става дума за истински сървъри или виртуални машини, използва дисково пространство, операционни системи, мрежова връзка. Подразделение на това направление е BaaS – „бекендът като услуга“ (Backend-as-a-service). Така или иначе, в този случай не говорим изобщо за serverless технологии.
Второто направление е „софтуерът като услуга“ (Software as a service или SaaS), възможността по интернет да ви се достави самият софтуер, който да ползвате от облака. Например Google drive, Google docs, различните системи за управление на клиенти (CRM). Облачният доставчик тук осигурява всичко наготово – софтуера с цялата му прилежаща инфраструктура. Тук отново по-скоро не говорим за serverless технологии, защото се минава на доста по-различно ниво на услуга, което не е толкова насочено към разработчиците и собствениците на сайтове.
Плащайки за „платформата като услуга“ (Platform as a service, PaaS) потребителят получава определена среда за програмиране, тестване, доставяне и управление на софтуерни апликации. Ето тук нещата много сериозно се застъпват със Serverless технологиите. Защото, както споменахме няколко пъти, това направление се фокусира върху функционалностите на софтуерните приложения, без да е необходимо да се мисли за сървъри, мрежи и бази данни.
И така, доста хора обичат да повтарят популярния цитат на Марк Твен, че „слуховете за смъртта му са силно преувеличени“. Е, и сървърните технологии има защо да потвърдят, че е така. Защото ще продължат да крепят на плещите си интернет, дори във времето на „безсървърните“ технологии, към което очевидно сме се запътили.