Kluczowe Wnioski
- Migracja na Vercel Edge obniżyła koszty infrastruktury o 70%.
- Row Level Security (RLS) w Supabase pozwala przenieść logikę autoryzacji z API do bazy.
- Architektura Serverless eliminuje potrzebę zarządzania łatkami bezpieczeństwa systemu operacyjnego.
Tradycyjne serwery VPS dają pełną kontrolę, ale wymagają ciągłego utrzymania. W projekcie Kwintesencja API zdecydowałem się na pełną migrację do architektury Serverless, wykorzystując Vercel oraz Supabase jako backend-as-a-service. Decyzja ta była podyktowana specyfiką ruchu – wysokimi pikami podczas premier i niskim zużyciem w pozostałe dni.
1. Dlaczego Serverless?
Kwintesencja to pismo literackie. Premiera nowego numeru generuje tysiące zapytań w ciągu kilku godzin, po czym ruch spada niemal do zera. Utrzymywanie dedykowanego VPS (nawet małego) oznacza płacenie za zasoby, które przez 90% czasu leżą odłogiem.
Vercel Edge Functions skalują się automatycznie od zera do tysięcy instancji w sekundy, a model płatności "pay-as-you-go" oznacza, że gdy nikt nie czyta, rachunek wynosi 0 PLN.
2. Porównanie Kosztów
Poniższa tabela przedstawia szacunkowe miesięczne koszty utrzymania infrastruktury dla projektu o podobnej skali (ok. 50k requestów/miesięcznie).
| Rozwiązanie | Koszt (Est.) | Czas Utrzymania |
|---|---|---|
| Tradycyjny VPS (DigitalOcean) | $6 - $12 | Wysoki (Updates, Security) |
| Managed PostgreSQL (AWS RDS) | $15+ | Średni |
| Vercel + Supabase | $0 (Free Tier) | Bliski zeru |
3. Supabase i RLS
Supabase to nie tylko baza danych PostgreSQL. To kompletny backend. Kluczową funkcją, która zmieniła architekturę API, jest Row Level Security (RLS). Zamiast pisać skomplikowane "middleware" sprawdzające, czy użytkownik X może edytować post Y, definiujemy to w SQL.
-- Policy: Użytkownik widzi tylko swoje szkice
CREATE POLICY "View own drafts" ON posts
FOR SELECT
USING (auth.uid() = user_id);
Dzięki temu, nawet jeśli API zostanie skompromitowane (lub zapomnimy dodać `where` w kodzie JS), baza danych sama odmówi wydania danych, do których użytkownik nie ma praw.
4. Edge Functions vs Node.js
Standardowe funkcje serverless (AWS Lambda) mają problem "Cold Start" – uruchomienie kontenera może trwać nawet 1-2 sekundy. Vercel Edge Functions działają na silniku V8 (jak przeglądarka), co skraca start do milisekund.
// api/magazines.ts (Edge Runtime)
export const config = {
runtime: 'edge',
};
export default async function handler(req) {
// To zapytanie wykonuje się błyskawicznie blisko użytkownika
return new Response(JSON.stringify({ data: '...' }));
}
Podsumowanie
Dla projektów o zmiennym obciążeniu, takich jak media cyfrowe, stack Serverless jest bezkonkurencyjny. Pozwala skupić się na kodzie aplikacji ("Jaki feature dodać?"), a nie na infrastrukturze ("Czy serwer wytrzyma?").