Czym jest PaaS? Platform as a Service a IaaS, SaaS i Kubernetes
W skrócie
- Platform as a Service (PaaS) to model chmurowy, w którym wdrażasz kod źródłowy lub obraz kontenera, a dostawca obsługuje serwery, systemy operacyjne, buildy, wdrożenia i skalowanie.
- Ty nadal odpowiadasz za swój kod, konfigurację, sekrety i dane oraz za wybór rozmiarów i regionów.
- W porównaniu z IaaS zarządzasz mniejszą liczbą elementów infrastruktury. W odróżnieniu od SaaS nadal dostarczasz własne oprogramowanie. Wiele platform PaaS, inaczej niż Kubernetes, buduje też Twój kod źródłowy, a większość potrafi wdrożyć dostarczony przez Ciebie obraz kontenera.
- Aby uniknąć uzależnienia od dostawcy (lock-in), wybierz PaaS, który buduje standardowe obrazy kontenerów z Dockerfile lub za pomocą Cloud Native Buildpacks i korzysta ze standardowych silników baz danych.
Platform as a Service (PaaS) to model chmurowy, w którym przekazujesz swoją aplikację w postaci kodu źródłowego lub obrazu kontenera, a dostawca ją uruchamia. Platforma ją buduje, wdraża i skaluje oraz obsługuje serwery, systemy operacyjne i sieci pod spodem. Ty nadal odpowiadasz za aplikację, jej konfigurację i jej dane.
Najczęściej cytowana definicja pochodzi z amerykańskiego National Institute of Standards and Technology (NIST SP 800-145). W modelu PaaS wdrażasz własne aplikacje na infrastrukturę dostawcy, ale nie zarządzasz infrastrukturą chmurową pod spodem (siecią, serwerami, systemami operacyjnymi ani pamięcią masową) i jej nie kontrolujesz (w oryginale: „not manage or control the underlying cloud infrastructure including network, servers, operating systems, or storage”). Kontrolujesz natomiast wdrożone aplikacje i ewentualnie ustawienia środowiska hostingowego.
Co przejmuje PaaS
Dokładny zakres zależy od dostawcy, ale pełna platforma PaaS obejmuje większość z poniższych punktów:
- Buildy: zamienia repozytorium Git w obraz gotowy do uruchomienia za pomocą buildpacków, które rozpoznają Twój język, albo na podstawie Dockerfile dodanego do repozytorium.
- Wdrożenia: wdraża nowe wersje, często przy każdym pushu do gałęzi, i przechowuje historię tego, co i kiedy działało.
- Skalowanie: więcej replik albo większy rozmiar to kwestia ustawienia, a nie instalowania nowego serwera.
- TLS i domeny: każda aplikacja dostaje nazwę hosta, a certyfikaty dla Twoich własnych domen są wystawiane i odnawiane za Ciebie.
- Logi i metryki: logi z działania aplikacji oraz wykresy CPU i pamięci, bez utrzymywania własnego stosu do logowania.
- Zarządzane bazy danych: PostgreSQL, MySQL lub cache obok aplikacji, z replikami i backupami jako opcjami.
- Serwery i systemy operacyjne: łatanie hostów, wymiana uszkodzonego sprzętu i utrzymywanie sieci w działaniu.
Co zostaje po Twojej stronie
PaaS zdejmuje z Ciebie pracę przy infrastrukturze, ale nie odpowiedzialność za Twój produkt. Nadal odpowiadasz za:
- Swój kod i jego zależności, w tym aktualizowanie bibliotek, gdy zostanie ujawniona podatność.
- Konfigurację i sekrety: zmienne środowiskowe, klucze API oraz to, kto w Twoim zespole ma do nich wgląd.
- Swoje dane: schemat, migracje, włączenie backupów i przetestowanie przywracania.
- Rozmiar i koszty: liczbę replik i wybrany plan, a w konsekwencji wysokość rachunku.
- Bezpieczeństwo aplikacji: uwierzytelnianie, walidację danych wejściowych i dostęp do dashboardu.
- Lokalizację: region, w którym działają Twoja aplikacja i jej dane.
PaaS vs IaaS vs SaaS vs serverless vs Kubernetes
Te modele różnią się tym, co przekazujesz dostawcy, a co zostawiasz sobie. Orientacyjne porównanie:
| Model | Ty dostarczasz | Dostawca obsługuje | Ty nadal zarządzasz | Typowe zastosowanie |
|---|---|---|---|---|
| IaaS | Maszyny wirtualne, dyski, sieci | Sprzęt, wirtualizacja, centra danych | System operacyjny, runtime, wdrożenia, skalowanie, poprawki | Pełna kontrola, starsze lub nietypowe oprogramowanie |
| PaaS | Kod źródłowy lub obraz kontenera | Serwery, OS, buildy, wdrożenia, routing, często bazy danych | Aplikacja, konfiguracja, dane | Aplikacje webowe, API, workery |
| SaaS | Nic do wdrożenia | Cała aplikacja | Ustawienia, użytkownicy i Twoje dane w aplikacji | Standardowe oprogramowanie biznesowe |
| Serverless (FaaS) | Funkcje | Wykonanie na zdarzenie lub żądanie, skalowanie według zapotrzebowania | Kod funkcji, zimne starty (cold starts), limity czasu i rozmiaru | Obciążenia sterowane zdarzeniami, ze skokami ruchu |
| Kubernetes | Obrazy kontenerów i manifesty | Jako usługa zarządzana: warstwa sterowania (control plane) | Węzły, deploymenty, ingress, konfiguracja skalowania, CI/CD, logowanie | Duże środowiska z zespołem platformowym |
IaaS daje Ci maszyny wirtualne, a resztę zostawia Tobie. NIST opisuje ten model jako udostępnianie „processing, storage, networks, and other fundamental computing resources” (mocy obliczeniowej, pamięci masowej, sieci i innych podstawowych zasobów obliczeniowych), na których uruchamiasz dowolne oprogramowanie, łącznie z systemem operacyjnym.
SaaS to drugi biegun: korzystasz z gotowej aplikacji dostawcy w przeglądarce lub przez API i niczego nie wdrażasz.
Serverless w sensie funkcji uruchamia Twój kod jako małe funkcje wywoływane przez zdarzenia lub żądania HTTP i nalicza opłaty według faktycznego zapotrzebowania. Whitepaper CNCF o serverless zauważa, że większość środowisk uruchomieniowych ogranicza rozmiar lub czas wykonania każdej funkcji, a start po okresie bezczynności może być powolny. PaaS zwykle uruchamia natomiast Twoją aplikację jako stale działający proces.
Kubernetes to orkiestrator kontenerów, a jego własna dokumentacja stwierdza, że „is not a traditional, all-inclusive PaaS”, czyli że nie jest tradycyjną platformą PaaS typu „wszystko w jednym”. Nie wdraża kodu źródłowego, nie buduje Twojej aplikacji i nie zawiera baz danych jako wbudowanych usług. Dostarcza elementy, z których buduje się platformy. Dłuższe porównanie znajdziesz we wpisie PaaS vs Kubernetes.
Kiedy PaaS się sprawdza
- Tworzysz aplikacje webowe, API lub workery działające w tle w popularnym języku.
- W Twoim zespole nikt nie zajmuje się zawodowo utrzymaniem serwerów ani klastrów, a na razie wolisz nikogo do tego nie zatrudniać.
- Chcesz, żeby nowa wersja działała kilka minut po merge'u, z logami i metrykami od razu na miejscu.
- Potrzebujesz baz danych, pamięci masowej i aplikacji w jednym miejscu, na jednym rachunku.
Kiedy się nie sprawdza
- Potrzebujesz własnego jądra, specjalnego sprzętu lub niskopoziomowej kontroli nad siecią. Lepiej sprawdzi się maszyna wirtualna albo bare metal.
- Twoje oprogramowanie wymaga uprawnień roota, pełnego systemu init lub pakietów instalowanych za pomocą skryptów instalacyjnych. Dockerfile może zaspokoić część tych potrzeb; niektóre programy dobrze działają tylko na maszynie wirtualnej.
- Utrzymujesz duże, stabilne obciążenia i masz już zespół platformowy. Wtedy własna infrastruktura może się opłacić.
- Twój kod działa kilka sekund dziennie w reakcji na zdarzenia. Platforma funkcji może być tańsza.
- Masz wymóg prawny lub regulacyjny (compliance), którego regiony lub certyfikaty dostawcy nie spełniają.
Jak ocenić platformę PaaS
Regiony i lokalizacja danych
Sprawdź, gdzie faktycznie działają aplikacja i baza danych oraz gdzie są przechowywane backupy i logi. Ustal, czy możesz wybrać region osobno dla każdej usługi. Sprawdź też, gdzie znajdują się warstwa sterowania dostawcy i dane konta oraz w jakim kraju firma ma siedzibę. W przypadku danych osobowych osób w UE oba pytania mają znaczenie.
Usługi w pakiecie
Zobacz, co dostajesz razem z platformą, a co wymaga zewnętrznej firmy: bazy danych, magazyn obiektowy, e-mail, CDN, logi i metryki, środowiska podglądu. Każdy dodatek od innego dostawcy to kolejna umowa, kolejny rachunek i kolejny dalszy podmiot przetwarzający.
Model cenowy
Platformy naliczają opłaty za instancję, za sekundę działania, za żądanie lub za użytkownika (seat), a niektóre dodatkowo mierzą transfer, minuty buildów lub ilość logów. Oszacuj miesiąc na podstawie swoich rzeczywistych liczb, łącznie z bazą danych i drugim środowiskiem na staging.
Przenośność
Uzależnienie od dostawcy (lock-in) kryje się zwykle w buildzie i konfiguracji, a nie w kodzie. Wybieraj platformę, która buduje standardowe obrazy kontenerów z Dockerfile lub za pomocą Cloud Native Buildpacks: lifecycle buildpacków eksportuje obraz OCI, czyli ten sam format, który uruchamiają inne platformy kontenerowe. Trzymaj konfigurację w zmiennych środowiskowych i używaj standardowych silników baz danych, z których możesz zrobić zrzut (dump) i odtworzyć go gdzie indziej. Wtedy odejście od dostawcy to migracja, a nie przepisywanie aplikacji od nowa.
Nodion na tym tle
Nodion to PaaS prowadzony przez Nodion GmbH z siedzibą w Stuttgarcie w Niemczech. Wdrażasz aplikację z Gita za pomocą Dockerfile lub Cloud Native Buildpacks opracowanych przez Nodion albo z gotowego obrazu. Każda aplikacja dostaje procesy, logi, metryki i domeny. Aplikacje z Gita mogą otwierać środowiska podglądu, a zarządzane bazy Postgres, MySQL, Valkey i ClickHouse podłączasz w zakładce Environment aplikacji. Region wybierasz osobno dla każdej usługi, na przykład EU Central we Frankfurcie nad Menem. Szczegóły znajdziesz na stronie Aplikacje.
Najczęściej zadawane pytania
Czym jest PaaS w prostych słowach?
PaaS to platforma, która uruchamia Twoją aplikację za Ciebie. Wysyłasz kod lub obraz kontenera, a dostawca go buduje, wdraża i skaluje na serwerach, którymi zarządza, więc nigdy nie instalujesz ani nie łatasz systemu operacyjnego.
Czym różnią się IaaS, PaaS i SaaS?
W IaaS wynajmujesz maszyny wirtualne i zarządzasz wszystkim od systemu operacyjnego w górę. W PaaS zarządzasz tylko swoją aplikacją i jej danymi. W SaaS korzystasz z gotowej aplikacji i niczego nie wdrażasz.
Czy Kubernetes to PaaS?
Nie. Dokumentacja Kubernetes mówi, że nie jest on tradycyjną platformą PaaS typu „wszystko w jednym”: nie buduje ani nie wdraża kodu źródłowego i nie ma wbudowanych baz danych. Dostarcza elementy, na których można budować platformy.
Jak uniknąć uzależnienia od dostawcy (vendor lock-in) przy PaaS?
Wybierz platformę, która buduje standardowe obrazy kontenerów z Dockerfile lub za pomocą Cloud Native Buildpacks, trzymaj konfigurację w zmiennych środowiskowych i używaj standardowych silników baz danych, takich jak PostgreSQL czy MySQL, z których możesz zrobić zrzut i odtworzyć go gdzie indziej.