Czym jest PaaS? Platform as a Service a IaaS, SaaS i Kubernetes

Trzy stosy bloków dla IaaS, PaaS i SaaS, z warstwami zarządzanymi przez dostawcę zaznaczonymi na zielono

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:

ModelTy dostarczaszDostawca obsługujeTy nadal zarządzaszTypowe zastosowanie
IaaSMaszyny wirtualne, dyski, sieciSprzęt, wirtualizacja, centra danychSystem operacyjny, runtime, wdrożenia, skalowanie, poprawkiPełna kontrola, starsze lub nietypowe oprogramowanie
PaaSKod źródłowy lub obraz konteneraSerwery, OS, buildy, wdrożenia, routing, często bazy danychAplikacja, konfiguracja, daneAplikacje webowe, API, workery
SaaSNic do wdrożeniaCała aplikacjaUstawienia, użytkownicy i Twoje dane w aplikacjiStandardowe oprogramowanie biznesowe
Serverless (FaaS)FunkcjeWykonanie na zdarzenie lub żądanie, skalowanie według zapotrzebowaniaKod funkcji, zimne starty (cold starts), limity czasu i rozmiaruObciążenia sterowane zdarzeniami, ze skokami ruchu
KubernetesObrazy kontenerów i manifestyJako usługa zarządzana: warstwa sterowania (control plane)Węzły, deploymenty, ingress, konfiguracja skalowania, CI/CD, logowanieDuż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.

Daj swojemu agentowi chmurę.

Zyskaj do 15 € środków na start przy rejestracji.

Kontynuuj z GitHub

lub przez e-mail

Bądź na bieżąco.

Nowości produktowe, bez spamu. Możesz zrezygnować w każdej chwili.