Tehnologije

← Početna
Backend i API

Python i FastAPI backend — moderni i skalabilni API-ji

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

FastAPI — najbrži Python framework

FastAPI radi na Uvicorn-u (ASGI server) uz Gunicorn za rad sa više procesa u produkciji. Jednostavan endpoint koji čita iz Redis keša ne pristupa bazi podataka pri svakom zahtevu. Nativni Dependency Injection omogućava izolovano testiranje bilo kog sloja bez složenih mock-ova: autentifikacija, sesija baze podataka, rate limiting — svako je zavisnost koja se ubacuje.

OpenAPI 3.1 dokumentacija se generiše automatski iz type hints-a — Swagger UI i ReDoc dostupni su na `/docs` i `/redoc` u razvoju. Pydantic v2 šema (validator pisan u Rust-u) validira zahteve i odgovore 10–20 puta brže od Pydantic-a v1. Svako nevažeće 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 posle odgovora (email, webhook, log)
  • Nativna podrška za WebSocket za funkcije u realnom vremenu (čet, obaveštenja)
  • Rate limiting pomoću slowapi (zasnovan na limits) — po IP adresi i po korisniku
  • Middleware za CORS, kompresiju (gzip/brotli), ID zahteva, merenje 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 bezbedno, bez stringova. Složeni upiti pišu se u SQLAlchemy Core (provera pri kompajliranju) ili čistom SQL-u preko `text()` sa bind parametrima — nikada interpolacijom stringova (potpuna zaštita od SQLi).

Alembic migracije se automatski generišu iz promena modela i ručno pregledaju pre primene. Svaka migracija ima testirane `upgrade()` i `downgrade()`. U produkciji se migracije izvršavaju u CI-ju pre deploy-a — baza je uvek sinhronizovana sa kodom. Connection pooling preko asyncpg-a sa veličinom pool-a koja se podešava po servisu.

  • Zaključavanje na nivou reda pomoću `SELECT ... FOR UPDATE` za kritične konkurentne operacije
  • Full-text pretraga sa pg_trgm i tsvector — bez Elasticsearch-a za jednostavne slučajeve
  • JSONB za polustrukturisane podatke sa GIN indeksiranjem
  • Particionisane tabele za tabele sa milionima redova (logovi, događaji)

Redis keširanje i horizontalno skaliranje

Redis 7 koristimo za aplikativni keš (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 — ne slepi TTL koji može da servira zastarele 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, Redis-a i verzijom deploy-a
  • Strukturisano JSON logovanje (structlog) — kompatibilno sa Loki/Datadog/ELK

Prednosti i ograničenja

Prednosti

  • ASGI performanse uporedive sa Node.js-om i Go-om na I/O operacijama.
  • OpenAPI dokumentacija se automatski generiše iz type hints-a.
  • Brza Pydantic v2 validacija, sa jasnim 422 greškama.
  • Čitljiv kod, Python poznat većini timova.

Ograničenja

  • Python je i dalje sporiji od Go-a ili Rust-a na zadacima koji intenzivno opterećuju CPU.
  • async/await zahteva disciplinu — jedan blokirajući poziv blokira ceo event loop.
  • Mlađi ekosistem od Django-a za funkcije „sve u kompletu“.
  • Ne uključuje 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 ekstremno CPU-zahtevne aplikacije ili monolite sa gotovim adminom, Go odnosno Django mogu biti prikladniji.

Tabela specifikacija

MogućnostOgraničenje / pragTipična upotreba
Konkurentnostasync/await, neblokirajući I/OCPU-zahtevni zadaci traže zasebne workereAPI-ji sa mnogo poziva ka bazi/HTTP-u
LatencijaČitanje iz Redis keša bez pristupa baziRaste sa serijalizacijom velikih payload-aSaaS backend, mobilne aplikacije, realno vreme
Validacija i dokumentacijaPydantic v2 + automatski OpenAPI 3.1Složena šema produžava vreme pokretanjaJavni API-ji sa Swagger/ReDoc-om
Tipična cenaOpen-source, radi na 1 vCPUHorizontalno skaliranje traži više procesaOd MVP-a do produkcije

FastAPI naspram alternativa

KriterijumFastAPIDjango / Express
Async performanseOdlične (nativni ASGI)Django delimično, Express dobre
Automatska OpenAPI dokumentacijaDa, iz type hints-aZahteva dodatne pakete
Ugrađeni admin / ORMNe (birate zasebno)Django: da; Express: ne

Često postavljana pitanja

Da li je FastAPI brži od Django-a?

Da, na I/O operacijama. FastAPI radi asinhrono na ASGI-ju, pa obrađuje znatno više istovremenih zahteva 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 intenzivno opterećuju CPU (obrada slika, težak numerički proračun) Python je sporiji od Go-a ili Rust-a; njih prebacujete na zasebne workere. Takođe, ne dolazi sa gotovim adminom kao Django.

Da li FastAPI-ju treba ORM?

Ne obavezno. Koristimo SQLAlchemy 2.0 async sa Alembic-om za migracije, ali možete pisati i čist SQL. ORM nije uključen, pa ga birate prema projektu.

Kako skaliram FastAPI backend?

Horizontalno: pokrećete više Uvicorn procesa pod Gunicorn-om, iza load balancer-a, 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
Obaveštenja
4hosting.net
Hosting
4database.net
Baze podataka
4buildsite.net
Izrada sajtova
4myapp.net
Izrada aplikacija
4avatars.net
AI avatari
4chaty.net
AI čatbot
4webagency.net
Softver za veb agencije
4softedu.net
Sajtovi za obrazovanje
4softcrm.net
CRM platforma
4softerp.net
ERP sistem
4softhr.net
Upravljanje HR-om
4mystaff.net
Portal osoblja
4myprojects.net
Menadžer projekata
4mycontracts.net
Ugovori
4docs.net
Upravljanje dokumentima
4appointments.net
Zakazivanje
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
Salon lepote
4gym.net
Teretane
4guards.net
Firme obezbeđenja
4softvet.net
Ветеринарске амбуланте
4softauto.net
Софтвер за ауто-бизнис
4construct.net
Građevinske firme
4marketplace.net
Marketplejs
4shopy.net
Onlajn prodavnica
4pricing.net
Poređenje cena
4salefood.net
Dostava hrane
4rentify.net
Iznajmljivanje
4transports.net
Transport
4agencytravel.net
Turistička agencija
4hotel.net
Upravljanje hotelima
4ong.net
Upravljanje NVO