Python i FastAPI backend — moderni, skalabilni API-ji

← Početna
Backend i API

Python i FastAPI backend — moderni, skalabilni API-ji

FastAPI je referentni Python framework za asinhrone REST API-je. Spaja izvorne Python type hintove s automatskom Pydantic validacijom, automatski generiranom OpenAPI dokumentacijom i ASGI performansama uporedivim s Node.js — bez žrtvovanja čitljivosti koda.

FastAPI — najbrži Python framework

FastAPI radi na Uvicornu (ASGI server) s Gunicornom za više procesa u produkciji. Jednostavan endpoint koji čita iz Redis keša odgovara za manje od 5 ms na standardnom hardveru. Izvorni Dependency Injection omogućava izolirano testiranje svakog sloja bez složenih mockova: autentifikacija, sesija baze podataka, ograničavanje broja zahtjeva — svaki je ubrizgiva zavisnost.

OpenAPI 3.1 dokumentacija automatski se generira iz type hintova — Swagger UI i ReDoc dostupni su na `/docs` i `/redoc` u razvoju. Pydantic v2 shema (validator zasnovan na Rustu) validira zahtjeve i odgovore 10–20 puta brže od Pydantica v1. Svako neispravno polje vraća 422 s jasnim, lokaliziranim porukama o grešci.

  • Izvorni async/await — neblokirajući I/O na svim operacijama s bazom i HTTP-om
  • BackgroundTasks za operacije nakon odgovora (e-pošta, webhook, log)
  • Izvorna podrška za WebSocket za funkcije u realnom vremenu (chat, obavijesti)
  • Ograničavanje broja zahtjeva sa slowapi (zasnovano na limits) — po IP-u i po korisniku
  • CORS, kompresija (gzip/brotli), request ID, timing middleware

PostgreSQL, SQLAlchemy i Alembic

Za sve operacije s bazom koristimo SQLAlchemy 2.0 async (asyncpg driver). Modeli se definiraju s Mapped tipovima — tipski sigurno, bez stringova. Složeni upiti pišu se u SQLAlchemy Core (provjera pri kompajliranju) ili čistom SQL-u putem `text()` s bind parametrima — nikad interpolacija stringova (potpuna prevencija SQLi).

Alembic migracije automatski se generiraju iz promjena modela i ručno pregledaju prije primjene. Svaka migracija ima testirane `upgrade()` i `downgrade()`. U produkciji se migracije izvršavaju u CI-ju prije isporuke — baza podataka je uvijek usklađena s kodom. Connection pooling putem asyncpg s podesivom veličinom pula po servisu.

  • Zaključavanje na nivou reda pomoću `SELECT ... FOR UPDATE` za kritične istovremene operacije
  • Pretraga cijelog teksta s pg_trgm i tsvector — bez Elasticsearcha za jednostavne slučajeve
  • JSONB za polustrukturirane podatke s GIN indeksiranjem
  • Particionirane tabele za tabele s milionima redova (logovi, događaji)

Redis keširanje i horizontalna skalabilnost

Redis 7 koristi se za keš aplikacije (TTL po endpointu), pohranu sesija (JWT refresh tokeni sa selektivnim opozivom), pub/sub za događaje u realnom vremenu i redove za pozadinske poslove (Celery ili ARQ). Strategija keširanja je cache-aside s eksplicitnom invalidacijom — a ne slijepi TTL koji može posluživati zastarjele podatke.

  • JWT autentifikacija s access tokenom (15 min) + Redis refresh tokenom (7 dana)
  • Celery + Redis broker za asinhrone zadatke (generiranje PDF-a, e-pošta, uvozi)
  • Health check endpoint `/health` sa stanjem baze, Redisa i verzijom isporuke
  • Strukturirano JSON logiranje (structlog) — kompatibilno s Loki/Datadog/ELK

Prednosti i nedostaci

Prednosti

  • ASGI performanse uporedive s Node.js i Go na I/O operacijama.
  • OpenAPI dokumentacija automatski generirana iz type hintova.
  • Brza Pydantic v2 validacija, s jasnim 422 greškama.
  • Čitljiv kod, Python poznat većini timova.

Ograničenja

  • Python ostaje sporiji od Goa ili Rusta na zadacima koji opterećuju CPU.
  • async/await zahtijeva disciplinu — jedan blokirajući poziv zaustavlja cijelu petlju događaja.
  • Mlađi ekosistem od Djanga kad su u pitanju gotove ugrađene funkcije.
  • Nema ugrađenog ORM-a ni admina — birate ih posebno.

Brzi zaključak

Odaberite FastAPI za asinhrone REST API-je, mikroservise i backend za SPA/mobilne aplikacije. Za ekstremne CPU-intenzivne aplikacije ili monolite s gotovim adminom bolji izbor mogu biti Go odnosno Django.

Tabela specifikacija

MogućnostOgraničenje / pragTipična upotreba
Istovremenostasync/await, neblokirajući I/OCPU-intenzivni zadaci traže zasebne workereAPI-ji s mnogo poziva prema bazi/HTTP-u
Latencija< 5ms po endpointu s Redis kešomRaste sa serijalizacijom velikih payloadaSaaS, mobilni, backend u realnom vremenu
Validacija i dokumentacijaPydantic v2 + OpenAPI 3.1 automatskiSložene sheme povećavaju vrijeme pokretanjaJavni API-ji sa Swagger/ReDoc
Tipični trošakOpen-source, radi na 1 vCPUHorizontalno skaliranje traži više procesaOd MVP-a do produkcije

FastAPI naspram alternativa

KriterijFastAPIDjango / Express
Asinhrone performanseOdlične (izvorni ASGI)Django djelimično, Express dobro
Automatska OpenAPI dokumentacijaDa, iz type hintovaTraži dodatne pakete
Ugrađeni admin / ORMNe (birate posebno)Django: da; Express: ne

Često postavljana pitanja

Je li FastAPI brži od Djanga?

Da, za I/O. FastAPI radi asinhrono na ASGI-ju, pa obrađuje mnogo više istovremenih zahtjeva s pozivima prema bazi/HTTP-u od klasičnog sinhronog Djanga. Django, međutim, ima više ugrađenih funkcija.

Za šta FastAPI nije pogodan?

Za zadatke koji jako opterećuju CPU (obrada slika, teški numerički proračuni) Python je sporiji od Goa ili Rusta; takve zadatke prebacujete na zasebne workere. Također nema gotov admin kao Django.

Treba li FastAPI ORM?

Nije obavezno. Koristimo SQLAlchemy 2.0 async s Alembicom za migracije, ali možete pisati čisti SQL. ORM nije uključen u paket, pa ga birate po projektu.

Kako skalirati FastAPI backend?

Horizontalno: pokrenite više Uvicorn procesa pod Gunicornom iza load balancera, s Redis kešom i teškim zadacima prebačenim na Celery. Stateless dizajn omogućava dodavanje instanci po potrebi.

4b2b.net
Poslovni ekosistem
4conta.ro
Računovodstvo
4invoices.net
Aplikacija za fakturisanje
4expenses.net
Upravljanje troškovima
4notify.net
Obavještenja
4hosting.net
Hosting
4database.net
Baze podataka
4buildsite.net
Kreator web stranica
4myapp.net
Kreator aplikacija
4avatars.net
AI avatari
4chaty.net
AI chatbot
4webagency.net
Softver za web agencije
4softedu.net
Web stranice za obrazovanje
4softcrm.net
CRM platforma
4softerp.net
ERP sistem
4softhr.net
Upravljanje ljudskim resursima
4mystaff.net
Portal za osoblje
4myprojects.net
Menadžer projekata
4mycontracts.net
Ugovori
4docs.net
Upravljanje dokumentima
4appointments.net
Zakazivanja
4marketingonline.net
Marketing
4insurance.net
Osiguranje
4property.net
Nekretnine
4lawyers.net
Pravni softver
4mygarage.net
Autoservis
4driving.net
Autoškole
4fleet.net
Upravljanje voznim parkom
4myevents.net
Događaji
4therapy.net
Terapija
4clinics.net
Klinike
4dental.net
Stomatološke ordinacije
4restaurants.net
Restorani
4beautify.net
Saloni ljepote
4gym.net
Fitness centri
4guards.net
Zaštitarske firme
4softvet.net
Veterinarske ambulante
4softauto.net
Softver za auto-biznis
4construct.net
Građevinske firme
4marketplace.net
Marketplace
4shopy.net
Online trgovina
4pricing.net
Poređenje cijena
4salefood.net
Dostava hrane
4rentify.net
Iznajmljivanje
4transports.net
Prijevoz
4agencytravel.net
Turistička agencija
4hotel.net
Upravljanje hotelima
4ong.net
Upravljanje NVO-ima