Migracje do chmury i infrastruktura

Rozwiązania serverless i model scale-to-zero

Twój kod uruchamia się wtedy, kiedy jest potrzebny, i nic nie kosztuje, kiedy nie jest. Przy nierównym ruchu zmienia to rachunek ekonomiczny utrzymania systemu.

Na czym polega model scale-to-zero

Klasyczny serwer działa nieprzerwanie. Płacisz za niego o trzeciej w nocy, kiedy nikt z niego nie korzysta, płacisz w spokojnym tygodniu i wymiarujesz go pod najbardziej obciążoną godzinę w roku. W praktyce oznacza to, że przez większość czasu płacisz za moc, której nie wykorzystujesz.

Serverless odwraca ten układ. Twój kod czeka bezczynnie, dopóki nie przyjdzie żądanie, wykonuje się, zwraca odpowiedź i kończy pracę. Rozliczenie opiera się na czasie wykonania i liczbie wywołań. Kiedy nic się nie dzieje, koszt zbliża się do zera.

Przy systemie o nierównym ruchu ta różnica jest znacząca. Narzędzie wewnętrzne używane w godzinach pracy, sklep o wyraźnej sezonowości, raport uruchamiany dwa razy dziennie, API dostające dziesięć tysięcy żądań w ciągu godziny i nic aż do jutra. Wszystkie te przypadki na klasycznym serwerze spędzają większość życia bezczynnie.

Gdzie to pasuje, a gdzie nie

Uczciwa odpowiedź brzmi tak: serverless pasuje do konkretnego charakteru ruchu, a nie do wszystkiego.

Sprawdza się, gdy obciążenie jest nierówne albo trudne do przewidzenia, gdy praca jest z natury zdarzeniowa i gdy w przeciwnym razie trzeba by wymiarować infrastrukturę pod szczyt, który zdarza się rzadko. Znika też przy okazji cała kategoria pracy: nie ma systemu operacyjnego do łatania ani planowania pojemności, w którym można się pomylić.

Sprawdza się źle przy stałym, dużym ruchu. Jeśli Twój system obsługuje wyrównane obciążenie przez całą dobę, rozliczenie za wywołanie sumuje się do kwoty wyższej niż koszt zarezerwowanej instancji. Kiepsko pasuje też do długo trwających procesów, zadań wymagających dużo pamięci przez dłuższy czas oraz aplikacji, które muszą trzymać stan pomiędzy żądaniami.

Zanim to zarekomendujemy, patrzymy na Twój faktyczny ruch. Przeniesienie stale obciążonej aplikacji na serverless to dobry sposób na jednoczesne podniesienie złożoności i kosztów.

Kompromisy, o których warto wiedzieć

Dwie rzeczy zaskakują zespoły wchodzące w ten model po raz pierwszy.

Pierwsza to zimne starty. Gdy funkcja nie była niedawno wywoływana, platforma musi ją najpierw wczytać, co dokłada opóźnienie do pierwszego żądania. Wielkość tego opóźnienia zależy od środowiska uruchomieniowego, zależności i samej platformy. Przy przetwarzaniu w tle nikt tego nie zauważy. Przy stronie, na którą czeka klient, trzeba to zmierzyć i ograniczyć.

Druga to połączenia do bazy danych. Klasyczna aplikacja otwiera pulę połączeń i korzysta z nich wielokrotnie. Serverless tworzy wiele krótko żyjących środowisk wykonawczych, z których każde chce własnego połączenia, a baza, która czuła się dobrze przy pięćdziesięciu, nie zniesie pięciuset. Da się to rozwiązać poolerem połączeń albo bazą zbudowaną pod ten wzorzec, ale trzeba to rozstrzygnąć świadomie już na etapie projektu.

Jak dojść do tego z istniejącej aplikacji

Bardzo niewiele zespołów zaczyna od zera. Zwykle pytanie brzmi, co zrobić z aplikacją, która już działa na jakimś serwerze.

Przeniesienie całości naraz rzadko jest właściwą odpowiedzią. Praktyczniejsza droga to wyciągnięcie tych fragmentów, które mają najbardziej nierówne obciążenie, i uruchomienie ich w modelu serverless, zostawiając stabilny rdzeń tam, gdzie jest. Przetwarzanie obrazów, generowanie raportów, obsługa webhooków, zadania cykliczne i wszystko wyzwalane z kolejki to zwykle dobrzy kandydaci na początek, bo mają naturalnie zdarzeniowy charakter i są już zazwyczaj odseparowane od reszty kodu.

Daje Ci to korzyść kosztową tam, gdzie jest największa, a zmianę utrzymuje w ryzach. Szybko pokazuje też, czy ten model odpowiada Twojemu zespołowi, co warto wiedzieć przed przeniesieniem na niego głównej aplikacji.

Panowanie nad rachunkiem

Ta sama cecha, która czyni serverless atrakcyjnym, jest też źródłem ryzyka. Automatyczne skalowanie oznacza, że skok ruchu zostaje wchłonięty bez żadnej interwencji. Oznacza też, że błąd ponawiający wywołania w pętli albo bot uderzający w kosztowny endpoint skalują się równie ochoczo.

Limity współbieżności, maksymalne czasy wykonania i alerty budżetowe ustawiamy jako część wdrożenia, a nie po pierwszej nieprzyjemnej fakturze. Limity dobieramy tak, żeby realny wzrost został obsłużony, a zachowanie wymykające się spod kontroli zatrzymane. O przekroczeniu ustalonego progu wydatków dowiadujesz się wtedy, gdy do niego dochodzi, a nie na koniec miesiąca.

Co dostajesz

Ocena obciążenia, zanim cokolwiek powstanie

Sprawdzamy Twój wzorzec ruchu, środowisko uruchomieniowe i zależności, a potem mówimy, czy serverless faktycznie wyjdzie taniej. Przy stałym, dużym obciążeniu często nie wychodzi.

Architektura aplikacji serverless

Funkcje, kolejki, magazyn danych i warstwa API zaprojektowane pod charakter Twojego ruchu, a nie pod serwer, który trzeba wymiarować na szczyt.

Automatyczne skalowanie pod obciążeniem

Platforma dokłada moc w miarę napływu żądań, z ustawionymi limitami współbieżności, żeby skok ruchu nie zamienił się w nieograniczony rachunek.

Obsługa zimnych startów

Zimne starty to realny kompromis w tym modelu. Mierzymy je na Twoim obciążeniu i ograniczamy tam, gdzie mają znaczenie, zamiast udawać, że ich nie ma.

Strategia dla stanu i bazy danych

Funkcje serverless są bezstanowe, więc dla sesji, połączeń i zadań w tle trzeba świadomie wybrać miejsce. Pula połączeń do bazy to zwykle pierwsza rzecz, którą trzeba ustawić poprawnie.

Model kosztów oparty na Twoich liczbach

Prognoza oparta na Twojej realnej liczbie żądań i czasie wykonania, razem z wariantem dziesięciokrotnego wzrostu ruchu, żeby faktura nie była niespodzianką.

Jak pracujemy

  1. 01

    Analiza wzorca ruchu

    Sprawdzamy, jak obciążenie rozkłada się w ciągu doby i tygodnia. Serverless opłaca się przy ruchu nierównym i skokowym, a przy płaskim i stałym zwykle nie.

  2. 02

    Projekt architektury

    Dzielimy system na funkcje o jasnych granicach, ustalamy, co powinno trafić do kolejki zamiast do żądania, i wybieramy miejsce dla stanu aplikacji.

  3. 03

    Implementacja z opomiarowaniem

    Budujemy rozwiązanie z logowaniem, śledzeniem żądań i metrykami kosztów wpiętymi od początku. Systemy serverless trudniej diagnozować po zdarzeniu niż pojedynczy serwer.

  4. 04

    Uczciwe testy obciążeniowe

    Testujemy realnymi skokami ruchu, łącznie z zachowaniem przy zimnym starcie i limitami po stronie bazy danych, bo to tam takie systemy zwykle pękają najpierw.

  5. 05

    Wdrożenie i dostrajanie

    Po starcie dostrajamy przydział pamięci, współbieżność i limity czasu na podstawie realnego użycia, bo te ustawienia decydują i o wydajności, i o koszcie.

Narzędzia i technologie

Tam, gdzie istnieje dobre narzędzie open source, wybieramy je zamiast zamkniętego. Bez uzależnienia od jednego dostawcy i z kosztami, które da się przewidzieć.

  • Next.js
  • PostgreSQL
  • Supabase
  • Redis
  • OpenTofu
  • Terraform
  • Knative
  • Grafana
  • Vercel
  • AWS Lambda
  • Cloudflare Workers
  • Google Cloud Run

Najczęściej zadawane pytania

Powiązane realizacje

Pozostałe usługi w tej kategorii

Przeczytaj opinie firm, które nam zaufały

Zawsze są kilka kroków do przodu.

Mikołaj

CEO & Founder, GBS®

Zobacz na Clutch
GBS® logo

Dostarczone znacznie wcześniej niż termin.

Yasniel

CEO, IMEGA Sp z o.o.

Zobacz na Clutch

Indywidualne podejście ZanReal jest imponujące.

Adam

Executive, w-studio.pl

Zobacz na Clutch

Wiedza i intuicja biznesowa czynią ich wartościowym partnerem.

Magda

Designer, DIGITALUNI

Zobacz na Clutch

Szybkie rozwiązania, które obniżyły koszty o 99%.

Andrei Kapytau

Team Lead, busel.uk

Zobacz na Clutch

+20% dostarczalności dla naszych kampanii e-mail.

Joan Calabria

Sales Director, 36NORTH

Zobacz na Clutch
36NORTH logo

Najnowsze

Poradniki techniczne, bezpieczeństwo i nasze doświadczenia z budowania rozwiązań AI.

Płacisz za serwery, które przez większość doby stoją bezczynnie?

Napisz do nas

Opowiedz nam, jak rozkłada się Twój ruch i ile dziś płacisz za hosting, a policzymy, czy serverless rzeczywiście wyjdzie taniej.

Zanek

Nie nadążasz za zmianami w świecie AI?

Pozwól, że weźmiemy to na siebie. Co tydzień destylujemy najważniejsze wydarzenia ze świata AI w skupiony, 5-minutowy przegląd — żebyś był na bieżąco bez szumu.

Dowiedz się więcej
Tygodnik AIonline
Wyselekcjonowane wiadomości AI do porannej kawy. Co tydzień.
Wyślij mi swój email, żeby się zapisać.