Next.js na Kubernetesie pada w szczycie promocji
Sklep z SSR w Next.js działa na Kubernetesie z HPA na CPU. W Black Friday ruch rośnie 8 razy w 10 minut, nowe pody startują 90 sekund, a w tym czasie TTFB rośnie do 6 s i część żądań kończy się 502.
Zanim rozwiniesz: powiedz na głos, jak byś to rozwiązał, i nazwij co najmniej jeden kompromis.
Moje rozwiązanie
Zapisuje się samo w tej przeglądarce. Kopię zrobisz na stronie Notatki.
Pokaż, czego szuka rekruter, i modelową odpowiedź
Co sprawdza rekruter
- Czy rozumiesz, dlaczego autoskalowanie reaguje za późno
- Czy łączysz infrastrukturę z architekturą renderowania
- Czy planujesz testy obciążeniowe i przygotowanie przed zdarzeniem
Odpowiedź seniora
HPA na CPU reaguje dopiero po wzroście obciążenia, a 90 sekund startu to okno, w którym istniejące pody się duszą. Działam na trzech poziomach.
Mniej pracy dla serwera: strony katalogu i produktów na ISR lub cache SSR w CDN z stale-while-revalidate, więc większość ruchu nie dochodzi do podów. Szybszy start: mniejszy obraz (output standalone), brak ciężkiej pracy przy starcie, readiness probe, która przepuszcza ruch dopiero po rozgrzaniu. Lepsze skalowanie: minimalna liczba replik podniesiona przed promocją (zaplanowane skalowanie lub KEDA z harmonogramem), skalowanie po metrykach bliższych użytkownikowi (liczba żądań, opóźnienie) zamiast samego CPU, rezerwa węzłów w klastrze (cluster autoscaler też potrzebuje czasu).
Przed zdarzeniem test obciążeniowy (k6) z realnym profilem ruchu i ustalone SLO, np. p95 TTFB poniżej 800 ms. W trakcie dashboard i osoba dyżurna.
Typowe wpadki
- Tylko podniesienie limitów CPU
- Ignorowanie czasu startu poda i węzła
- Brak cache dla stron, które są takie same dla wszystkich
Dopytają o
- Jak ustawisz requests i limits dla Node.js?
- Co zrobisz, jeśli wąskim gardłem okaże się API, a nie SSR?
- Jak przetestujesz, że cache nie pokaże nieaktualnych cen?