Przejdź do treści

DevStyle - Strona Główna
Apka działa, ale nie działa? Sprawdź, czy masz probe!

Apka działa, ale nie działa? Sprawdź, czy masz probe!

Piotr Zimoch

24 lipca 2025

Chmura

🧪 Falstart to nie tylko problem w wyścigach, przypilnuj Twoją apke!

Wydajesz aplikację. Testy przeszły. CI/CD działa. Port wystawiony. Logi mówią: „Serwer działa na 3000”.
Odpalasz przeglądarkę, wpisujesz adres… i czekasz.
I czekasz.
I w końcu – biały ekran, timeout, WTF.

To klasyk w świecie webów, mikroserwisów i Kubernetesa. Serwis działa, ale jeszcze nie żyje. Albo już nie żyje. Albo tylko udaje.
Na szczęście istnieje na to antywzorzec w praktyce – czyli brak readiness i liveness probes.

🔍 Co to są probes?

W Kubernetesie możesz zdefiniować tzw. probe’y – czyli mechanizmy, które automatycznie sprawdzają, czy kontener jest gotowy i sprawny.

  • Readiness Probe = „Czy mogę już przyjąć ruch?”
  • Liveness Probe = „Czy w ogóle jeszcze działam?”

Te dwa niepozorne testy potrafią oszczędzić godziny frustracji, restartów i googlowania „czemu moja aplikacja nie działa, mimo że działa”. Probes ratują Cię nie tylko przed losowymi błędami i googlowaniem „czemu nie działa”, ale przede wszystkim zapewniają lepszą kontrole nad procesem startu Twojej apki oraz niestabilnymi deployami. Bo brak probe’a to jak zarzucanie wędki z nadzieją że ktoś wcześniej założył przynętę!

🛠 Jak to działa?

Wyobraź sobie, że Twój backend ładuje konfigurację, łączy się z bazą i uruchamia po 5 sekundach.
A K8s próbuje już przekierować do niego requesty użytkowników.

Bez readiness probe, Twój serwis przyjmie ruch… zanim będzie gotowy. Boom – błędy 500 i zdezorientowani użytkownicy.
Z readiness probe (np. sprawdzającym GET /healthz) Kubernetes poczeka, aż apka wypluje 200 OK – dopiero wtedy poda jej ruch na tacy.

Z kolei liveness probe sprawdza cyklicznie, czy apka nie umarła po cichu. Zjada CPU? Zawiesiła się? Kubernetes ją zrestartuje jak systemowy paramedyk.

🧪 Minimalny przykład?

livenessProbe: 

httpGet: 

path: /livez

 port: 3000

 initialDelaySeconds: 5

 periodSeconds: 10

 readinessProbe: 

httpGet:

 path: /readyz

 port: 3000

 initialDelaySeconds: 2

 periodSeconds: 5

To wszystko – przynajmniej z perspektywy manifestu.

Ale Kubernetes nie czyta w myślach. Jeśli nie stworzysz w kodzie /readyz czy /livez, to nawet najlepszy probe nie pomoże – bo nie będzie czego odpytywać.

🧠 Dlaczego w ogóle warto się tym przejmować?

Bo probes uczą myśleć o czymś więcej niż „czy apka działa?”. Pomagają projektować systemy stabilniejsze, bezpieczniejsze i łatwiejsze w utrzymaniu.

To nie tylko narzędzie DevOpsów – to mindset, który robi różnicę w każdej produkcyjnej aplikacji.

 

🔧 To i wiele innych praktycznych zagadnień znajdziesz w kursie DevBites: Kubernetes.

Krótko, konkretnie i po ludzku – dokładnie tak, jak lubisz się uczyć.

Zobacz również