Backend Python & FastAPI — API modern yang skalabel

← Beranda
Backend & API

Backend Python & FastAPI — API modern yang skalabel

FastAPI adalah framework Python acuan untuk REST API asinkron. Ia memadukan type hints Python native dengan validasi Pydantic otomatis, dokumentasi OpenAPI yang dihasilkan otomatis, dan server ASGI untuk I/O asinkron — tanpa mengorbankan keterbacaan kode.

FastAPI — framework Python untuk API asinkron

FastAPI berjalan di Uvicorn (server ASGI) dengan Gunicorn untuk multi-proses di produksi. Endpoint sederhana yang membaca dari cache Redis melewati query database untuk data yang sudah di-cache. Dependency Injection native memungkinkan pengujian terisolasi pada lapisan mana pun tanpa mock yang rumit: autentikasi, sesi database, rate limiting — masing-masing adalah dependency yang dapat diinjeksi.

Dokumentasi OpenAPI 3.1 dihasilkan otomatis dari type hints — Swagger UI dan ReDoc tersedia di `/docs` dan `/redoc` pada lingkungan pengembangan. Skema Pydantic v2 (validator berbasis Rust) memvalidasi request dan response. Setiap field yang tidak valid mengembalikan 422 dengan pesan error yang jelas dan terlokalisasi.

  • async/await native — I/O non-blocking pada semua operasi DB dan HTTP
  • BackgroundTasks untuk operasi pasca-respons (email, webhook, log)
  • Dukungan WebSocket native untuk fitur real-time (chat, notifikasi)
  • Rate limiting dengan slowapi (berbasis limits) — per-IP dan per-pengguna
  • CORS, kompresi (gzip/brotli), request ID, middleware pengukur waktu

PostgreSQL, SQLAlchemy, dan Alembic

Kami memakai SQLAlchemy 2.0 async (driver asyncpg) untuk semua operasi DB. Model didefinisikan dengan tipe Mapped — type-safe, tanpa string. Query kompleks ditulis dengan SQLAlchemy Core (dicek saat kompilasi) atau SQL murni lewat `text()` dengan bind parameter — tidak pernah interpolasi string (pencegahan SQLi menyeluruh).

Migrasi Alembic dihasilkan otomatis dari perubahan model dan ditinjau manual sebelum diterapkan. Setiap migrasi memiliki `upgrade()` dan `downgrade()` yang telah diuji. Di produksi, migrasi dijalankan di CI sebelum deploy — database selalu sinkron dengan kode. Connection pooling lewat asyncpg dengan ukuran pool yang dapat dikonfigurasi per layanan.

  • Row-level locking dengan `SELECT ... FOR UPDATE` untuk operasi konkuren yang kritis
  • Pencarian teks lengkap dengan pg_trgm dan tsvector — tanpa Elasticsearch untuk kasus sederhana
  • JSONB untuk data semi-terstruktur dengan indeks GIN
  • Tabel partisi untuk tabel dengan jutaan baris (log, event)

Caching Redis dan skalabilitas horizontal

Redis 7 dipakai untuk cache aplikasi (TTL per endpoint), penyimpanan sesi (refresh token JWT dengan pencabutan selektif), pub/sub untuk event real-time, dan antrean untuk job latar belakang (Celery atau ARQ). Strategi caching-nya cache-aside dengan invalidasi eksplisit — bukan TTL buta yang bisa menyajikan data usang.

  • Autentikasi JWT dengan access token (15 menit) + refresh token Redis (7 hari)
  • Celery + broker Redis untuk tugas asinkron (pembuatan PDF, email, impor)
  • Endpoint health check `/health` dengan status DB, Redis, dan versi deploy
  • Logging JSON terstruktur (structlog) — kompatibel dengan Loki/Datadog/ELK

Kelebihan dan keterbatasan

Kelebihan

  • Async I/O native di ASGI untuk panggilan DB dan HTTP.
  • Dokumentasi OpenAPI dihasilkan otomatis dari type hints.
  • Validasi Pydantic v2 yang cepat, dengan error 422 yang jelas.
  • Kode mudah dibaca, Python akrab bagi sebagian besar tim.

Keterbatasan

  • Python tetap lebih lambat dari Go atau Rust pada tugas intensif CPU.
  • async/await menuntut disiplin — satu panggilan blocking menghentikan seluruh event loop.
  • Ekosistem lebih muda dibanding Django untuk fitur lengkap bawaan.
  • Tidak ada ORM atau admin bawaan — Anda memilihnya secara terpisah.

Kesimpulan singkat

Pilih FastAPI untuk REST API asinkron, microservice, dan backend untuk SPA/mobile. Untuk aplikasi yang sangat terikat CPU atau monolit dengan admin siap pakai, masing-masing Go atau Django bisa lebih cocok.

Tabel spesifikasi

KemampuanBatas / ambangPenggunaan umum
Konkurensiasync/await, I/O non-blockingTugas terikat CPU membutuhkan worker terpisahAPI dengan banyak panggilan DB/HTTP
LatensiEndpoint berbasis cache RedisBertambah seiring serialisasi payload besarSaaS, mobile, backend real-time
Validasi & dokumentasiPydantic v2 + OpenAPI 3.1 otomatisSkema kompleks menambah waktu startupAPI publik dengan Swagger/ReDoc
Biaya umumOpen-source, berjalan di 1 vCPUPenskalaan horizontal butuh lebih banyak prosesDari MVP hingga produksi

FastAPI vs alternatif

KriteriaFastAPIDjango / Express
Kinerja asinkronSangat baik (ASGI native)Django sebagian, Express baik
Dokumentasi OpenAPI otomatisYa, dari type hintsButuh paket tambahan
Admin / ORM bawaanTidak (pilih terpisah)Django: ya; Express: tidak

Pertanyaan yang sering diajukan

Apakah FastAPI lebih cepat dari Django?

Ya untuk I/O. FastAPI berjalan asinkron di ASGI, sehingga menangani jauh lebih banyak request konkuren dengan panggilan DB/HTTP dibanding Django sinkron klasik. Namun Django memiliki lebih banyak fitur bawaan.

Untuk apa FastAPI kurang cocok?

Untuk tugas yang sangat terikat CPU (pemrosesan gambar, komputasi numerik berat), Python lebih lambat dari Go atau Rust; tugas itu dipindahkan ke worker terpisah. FastAPI juga tidak memiliki admin siap pakai seperti Django.

Apakah FastAPI membutuhkan ORM?

Tidak wajib. Kami memakai SQLAlchemy 2.0 async dengan Alembic untuk migrasi, tetapi Anda bisa menulis SQL murni. ORM tidak disertakan, sehingga Anda memilihnya per proyek.

Bagaimana cara menskalakan backend FastAPI?

Secara horizontal: jalankan beberapa proses Uvicorn di bawah Gunicorn di balik load balancer, dengan cache Redis dan tugas berat dipindahkan ke Celery. Desain stateless memungkinkan Anda menambah instance sesuai kebutuhan.

4b2b.net
Ekosistem Bisnis
4conta.ro
Akuntansi
4invoices.net
Aplikasi Faktur
4expenses.net
Manajemen Pengeluaran
4notify.net
Notifikasi
4hosting.net
Hosting
4database.net
Basis Data
4buildsite.net
Pembuat Situs Web
4myapp.net
Pembuat Aplikasi
4avatars.net
Avatar AI
4chaty.net
Chatbot AI
4webagency.net
Perangkat Lunak Agensi Web
4softedu.net
Situs Web Pendidikan
4softcrm.net
Platform CRM
4softerp.net
Sistem ERP
4softhr.net
Manajemen SDM
4mystaff.net
Portal Karyawan
4myprojects.net
Manajer Proyek
4mycontracts.net
Kontrak
4docs.net
Manajemen Dokumen
4appointments.net
Janji Temu
4marketingonline.net
Pemasaran
4insurance.net
Asuransi
4property.net
Properti
4lawyers.net
Perangkat Lunak Hukum
4mygarage.net
Bengkel Mobil
4driving.net
Sekolah Mengemudi
4fleet.net
Manajemen Armada
4myevents.net
Acara
4therapy.net
Terapi
4clinics.net
Klinik
4dental.net
Praktik Dokter Gigi
4restaurants.net
Restoran
4beautify.net
Salon Kecantikan
4gym.net
Pusat Kebugaran
4guards.net
Perusahaan Keamanan
4softvet.net
Klinik hewan
4softauto.net
Perangkat lunak bisnis otomotif
4construct.net
Perusahaan Konstruksi
4marketplace.net
Marketplace
4shopy.net
Toko Online
4pricing.net
Perbandingan Harga
4salefood.net
Pesan Antar Makanan
4rentify.net
Penyewaan
4transports.net
Transportasi
4agencytravel.net
Agen Perjalanan
4hotel.net
Manajemen Hotel
4ong.net
Manajemen LSM