Serverless to model uruchamiania kodu, w którym nie zarządzasz ręcznie serwerem, a płacisz zwykle za wykonania lub użycie. nie usuwa serwerów z równania. Usuwa przede wszystkim obowiązek zarządzania nimi. Dla frontend developera to często najszybszy sposób, żeby dowieźć backend, webhook, formularz albo lekkie API, czyli Application Programming Interface, definiuje sposób komunikacji między aplikacjami lub modułami. bez własnej infrastruktury.
Krótka odpowiedź: Vercel i Netlify dla Next.js/React — serverless functions z pełnym Node.js, naturalny wybór. Cloudflare Workers dla edge (niższy cold start, globalnie blisko użytkownika, ograniczony runtime). Serverless nie nadaje się dla: long-running jobs, stanowych WebSocketów, dużych zbiorów danych. Sprawdzaj limity i pricing przed wdrożeniem.
Dla frontend developera to game changer. Możesz zbudować pełny backend bez DevOps, bez Dockera, bez konfiguracji serwerów. To naturalny krok po poznaniu backendu dla frontendowca.
Lokalizacja: Jeden lub kilka regionów
Cold start: zależny od platformy, bundla i runtime
Runtime: Node.js (pełny)
Limity: Więcej pamięci, dłuższy czas
Use case: Cięższe operacje, bazy danych
Edge Functions (Cloudflare, Vercel Edge)
Code
Lokalizacja: Globalna sieć edge
Cold start: zwykle niższy niż klasyczny serverless, ale nadal zależny od platformy
Runtime: lekkie środowisko edge / isolates
Limity: Mniej pamięci, krótszy czas CPU
Use case: Personalizacja, auth, routing
Kiedy który?
Scenariusz
Serverless
Edge
API CRUD to skrót od Create, Read, Update, Delete, czyli podstawowych operacji wykonywanych na danych.
✅
⚠️
Auth / sessions
✅
✅
Personalizacja
⚠️
✅
A/B testing
⚠️
✅
Heavy computation
✅
❌
Database queries
✅
⚠️
Image processing
✅
❌
Najważniejsza praktyczna zasada: edge nie jest "lepszym serverless". To po prostu inny kompromis. Jeśli logika jest lekka i ważna jest lokalizacja blisko użytkownika, edge ma sens. Jeśli potrzebujesz cięższych bibliotek, dłuższego czasu wykonania, stabilnych integracji z bazą i bardziej przewidywalnego runtime, zwykłe functions bywają lepszym wyborem.
Vercel Edge Functions
Code
// app/api/geo/route.tsimport { NextResponse } from 'next/server'export const runtime = 'edge' // ← Kluczowe!export async function GET(request: Request) { const country = request.headers.get('x-vercel-ip-country') const city = request.headers.get('x-vercel-ip-city') return NextResponse.json({ country, city, message: `Hello from ${city}, ${country}!` })}
To zwykle trwa od ułamków sekundy do kilkuset milisekund, zależnie od platformy, regionu i wielkości bundla.
Jak minimalizować?
1. Mniejszy Bundle to paczka JavaScriptu lub innych zasobów wysyłana do przeglądarki jako część aplikacji.:
Code
// ❌ Import całego lodashimport _ from 'lodash'// ✅ Import tylko potrzebnej funkcjiimport debounce from 'lodash/debounce'
2. Lazy loading oznacza ładowanie zasobów dopiero wtedy, gdy są potrzebne, na przykład po przewinięciu strony.:
Code
// ❌ Import na górzeimport { heavyLibrary } from 'heavy-library'// ✅ Import gdy potrzebneexport async function handler() { const { heavyLibrary } = await import('heavy-library')}
3. Connection pooling (bazy danych):
Code
// Użyj connection pooler jak PgBouncer lub Prisma Accelerate
4. Keep warm (Vercel/Netlify):
Code
// Cron job pingujący funkcję co kilka minut
Limity i pricing
Limity i cenniki zmieniają się regularnie, więc nie warto uczyć się ich na pamięć z pojedynczego artykułu. Ważniejsze jest zrozumienie, co zwykle jest limitowane:
czas wykonania pojedynczego requestu,
pamięć i CPU,
liczba requestów albo GB-hours,
bandwidth i egress,
limity dla cronów, buildów i środowisk preview,
limity platformowych baz i kolejek, jeśli używasz ich razem z functions.
Kiedy to za mało?
Heavy computation → użyj dedykowanego serwera
Long-running jobs → użyj kolejek (AWS SQS, BullMQ)
Real-time → użyj WebSocket umożliwia dwukierunkową, stałą komunikację między klientem a serwerem w czasie rzeczywistym. (Pusher, Ably)
Gdzie serverless nie jest najlepszym wyborem
Serverless bywa świetny, ale nie jest darmowym zamiennikiem każdego backendu.
Najczęstsze punkty bólu:
Long-running jobs: importy, duże raporty, transkodowanie wideo, ciężkie AI workloads
Stanowe połączenia: długie WebSockety, procesy trzymające pamięć między requestami
Silna zależność od jednego regionu i jednej bazy: edge blisko użytkownika nic nie da, jeśli każde żądanie i tak leci do dalekiej bazy
Koszty przy dużym ruchu lub złej architekturze: dużo małych wywołań i niekontrolowane integracje zewnętrzne potrafią zrobić rachunek większy niż VPS
Przed wyborem platformy sprawdź zawsze oficjalny pricing i quotas dla konkretnego planu. W praktyce to bywa ważniejsze niż sama składnia funkcji.
Deployment
Vercel
Code
# CLInpm i -g vercelvercel# Lub połącz repo z GitHub — auto-deploy na push
Netlify
Code
# CLInpm i -g netlify-clinetlify deploy --prod# Lub połącz repo z GitHub
Cloudflare Workers
Code
# Wrangler CLInpm i -g wranglerwrangler loginwrangler deploy
Best practices
1. Trzymaj funkcje małe
Code
// ❌ Jedna funkcja do wszystkiegoexport async function handler(req) { if (req.path === '/users') { ... } if (req.path === '/posts') { ... } if (req.path === '/comments') { ... }}// ✅ Osobne funkcje// /api/users/route.ts// /api/posts/route.ts// /api/comments/route.ts
import { z } from 'zod'const createUserSchema = z.object({ name: z.string().min(1), email: z.string().email(),})export async function POST(request: Request) { const body = await request.json() const result = createUserSchema.safeParse(body) if (!result.success) { return NextResponse.json({ errors: result.error.flatten() }, { status: 400 }) } // ... create user}
FAQ
Czym jest serverless i jak różni się od tradycyjnego serwera?
Na tradycyjnym serwerze (VPS, EC2) zarządzasz OS, runtime, skalowaniem, patchami i monitoringiem. Serverless: piszesz tylko funkcję, platforma robi resztę — uruchamia, skaluje, zatrzymuje. Billing per wywołanie (nie za czas działania serwera). Dla frontend developera to najszybsza droga do backendu bez DevOps. Ograniczenia: limit czasu wykonania (zwykle 10-60s), cold starts, stateless.
Jaka różnica między Serverless Functions a Edge Functions?
Serverless Functions (Vercel, Netlify, AWS Lambda): zwykle działają region-first, oferują pełny Node.js runtime, więcej pamięci i czasu wykonania, a ich cold start zależy od platformy, bundla i obciążenia. Dobre dla CRUD API i operacji z bazą danych. Edge Functions (Cloudflare Workers, Vercel Edge): działają bliżej użytkownika w globalnej sieci edge, mają lżejszy runtime i zwykle krótszy czas startu, ale bardziej ograniczone API i limity wykonania. Dobre dla personalizacji, auth, A/B testów i lekkiego routingu.
Którą platformę wybrać — Vercel, Netlify czy Cloudflare?
Vercel: naturalny wybór dla Next.js (od tego samego producenta), doskonała integracja z App Router, Preview Deployments. Netlify: dobre dla statycznych stron i JAMstack, popularne Forms i Identity. Cloudflare: jeśli zależy Ci na niskim latency globalnie, chcesz edge jako default, lub pracujesz z Workers/D1/KV ekosystemem. Dla typowego projektu Next.js na starcie: Vercel. Gdy szukasz alternatywy lub potrzebujesz edge: Cloudflare.
Co to jest cold start i jak go minimalizować?
Cold start to opóźnienie przy pierwszym wywołaniu funkcji po okresie nieaktywności — platforma musi uruchomić środowisko, załadować kod i zainicjalizować runtime. W praktyce edge często startuje szybciej niż klasyczny serverless, ale dokładny czas zależy od platformy, regionu, wielkości bundla i użytych zależności. Jak minimalizować: (1) mniejszy bundle — importuj tylko potrzebne moduły; (2) lazy loading ciężkich zależności; (3) connection pooling dla baz danych (PgBouncer, Prisma Accelerate); (4) keep-warm cron (ping co kilka minut, ale nie zawsze dostępny/opłacalny).
Kiedy serverless nie jest dobrym wyborem?
Cztery główne scenariusze gdzie serverless nie sprawdza się: (1) Long-running jobs — importy CSV, transkodowanie wideo, ciężkie obliczenia AI (przekraczają limity czasu); (2) Stanowe WebSockety — serverless jest stateless, nie trzyma połączeń; (3) Bardzo duży ruch z intensywną bazą — wiele połączeń od wielu funkcji może przeciążyć bazę (connection pooler obowiązkowy); (4) Kosztowne obliczenia — opłata per GB-s może zaskoczyć przy heavy workloads.
Jak wdrożyć Next.js na Vercel?
Trzy kroki: (1) Połącz repozytorium GitHub z Vercel (vercel.com → Add New Project); (2) Vercel automatycznie wykrywa Next.js i konfiguruje build; (3) Każdy push na main to automatyczny deploy, każdy PR to Preview Deployment. Zmienne środowiskowe: Settings → Environment Variables. Dla zaawansowanych: vercel.json do konfiguracji routingu i regionów. CLI: npm i -g vercel i vercel w katalogu projektu.
Jakie są limity w darmowych planach Vercel i Netlify?
Limity zmieniają się regularnie — zawsze sprawdzaj aktualny pricing i limity w dokumentacji platformy. Najważniejsza praktyka jest prosta: nie projektuj architektury pod marketingową tabelkę z planami, tylko pod własny profil ruchu, czas wykonania funkcji, liczbę połączeń do bazy i wymagania regionowe. Dla małych projektów darmowe plany często wystarczają, ale dla produkcji i ruchu reklamowego sprawdzaj limity własnego case'u przed wdrożeniem.
Serverless to najprostszy sposób na backend dla frontend developera, ale najlepsze efekty pojawiają się dopiero wtedy, gdy rozumiesz kompromisy runtime'u, limity czasu wykonania i koszt złej architektury. Vercel, Netlify i Cloudflare rozwiązują podobny problem, ale robią to w trochę inny sposób.
Zacznij od platformy, która pasuje do Twojego stacku i przepływu danych, nie od tej, która jest najmodniejsza. Warto też poznać Server Actions, które w części przypadków pozwalają jeszcze bardziej uprościć warstwę backendową.
Jeśli chcesz przełożyć ten temat na lepszą architekturę frontendu, uporządkować React lub Next.js i podnieść jakość pracy zespołu, skontaktuj się ze mną. Pomagam zamieniać wiedzę z artykułów w praktyczne decyzje technologiczne.
Maciej Sala — project manager i frontendowiec z doświadczeniem w marketingu internetowym. Na co dzień pracuję z Reactem, Next.js i TypeScriptem, łącząc perspektywę produktową z praktycznym podejściem do kodu. Przez kilka lat związany z branżą gier wideo jako project manager i game designer.
Absolwent historii na Uniwersytecie Jagiellońskim i studiów podyplomowych z marketingu internetowego na Akademii Górniczo-Hutniczej w Krakowie. Poza pracą trenuje na siłowni, maluje figurki i realizuje własne projekty.
Anthropic uderza w Figmę i Adobe — oto Claude Design
Anthropic wypuścił właśnie narzędzie AI do tworzenia stron, landing page'ów i prezentacji z promptu. Oto co wiemy o Claude Design i Opus 4.7 — i co to oznacza dla developerów.
Astro.js vs Next.js — które narzędzie wybrać w 2026 roku?
Fachowe porównanie Astro.js i Next.js z perspektywy developera pracującego na co dzień w Next.js. Architektura, wydajność, SEO, DX, koszty i konkretne use case — z benchmarkami i przykładami kodu.
WordPress → Next.js — migracja treści, redirecty 301 i zachowanie pozycji SEO
Jak przenieść stronę z WordPress na Next.js bez utraty pozycji w Google? Eksport treści, mapowanie URL, redirecty 301, migracja obrazów i weryfikacja indeksacji.