By iść za ciosem, zaraz po mojej prezentacji na temat serverless, pora zacząć pisać o tym. Więc tak jakby zaczynamy nową mini serię? Tak mi się coś zdanie. Mam w planach kilka postów na ten temat więc będzie dobrze i fajnie. W tym początkowym, wprowadzenie a potem zaczniemy już bardziej technicznie? Zobaczymy. Jest jedno pytanie, na które trzeba odpowiedzieć sobie zanim w ogóle poruszymy inne sprawy.

Co to jest serverless?

To nie jest łatwa odpowiedź, gdyż odpowiedź nie idzie w parze z pytaniem. Więc może zanim odpowiemy sobie na to czym jest serverless, odpowiedzmy sobie na pytanie: czym jest chmura?

Czym jest chmura?

Side note: to jest skrót, naprawdę myślowy, logiczny itp. To jest ubranie w moje słowa to jak ja rozumiem czym jest chmura. Nie wiem, czy istnieje oficjalna definicja.

W skrócie, jest to wyciągniecie całego IT (serwerów, zarządzania nimi, konfiguracji, dokupowania dysków fizycznych itp. itd.) poza organizację – nawet można powiedzieć, że zwalenie tego na ramiona innych ludzi/firm którym za to płacimy. Całość zaś tej wyciągniętej infrastruktury posiada panel zarządzania dostępny poprzez linię poleceń lub przeglądarkę.

Wikipedia angielska fajnie to podsumowuje:

Type of Internet-based computing that provides shared computer processing resources and data to computers and other devices on demand.
Wikipedia

Dilbert on Cloud
Dilbert on Cloud source

Tutaj kluczowe jest to, że to wszystko dostępne jest na życzenie. Potrzebujemy nagle 20 serwerów i dużej mocy obliczeniowej? Chmura nam to dostarczy. Potrzebujemy postawić mały serwis? Chmura nam na to zezwoli. A wszystko przy minimalnej wiedzy na temat hardwarowej użytkownika. Nie interesuje nas to jak coś jest połączone. Jedyne co musimy zrobić to skonfigurować nasze usługi – tutaj otworzyć port, tutaj dodać ram, tam zwiększyć dysk.

Kiedyś to wszystko musieliśmy robić sami, teraz mamy ten problem z głowy. W chmurze możemy wyróżnić (nie tylko):

IaaS

Podstawowym modelem działania chmury lub jego pierwszym modelem był IaaS – Infrastructure as a Service. Rozwiązanie zdejmujące z firmy koszty tworzenia infrastruktury – serwerów, backupu, powierzchni itp. Użytkownicy tutaj są odpowiedzialni za wszystko – poprzez dostępne narzędzia (portal internetowy, cmd) użytkownicy mówią co potrzebują i jakiej mocy i dostają komputery/maszyny spełniające ich wymagania. Utrzymaniem tego wszystkiego zajmuje się dostawca, my zaś zajmujemy się konfiguracją pod nasze potrzeby.

PaaS

Potem przyszła pora na Platform as a Service – rozwiązanie, które odcina od nas system operacyjny i dostarcza pewne aplikacje (na przykład IIS) na które możemy wgrać nasze rozwiązanie lub wykorzystać istniejące rozwiązania do stworzenia naszych. Dostawca usługi odpowiedzialny jest za dostarczenie, konfiguracje i zarządzanie aplikacji z których korzystamy.

Jest to jedna z najpopularniejszych usług i na Azure dla przykładu to jest hostowanie stron www, gdzie PaaS to jest Web Application. Co to znaczy? Tylko tyle, że jak chcemy postawić stronę internetową to nie musimy:

  • Kupować komputera
  • Instalować OS
  • Konfigurować dostępu do sieci wewnętrznej
  • Konfigurować dostępu do Internetu
  • Zarządzać poprawkami do systemu operacyjnego
  • Zainstalować serwer webowy
  • Konfigurować serwer webowy
  • Ustawiać i zarządzać opcjami skalowania (scale in i out, in przez zasoby, out na inne komputery)

Wystarczy tylko:

  • Wgrać aplikację
  • Skonfigurować aplikację

Oczywiście, wgrywanie wymaga wiedzy co i jak będziemy potrzebować by ustawić minimalne parametry. Ale też możemy polegać na dostawcy i automatycznemu ustawieniu wartości domyślnych.

SaaS

SaaS to Software as a Service. Czyli aplikacja, która jest dla nas dostępna a nie znajduje się ona fizycznie u nas na komputerze. Na przykład:

  • Toggl – narzędzie do mierzenia czasu
  • Canva – narzędzie do robienia obrazków
  • Office 365
  • Wiele, wiele, wiele innych

Na co dzień z tego korzystamy a nawet możemy o tym nie wiedzieć. To co wyróżnia SaaS od pozostałych, że my jako użytkownicy czy też nawet developerzy absolutnie nie interesujemy się co i jak. Po prostu software jest nam doręczony. Nie musimy go hostować, zarządzać itp. To robi ktoś inny.

Serverless

I tutaj wracamy do serverless. To co tutaj przedstawiłem było potrzebne nam by lepiej to zrozumieć. Nawet baa, taki o to obrazek mogę przedstawić podsumowujący to gdzie teraz jesteśmy:

Zestawienie usług
Zestawienie usług

Z tego wynika, że SaaS wygrywa pod względem tego co my musimy robić ;) ale zaraz po nim jest PaaS. Gdzie to my konfigurujemy w pełni aplikację i różne źródła danych. Tak jakby brakuje czegoś pośredniego, czegoś pomiędzy PaaS a SaaS. I tutaj właśnie wchodzi Serverless. Rozwiązanie które zabiera z nas zarządzanie aplikacją i jej konfiguracją, a w zamian oferuje usługi hostowania małych, zwinnych fragmentów kodu które wykonują za nas odpowiednie zadania. Na przykład zamiast wysyłać maila powitalnego z aplikacji, możemy to zrobić z poziomu serverless, a jeżeli to była całość naszego kodu aplikacji, to nagle nie potrzebujemy serwera aplikacji, wystarczy tylko gdzieś zahostować statyczną stronę.

Co to znaczy? A tyle, że jak chcieliśmy stworzyć coś szybko to musieliśmy się męczyć ze wszystkim. Z UI, z aplikacją (backend), hostowanie, ustawieniem bazy danych. To przeważnie trochę trwało i wymagało konkretnej wiedzy (jaka baza, czemu tutaj a nie tam, ile ramu, i jaki mamy budżet na to wszystko). Zamiast na skoncentrowaniu się na dostarczeniu jakości i produktu, robiliśmy bardzo dużo boilerplate code. Serverless to nam zabiera. Powoduje, że pewny lub cały backend możemy umieścić jako zbiór funkcji działających w chmurze.

Co ważniejsze, funkcje wprowadzają kompletnie nowy sposób rozliczania się za usługę jak i sposób zarządzania zasobami. Tak jak kontenery umożliwiły nam współdzielenie zasobów między sobą, tak funkcje idą o krok dalej i umożliwiają nie tylko współdzielenie tych zasobów, ale także dynamicznie potrafią się skalować jeżeli potrzeba jest więcej zasobów. Płatność zaś jest za czas i liczbę zasobów wykorzystaną w trakcie uruchomienia funkcji. Nie za to, że funkcja jest hostowana, ale za faktyczny czas jej wykorzystania.

To są dwie główne zalety serverless:

  1. Możliwość skalowania w zależności od zapotrzebowania
  2. Płatność tylko za zasoby, z których korzystamy

Są też tak zwane niejawne zalety:

  • Brak serwerów do zarządzania
  • Z samego założenia funkcja musi wykonywać jedną czynność, zwiększając modularyzację projektu.

Dlaczego jedną czynność? Jeżeli funkcja będzie wykonywała wiele rzeczy to już nam się psuje SRP, więc bee. Po drugie taki kod będzie cięższy do zarządzania i droższy pewnie (zakładam, bo widzę, kiedy może to spowodować większe obroty procesora kiedy w ogóle go nie powinno tam być) do opłacenia.

To gdzie tutaj jest less?

Nie ma ;) w sensie jest, to, że my jako programiści, czy też ludzie zarządzający naszą siecią nie muszą absolutnie niczym się przejmować, to co chcą jest hostowane i dostępne online. Wszystko zrobione tak by nawet nie było odczucia, że to na jakimś komputerze siedzi. Tak jakby serverless.

Podsumowanie

To było krótkie wprowadzenie do serverless gdzie powiedzieliśmy sobie co to jest chmura i jakie typowe usługi są z nią powiązane. Wszystko było ogólnikowo bez szczegółów. W przyszłym tygodniu pewnie zajmę się dokładniej Serverless i tym co mamy dostępnego na runku. Do usłyszenia.

12 KOMENTARZE

  1. Ciekawy wpis. Nie słyszałem o tym wcześniej więc chętnie poczytam więcej na ten temat. :)

  2. Czy Azure Functions można do tego zaliczyć? Zainteresował mnie ten temat na 4Developers i nawet wypróbowałem wysyłanie maila z poziomu AF. Nie zgłębiałem tematu bardziej, ale na pewno będę śledził Twoje wpisy. Pozdrawiam!

  3. Wsadzając kij w szprychę vol. 2 ;-) Kolokacja jest jednak bardziej podstawową i wcześniejszą usługą w chmurze niż IaaS ;)
    Zaś samo pojęcie chmury obliczeniowej jest pojęciem biznesowym i wiążę się ogólnie ze świadczeniem usług IT, które są w jakiś sposób ciągłe i można je uznać jako “usługę”.
    Czyli nie jest to “wyciągniecie całego IT”, bo chmura to zarówno kolokacja, IaaS, PaaS, HaaS jak i wiele innych. Poza tym mamy kilka rodzajów chmur i nic nie stoi na przeszkodzie, żeby stworzyć sobie prywatną chmurę (np. dzięki Apache CloudStack) lub hybrydowe rozwiązanie.

    • tak, jest prywatna, publiczna, hybrydowa i pewnie niebawem bedzie jeszcze jakas. NIe opisalem tego bo jak napisalem, krotki wstep do chmury. jakby mial zaczac pisac o wszystkim w chmurze to do serverless bym nie doszedl przez najblizsze kilka postow.

      Co do kija w mrowisko… wtedy jak byla kolokacja to mowilo sie o farmach albo o serwerowniach. Od kiedy slysze slowo cloud nigdy tego nie wiazalem z kolokacja serwerow. I tak przed cloudem byla kolokacja. jak wszedl cloud powstal aas, as a service. Wiec nie taki kij w mrowisko ale raczej podciagnieta definicja serwerowni pod cloud jako taki. ktory jest oczywiscie slownikowo stworzony przez biznes dla biznesu i jest slowem kluczowym. ale jest roznica pomiedzy cloud servies a colocation/kolokacja. Wiec tutaj jest ok.

      Teraz co do wyciagniecia calego IT. napisalem w nawiasach o co biega. a proba znow tego dopasowania do prywatnej i hybrydowej jest proba na sile wsadzenia kija w morwisko :) co sie da zrobic :) Bo w koncu nie opisalem tego i zrobilem to celowo, bo to mial byc krotki wstep do chmury.

      czy takie wyjecie kija z mrowiska jest ok? ;)

Comments are closed.