Technológie

← Domov
Backend a API

Backend Python a FastAPI — moderné a škálovateľné API

FastAPI je referenčný framework Pythonu pre asynchrónne REST API. Spája natívne type hints Pythonu s automatickou validáciou Pydantic, automaticky generovanou dokumentáciou OpenAPI a výkonom ASGI porovnateľným s Node.js — bez obetovania čitateľnosti kódu.

FastAPI — najrýchlejší framework Pythonu

FastAPI beží na Uvicorne (ASGI server) s Gunicornom pre viacprocesové nasadenie v produkcii. Jednoduchý endpoint čítajúci z cache Redis nevykonáva pri zásahu do cache dotaz do databázy. Natívne Dependency Injection umožňuje izolované testovanie ľubovoľnej vrstvy bez zložitých mockov: autentifikácia, databázová session, rate limiting — každé z nich je injektovateľná závislosť.

Dokumentácia OpenAPI 3.1 sa generuje automaticky z type hints — Swagger UI a ReDoc sú dostupné na `/docs` a `/redoc` vo vývoji. Schéma Pydantic v2 (validátor postavený na Ruste) validuje požiadavky a odpovede 10–20-krát rýchlejšie ako Pydantic v1. Každé neplatné pole vráti 422 s jasnými, lokalizovanými chybovými hláseniami.

  • Natívne async/await — neblokujúce I/O pri všetkých operáciách s DB a HTTP
  • BackgroundTasks pre operácie po odoslaní odpovede (e-mail, webhook, log)
  • Natívna podpora WebSocket pre funkcie v reálnom čase (chat, notifikácie)
  • Rate limiting so slowapi (postavené na limits) — na IP aj na používateľa
  • Middleware CORS, kompresia (gzip/brotli), request ID, timing

PostgreSQL, SQLAlchemy a Alembic

Na všetky operácie s DB používame SQLAlchemy 2.0 async (ovládač asyncpg). Modely sú definované pomocou Mapped types — typovo bezpečne, bez reťazcov. Zložité dotazy píšeme v SQLAlchemy Core (kontrolované pri kompilácii) alebo v čistom SQL cez `text()` s bind parametrami — nikdy cez interpoláciu reťazcov (úplná prevencia SQLi).

Migrácie Alembic sa automaticky generujú zo zmien modelu a pred aplikovaním sa manuálne revidujú. Každá migrácia má otestované `upgrade()` aj `downgrade()`. V produkcii migrácie bežia v CI pred nasadením — databáza je vždy v synchronizácii s kódom. Connection pooling cez asyncpg s veľkosťou poolu konfigurovateľnou pre každú službu.

  • Row-level locking cez `SELECT ... FOR UPDATE` pre kritické súbežné operácie
  • Full-text search s pg_trgm a tsvector — bez Elasticsearch pre jednoduché prípady
  • JSONB pre polo-štruktúrované dáta s indexovaním GIN
  • Partition tables pre tabuľky s miliónmi riadkov (logy, udalosti)

Cache Redis a horizontálne škálovanie

Redis 7 sa používa pre aplikačnú cache (TTL pre každý endpoint), session store (JWT refresh tokeny so selektívnym odvolaním), pub/sub pre udalosti v reálnom čase a fronty pre úlohy na pozadí (Celery alebo ARQ). Stratégiou cachovania je cache-aside s explicitnou invalidáciou — nie slepé TTL, ktoré môže servírovať zastarané dáta.

  • Autentifikácia JWT s access tokenom (15 min) + refresh tokenom v Redis (7 dní)
  • Celery + Redis broker pre asynchrónne úlohy (generovanie PDF, e-maily, importy)
  • Health check endpoint `/health` so stavom DB, Redis a verziou nasadenia
  • Štruktúrované JSON logovanie (structlog) — kompatibilné s Loki/Datadog/ELK

Výhody a obmedzenia

Výhody

  • Výkon ASGI porovnateľný s Node.js a Go pri I/O.
  • Dokumentácia OpenAPI automaticky generovaná z type hints.
  • Rýchla validácia Pydantic v2 s jasnými chybami 422.
  • Čitateľný kód, Python je pre väčšinu tímov známy.

Obmedzenia

  • Python je pri úlohách náročných na CPU stále pomalší ako Go alebo Rust.
  • async/await vyžaduje disciplínu — jedno blokujúce volanie zablokuje celý event loop.
  • Mladší ekosystém ako Django pri funkciách „batteries-included“.
  • Neobsahuje vstavaný ORM ani admin — vyberáte si ich samostatne.

Stručné zhrnutie

FastAPI zvoľte pre asynchrónne REST API, mikroslužby a backendy pre SPA/mobilné aplikácie. Pre extrémne CPU-bound aplikácie alebo monolity s hotovým adminom môžu byť vhodnejšie Go, respektíve Django.

Tabuľka špecifikácií

SchopnosťLimit / prahTypické použitie
Súbežnosťasync/await, neblokujúce I/OCPU-bound vyžaduje samostatných workerovAPI s množstvom volaní DB/HTTP
LatenciaNízka latencia na endpointoch s cache RedisRastie so serializáciou veľkých payloadovBackend SaaS, mobilné aplikácie, real-time
Validácia a dokumentáciaPydantic v2 + OpenAPI 3.1 automatickyZložitá schéma predlžuje čas spusteniaVerejné API so Swagger/ReDoc
Typické nákladyOpen-source, beží na 1 vCPUHorizontálne škálovanie vyžaduje viac procesovOd MVP po produkciu

FastAPI vs alternatívy

KritériumFastAPIDjango / Express
Async výkonVýborný (natívne ASGI)Django čiastočný, Express dobrý
Automatická dokumentácia OpenAPIÁno, z type hintsVyžaduje ďalšie balíky
Vstavaný admin / ORMNie (vyberáte samostatne)Django: áno; Express: nie

Často kladené otázky

Je FastAPI rýchlejší ako Django?

Áno pri I/O. FastAPI beží asynchrónne na ASGI, takže pri volaniach DB/HTTP zvláda omnoho viac súbežných požiadaviek ako klasický synchrónny Django. Django má však viac vstavaných funkcií.

Na čo FastAPI nie je vhodný?

Pri úlohách silno náročných na CPU (spracovanie obrázkov, ťažké numerické výpočty) je Python pomalší ako Go alebo Rust; tie presuniete na samostatných workerov. A nemá hotový admin ako Django.

Potrebuje FastAPI ORM?

Nie nevyhnutne. Používame SQLAlchemy 2.0 async s Alembicom na migrácie, ale môžete písať čisté SQL. ORM nie je súčasťou, takže si ho vyberiete podľa projektu.

Ako škálovať backend FastAPI?

Horizontálne: spustíte viac procesov Uvicorn pod Gunicornom, za load balancerom, s cache Redis a ťažkými úlohami presunutými na Celery. Stateless dizajn umožňuje pridávať inštancie podľa potreby.

4b2b.net
Podnikový ekosystém
4conta.ro
Účtovníctvo
4invoices.net
Aplikácia na fakturovanie
4expenses.net
Správa výdavkov
4notify.net
Notifikácie
4hosting.net
Hosting
4database.net
Databázy
4buildsite.net
Tvorba webových stránok
4myapp.net
Tvorba aplikácií
4avatars.net
AI avatary
4chaty.net
AI chatbot
4webagency.net
Softvér pre webové agentúry
4softedu.net
Weby pre vzdelávanie
4softcrm.net
CRM platforma
4softerp.net
ERP systém
4softhr.net
Riadenie ľudských zdrojov
4mystaff.net
Portál zamestnancov
4myprojects.net
Manažér projektov
4mycontracts.net
Zmluvy
4docs.net
Správa dokumentov
4appointments.net
Rezervácie
4marketingonline.net
Marketing
4insurance.net
Poistenie
4property.net
Reality
4lawyers.net
Právny softvér
4mygarage.net
Autoservis
4driving.net
Autoškoly
4fleet.net
Správa vozového parku
4myevents.net
Podujatia
4therapy.net
Terapia
4clinics.net
Kliniky
4dental.net
Zubné ambulancie
4restaurants.net
Reštaurácie
4beautify.net
Salón krásy
4gym.net
Fitness centrá
4guards.net
Bezpečnostné firmy
4softvet.net
Veterinárne ambulancie
4softauto.net
Softvér pre autobiznis
4construct.net
Stavebné firmy
4marketplace.net
Trhovisko
4shopy.net
Online obchod
4pricing.net
Porovnanie cien
4salefood.net
Rozvoz jedla
4rentify.net
Prenájom
4transports.net
Doprava
4agencytravel.net
Cestovná agentúra
4hotel.net
Správa hotelov
4ong.net
Sprava NNO