Home SOFTWAREPomoć i savetiArhitektura modernih web aplikacija – Deo 6: Serverless i Edge Computing

Arhitektura modernih web aplikacija – Deo 6: Serverless i Edge Computing

od itn
Arhitektura modernih web aplikacija

Dobrodošli u šesti deo serijala na ITNetwork.rs! Do sada smo prošli kroz monolit i mikroservise, frontend (SPA/SSR/SSG), API-je, baze, i mikroservisni dizajn. Sada ulazimo u budućnost izvršavanja kodaserverless i edge computing. Danas ćemo razjasniti: šta je serverless, kako funkcionišu edge funkcije, kada ih koristiti, i kako izbeći zamke poput hladnog starta.

Šta je Serverless?

„Serverless“ ne znači „bez servera“ – znači „bez upravljanja serverima“.

  • Ti pišeš funkciju
  • Cloud provajder je pokreće po potrebi
  • Plaćaš samo za izvršavanje

Dva tipa serverless-a

Tip Primeri
FaaS (Function as a Service) AWS Lambda, Vercel Functions, Cloudflare Workers
BaaS (Backend as a Service) Firebase Auth, Supabase, PlanetScale
1. Serverless funkcije – osnovni koncept

Kako radi?

Serverless funkcije

Nema servera. Nema scalinga. Nema patch-ova.

2. Popularni Serverless provajderi

Provajder Karakteristike
Vercel Integrisano sa Next.js, edge + serverless
Netlify Functions Jednostavan, do 10s izvršavanje
AWS Lambda Najmoćniji, ali kompleksniji
Cloudflare Workers Edge, <1ms hladni start
Fly.io Serverless + VM, blizu korisnika
3. Edge Computing – kod na ivici mreže

Tradicionalni server vs Edge

Edge Computing

Latencija: 150ms → 5ms

4. Praktičan primer: Serverless API sa Vercel + Prisma

Struktura projekta

serverless-todo/
├── api/
│   └── todos/
│       ├── create.ts
│       ├── list.ts
│       └── [id].ts
├── prisma/
│   └── schema.prisma
├── package.json
└── vercel.json
api/todos/create.ts
import type { VercelRequest, VercelResponse } from '@vercel/node';
import { PrismaClient } from '@prisma/client';

const prisma = new PrismaClient();

export default async function handler(
  req: VercelRequest,
  res: VercelResponse
) {
  if (req.method !== 'POST') {
    return res.status(405).json({ error: 'Method not allowed' });
  }

  const { title } = req.body;
  if (!title) {
    return res.status(400).json({ error: 'Title required' });
  }

  const todo = await prisma.todo.create({
    data: { title, completed: false }
  });

  res.status(201).json(todo);
}
prisma/schema.prisma
generator client {
  provider = "prisma-client-js"
}

datasource db {
  provider = "postgresql"
  url      = env("DATABASE_URL")
}

model Todo {
  id        Int      @id @default(autoincrement())
  title     String
  completed Boolean  @default(false)
  createdAt DateTime @default(now())
}
vercel.json
{
  "functions": {
    "api/**/*.ts": {
      "memory": 1024,
      "maxDuration": 10
    }
  }
}

Deploy: vercel –prod → automatski serverless API

5. Edge funkcije – Cloudflare Workers

Primer: Autentifikacija na ivici

// workers/auth.ts
export default {
  async fetch(request: Request): Promise<Response> {
    const url = new URL(request.url);
    
    if (url.pathname.startsWith('/api/protected')) {
      const token = request.headers.get('Authorization');
      if (!token || !verifyJWT(token)) {
        return new Response('Unauthorized', { status: 401 });
      }
    }

    return fetch(request);
  }
};

Izvršava se u 150+ gradova. Latencija < 10ms.

6. Prednosti i mane Serverless-a

+
Nema upravljanja serverima Hladni start (100ms–2s)
Plaćaš po upotrebi Ograničenje vremena (10s–15min)
Automatsko skaliranje Vendor lock-in
Brzi deploy Debug teži
Edge = munjevita latencija Ograničeni resursi (128MB–10GB)
7. Hladni start – najveći problem

Šta je?

Prvo pokretanje funkcije nakon neaktivnosti → inicijalizacija runtime-a.

Provajder Hladni start (prosek)
AWS Lambda (Node.js) 500ms–2s
Vercel (Node.js) 300ms–1s
Cloudflare Workers <50ms
Vercel Edge <100ms
Rešenja
Rešenje Kako
Edge funkcije Cloudflare, Vercel Edge
Provisioned Concurrency AWS (plaćaš za „toplu“ funkciju)
Keep-alive ping Cron job svakih 5 min
Lagan runtime Bun, Deno, Rust
8. Kada koristiti Serverless?
Slučaj Preporuka
API za frontend Serverless (Vercel)
Webhook obrada Serverless
Autentifikacija, A/B testovi Edge funkcije
Heavy batch obrada NE – koristi VM/K8s
MVP, prototip Serverless

Zlatno pravilo: „Koristi serverless za event-driven, kratke, česte pozive. Za dugotrajno – koristi servere.“

9. Troškovi – stvarni primer

Upotreba Tradicionalni server Serverless (Vercel)
1M API poziva/mesec 50€ (VM) 15–25€
100K poziva/mesec 50€ 2–5€
0 poziva 50€ 0€

Ušteda do 90% za niske/moderate opterećenja

Dijagram: Tradicionalni vs Serverless vs Edge

Tradicionalni vs Serverless vs EdgeZaključak: Serverless + Edge = budućnost
Tehnologija Kada koristiti
Vercel Serverless Next.js API routes
Vercel Edge Middleware, auth, A/B
Cloudflare Workers Globalna logika, <50ms
AWS Lambda Kompleksni backend
Šta dalje?

U sedmom delu ulazimo u keširanje, performanse i skaliranje:

  • Redis, CDN, HTTP keš
  • Rate limiting
  • Load testing

Tvoj izazov

  1. Napravi serverless TODO API na Vercel
  2. Dodaj edge middleware koji blokira IP adrese iz određene zemlje
  3. Uporedi latenciju: localhost vs vercel.app
  4. Komentariši ispod: „Da li koristiš serverless? Koji provajder?“

Autor: Dušan Antonijević – saradnik ITNetwork.rs
Hvala na čitanju! Podeli tekst sa kolegama.

Banner

Banner

Možda će vam se svideti i