2emdash
Polski
English Polski Deutsch Español Français Italiano Português Nederlands Українська Čeština Русский Türkçe
Przebuduj za darmo
← Wszystkie artykuły
Jak to działa · · Zaktualizowano · 5 min czytania

Czym są Cloudflare Workers? Wyjaśniamy po ludzku

Czym są Cloudflare Workers? Przystępny przewodnik po bezserwerowym brzegu sieci, izolatach V8, skalowaniu do zera i rozliczaniu czasu procesora.

Przeczytaj w: English , Deutsch

Na tej stronie

Przy nowoczesnych narzędziach, w tym przy EmDash, co chwilę widzisz hasło „działa na Cloudflare Workers” i kiwasz głową, choć do końca nie wiesz, czym właściwie jest Worker. Bezserwerowość? Brzeg sieci? Izolaty? Wyjaśnijmy to po ludzku, bez owijania w bawełnę.

Po lekturze będziesz wiedzieć, czym jest Worker, czym różni się od zwykłego serwera albo funkcji Lambda i dlaczego stanowi naturalny fundament dla CMS-a takiego jak EmDash.

Wersja w jednym zdaniu

Cloudflare Worker to niewielki fragment kodu, który działa w globalnej sieci Cloudflare, w setkach lokalizacji blisko twoich użytkowników, uruchamia się natychmiast po nadejściu żądania i nic nie kosztuje, gdy jest bezczynny.

Tyle. Rozłóżmy teraz na części trzy pojęcia ukryte w tym zdaniu: bezserwerowość, brzeg sieci i izolaty.

Bezserwerowość: nie zarządzasz serwerem

Tradycyjnie prowadzenie strony oznacza wynajem serwera (albo maszyny wirtualnej, albo kontenera), który stoi tam całą dobę. Łatasz jego system, dobierasz jego moc pod ruch szczytowy i płacisz za niego nawet o czwartej nad ranem, gdy nikogo na stronie nie ma.

„Bezserwerowość” odwraca ten układ. Wgrywasz sam kod, a platforma uruchamia go na żądanie. Gdzieś tam nadal stoi serwer, samo słowo to marketing, ale ty go nigdy nie widzisz, nie skalujesz ani nie łatasz. Żadnego SSH, żadnych aktualizacji systemu, żadnego planowania pojemności.

Efekt uboczny, który wszyscy kochają, to skalowanie do zera. Gdy nie ma żądań, nic nie działa i nic nie płacisz. Gdy naraz przychodzi tysiąc żądań, platforma uruchamia twój kod tysiąc razy równolegle. Nic z tego nie konfigurujesz.

Brzeg sieci: kod działa blisko użytkownika

Zwykle twój serwer stoi w jednym miejscu, powiedzmy w centrum danych w Wirginii. Odwiedzający z Sydney wysyła każde żądanie na drugą stronę globu i czeka na powrót. Ta podróż w obie strony to opóźnienie (latencja), które się kumuluje.

Cloudflare ma sieć centrów danych w setkach miast na świecie. „Brzeg sieci” oznacza uruchamianie kodu w tym z nich, które jest najbliżej danego odwiedzającego. Użytkownik z Sydney trafia do centrum w Sydney, użytkownik z Londynu do Londynu. Ten sam kod, uruchamiany blisko każdego.

Dla strony oznacza to, że dynamiczne części, czyli renderowanie strony, sprawdzanie uprawnień, odpytywanie bazy, dzieją się blisko czytelnika, a nie w jednym odległym punkcie. To główny powód, dla którego strony serwowane z brzegu sieci działają żwawo na całym świecie, a ty nie musisz ręcznie stawiać CDN-a i serwerów źródłowych.

Izolaty: dlaczego Workers startują natychmiast

Tu zaczyna się sprytna część, ta, która odróżnia Workers od starszej bezserwerowości pokroju AWS Lambda.

Platformy w stylu Lambdy zwykle uruchamiają kontener albo mikro-maszynę wirtualną na każdą funkcję. To izolowane i bezpieczne, ale start trwa, stąd osławiony „zimny start”, od kilkuset milisekund do kilku sekund, zanim całe środowisko wstanie.

Cloudflare Workers używają zamiast tego izolatów V8, czyli tej samej lekkiej technologii piaskownicowania, dzięki której przeglądarka uruchamia obok siebie JavaScript wielu stron i żadna karta nie czyta danych innej. Izolat to nie cała maszyna wirtualna, tylko tani, bezpieczny przedział wewnątrz współdzielonego środowiska uruchomieniowego. Cloudflare tworzy taki izolat w około milisekundę i potrafi bezpiecznie utrzymać ich wiele w tym samym procesie.

Praktyczne skutki:

  • Praktycznie brak zimnych startów. Worker jest gotowy niemal natychmiast.
  • Ogromne zagęszczenie. Jedna maszyna obsługuje gigantyczną liczbę izolatów i tylko dlatego „uruchom mój kod w setkach miast” w ogóle się opłaca.
  • Silna izolacja. Twój kod z założenia nie widzi cudzego.

Kompromis: izolat to nie pełny serwer Node.js. Workers uruchamiają środowisko V8 z webowymi standardami (fetch, Request, Response, Web Crypto) oraz z API środowiska Cloudflare. Nie każda biblioteka z Node zadziała bez zmian. Nowoczesne frameworki, w tym Astro, celują wprost w to środowisko, więc w praktyce raczej tego nie odczujesz, ale właśnie dlatego „działa na Workers” to realne ograniczenie projektowe, a nie tylko wybór hostingu.

Za co płacisz: za czas procesora, nie za czas zegarowy

To zaskakuje. Na zwykłym serwerze płacisz za czas, w którym maszyna istnieje. W Workers rozliczany jesteś głównie za faktyczny czas procesora, czyli milisekundy, w których twój kod liczy, a nie za czas, w którym czeka (choćby na powolną bazę albo zewnętrzne API).

Przy pracy w modelu żądanie/odpowiedź, która jest zrywowa i pełna czekania, to naprawdę inny i często dużo tańszy układ kosztów. Jest hojny darmowy plan, a plan Workers Paid zaczyna się od 5 USD miesięcznie, gdy potrzebujesz więcej (w tym funkcji takich jak Dynamic Workers, które napędzają wtyczki w piaskownicy).

Szybki model mentalny

Złóżmy to razem:

Żądanie od użytkownika w Tokio
   ↓
Trafia do centrum danych Cloudflare w Tokio (brzeg sieci)
   ↓
Izolat V8 natychmiast uruchamia kod Workera (bez zimnego startu)
   ↓
Worker wykonuje pracę, może odpytać bazę, renderuje stronę
   ↓
Odpowiedź wraca do Tokio, o milisekundy stąd
   ↓
Znów bezczynny → nie płacisz nic do następnego żądania

Dlaczego to świetny fundament dla CMS-a

Dokładnie dlatego EmDash, otwarty CMS Cloudflare, stoi na Workers:

  • Globalna szybkość domyślnie. Twoja treść renderuje się blisko każdego czytelnika, bez męczenia się z CDN-em.
  • Ekonomia skalowania do zera. Blog o małym ruchu kosztuje prawie nic, a skok ruchu jest wchłaniany automatycznie. Cloudflare prowadzi na EmDash własny blog, który wzruszył ramionami na atak DDoS o sile 28 000 żądań na sekundę.
  • Nie ma serwera do łatania. Największe źródło bólu w bezpieczeństwie WordPressa, czyli starzejący się serwer i stos PHP, po prostu nie istnieje.
  • Naturalny dom dla wtyczek w piaskownicy. Izolaty same z siebie dają silną i tanią izolację, więc EmDash uruchamia każdą wtyczkę we własnym izolacie z zadeklarowanymi uprawnieniami, bezpiecznie z definicji.

Workers nie działają jednak same. CMS potrzebuje też bazy danych i magazynu plików, a Cloudflare dostarcza jedno i drugie jako bezserwerowych towarzyszy: D1 jako bazę (zobacz Cloudflare D1 wyjaśnione) i R2 na pliki (zobacz R2 kontra S3). Razem tworzą trio, na które wdraża się EmDash.

Wypchnięcie prawdziwej strony na Workers to kilka poleceń wrangler i na tym polega cały urok: nie ma serwera do postawienia ani pojemności do zaplanowania.

Workers to sieć, w której działa twoja strona, jeśli przejdziesz do 2emdash: odbudowujemy starzejące się witryny na Cloudflare i przekazujemy właścicielowi prosty panel do zarządzania nimi. Jesteśmy niezależnym serwisem, bez powiązania z Cloudflare ani projektem EmDash.