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 nativne Python tipske anotacije sa automatskom Pydantic validacijom, automatski generisanom OpenAPI dokumentacijom i ASGI performansama uporedivim sa Node.js — bez žrtvovanja čitljivosti koda.

FastAPI — najbrži Python framework

FastAPI radi na Uvicornu (ASGI server) sa Gunicornom za više procesa u produkciji. Jednostavan endpoint koji čita iz Redis keša odgovara za manje od 5 ms na standardnom hardveru. Nativni Dependency Injection omogućava izolovano testiranje bilo kog sloja bez složenih mockova: autentifikacija, sesija baze podataka, ograničavanje broja zahtjeva — sve je to dependency koji se ubacuje.

OpenAPI 3.1 dokumentacija automatski se generiše iz tipskih anotacija — Swagger UI i ReDoc dostupni su na `/docs` i `/redoc` u razvoju. Pydantic v2 šema (validator zasnovan na Rustu) validira zahtjeve i odgovore 10–20 puta brže nego Pydantic v1. Svako neispravno polje vraća 422 sa jasnim, lokalizovanim porukama o grešci.

  • Nativni async/await — neblokirajući I/O na svim operacijama sa bazom i HTTP-om
  • BackgroundTasks za operacije nakon odgovora (email, webhook, log)
  • Nativna podrška za WebSocket za funkcije u realnom vremenu (chat, obavještenja)
  • Ograničavanje broja zahtjeva sa slowapi (zasnovano na limits) — po IP adresi i po korisniku
  • CORS, kompresija (gzip/brotli), request ID, middleware za mjerenje vremena

PostgreSQL, SQLAlchemy i Alembic

Za sve operacije sa bazom koristimo SQLAlchemy 2.0 async (asyncpg drajver). Modeli se definišu pomoću Mapped tipova — tipski bezbjedno, bez stringova. Složeni upiti pišu se u SQLAlchemy Core (provjera u vrijeme kompajliranja) ili čistom SQL-u preko `text()` sa bind parametrima — nikada interpolacijom stringova (potpuna prevencija SQL injekcije).

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

  • Zaključavanje na nivou reda sa `SELECT ... FOR UPDATE` za kritične istovremene operacije
  • Pretraga punog teksta sa pg_trgm i tsvector — bez Elasticsearcha u jednostavnim slučajevima
  • JSONB za polustrukturirane podatke sa GIN indeksiranjem
  • Particionisane tabele za tabele sa milionima redova (logovi, događaji)

Redis keširanje i horizontalna skalabilnost

Redis 7 koristi se za keš aplikacije (TTL po endpointu), skladište 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 sa eksplicitnom invalidacijom — a ne slijepi TTL koji može poslužiti zastarjele podatke.

  • JWT autentifikacija sa access tokenom (15 min) + Redis refresh tokenom (7 dana)
  • Celery + Redis broker za asinhrone zadatke (generisanje PDF-a, email, uvozi)
  • Health check endpoint `/health` sa statusom baze, Redisa i verzijom isporuke
  • Strukturirani JSON logovi (structlog) — kompatibilni sa Loki/Datadog/ELK

Prednosti i mane

Prednosti

  • ASGI performanse uporedive sa Node.js i Go na I/O operacijama.
  • OpenAPI dokumentacija automatski generisana iz tipskih anotacija.
  • Brza Pydantic v2 validacija, sa jasnim 422 greškama.
  • Čitljiv kôd, Python poznat većini timova.

Ograničenja

  • Python je i dalje sporiji od Goa ili Rusta na zadacima koji opterećuju CPU.
  • async/await traži disciplinu — jedan blokirajući poziv zaustavlja cijelu event petlju.
  • Mlađi ekosistem od Djanga kad su u pitanju gotove funkcije.
  • Nema ugrađen ORM ni admin — birate ih zasebno.

Kratak zaključak

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

Tabela specifikacija

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

FastAPI naspram alternativa

KriterijumFastAPIDjango / Express
Asinhrone performanseOdlične (nativni ASGI)Django djelimično, Express dobro
Automatska OpenAPI dokumentacijaDa, iz tipskih anotacijaPotrebni su dodatni paketi
Ugrađeni admin / ORMNe (biraju se zasebno)Django: da; Express: ne

Česta pitanja

Da li je FastAPI brži od Djanga?

Da za I/O. FastAPI radi asinhrono na ASGI-ju, pa obrađuje daleko više istovremenih zahtjeva sa pozivima ka bazi/HTTP-u nego klasični sinhroni Django. 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đe nema gotov admin kao Django.

Da li FastAPI treba ORM?

Nije obavezan. Koristimo SQLAlchemy 2.0 async sa Alembicom za migracije, ali možete pisati i čist SQL. ORM nije u paketu, pa ga birate po projektu.

Kako skalirati FastAPI backend?

Horizontalno: pokrenite više Uvicorn procesa pod Gunicornom iza load balancera, uz Redis keš i teške zadatke prebačene 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 sajtova
4myapp.net
Kreator aplikacija
4avatars.net
AI avatari
4chaty.net
AI čatbot
4webagency.net
Softver za web agencije
4softedu.net
Web sajtovi za obrazovanje
4softcrm.net
CRM platforma
4softerp.net
ERP sistem
4softhr.net
Upravljanje ljudskim resursima
4mystaff.net
Portal za zaposlene
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
Fitnes 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 prodavnica
4pricing.net
Poređenje cijena
4salefood.net
Dostava hrane
4rentify.net
Iznajmljivanje
4transports.net
Prevoz
4agencytravel.net
Turistička agencija
4hotel.net
Upravljanje hotelima
4ong.net
Upravljanje NVO-ima