🧪 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ć.