Kalau Anda pernah menggunakan FastAPI, kemungkinan besar Anda juga pernah bersinggungan dengan Starlette. Starlette adalah framework dan toolkit ASGI yang ringan, modular, dan dirancang untuk membangun aplikasi web asynchronous di Python.
Starlette bukan hanya fondasi yang digunakan FastAPI, tetapi juga bisa digunakan secara langsung ketika developer membutuhkan kontrol lebih besar terhadap arsitektur aplikasi.
Artikel ini saya buat untuk membantu Anda memahami apa itu Starlette, cara kerjanya, hubungannya dengan FastAPI, serta kapan Starlette cocok digunakan dalam pengembangan aplikasi Python.
Also Read
Ringkasan Cepat
- Starlette adalah framework atau toolkit ASGI yang ringan untuk membangun layanan web async di Python.
- Starlette mendukung hal-hal inti seperti routing, middleware, WebSocket, background tasks, serta startup/shutdown events.
- ASGI adalah spesifikasi antarmuka antara server protokol (web server) dan aplikasi Python agar bisa menangani HTTP sekaligus protokol lain seperti WebSocket.
Apa Itu Starlette?
Starlette adalah framework dan toolkit ASGI yang ringan untuk membangun aplikasi web asynchronous menggunakan Python. Starlette dirancang agar sederhana, modular, dan cukup fleksibel untuk digunakan sebagai framework maupun kumpulan komponen ASGI.
Namun, Starlette tidak mencoba menjadi framework yang menyediakan semuanya. Fokusnya adalah menyediakan building blocks penting untuk aplikasi web, seperti:
- Routing
- Middleware
- Request dan response
- WebSocket
- Background tasks
- Startup dan shutdown events
- Testing
- Static files dan streaming response
Karena desainnya modular, developer bisa menggunakan seluruh framework atau hanya mengambil komponen tertentu sesuai kebutuhan.
Apa Itu ASGI dan Kenapa Penting?
ASGI (Asynchronous Server Gateway Interface) adalah standar yang menjadi penghubung antara server dan aplikasi Python, terutama untuk aplikasi yang membutuhkan komunikasi asynchronous.
Berbeda dari pendekatan WSGI yang berfokus pada pola request dan response HTTP, ASGI dirancang untuk menangani berbagai pola komunikasi, termasuk HTTP, HTTP/2, dan WebSocket.
Sederhananya, ASGI memungkinkan aplikasi Python menangani:
- Request HTTP biasa
- Komunikasi asynchronous
- WebSocket
- Event yang berlangsung selama koneksi aktif
Inilah salah satu alasan Starlette cocok digunakan untuk aplikasi web modern yang membutuhkan komunikasi real-time.
Starlette Dipakai untuk Apa?
Starlette cocok digunakan ketika Anda membutuhkan framework web yang ringan tetapi tetap memiliki fitur penting untuk aplikasi asynchronous.
Beberapa contoh penggunaannya:
- API atau service internal
- Microservices
- Aplikasi real-time
- Dashboard dengan WebSocket
- Sistem notifikasi
- Aplikasi chat
- Service yang membutuhkan kontrol lebih besar terhadap stack web
Kelebihan Starlette adalah fiturnya cukup lengkap untuk digunakan langsung, tetapi tetap minimal sehingga developer memiliki banyak kebebasan dalam menentukan komponen aplikasi.
Komponen dan Fitur Utama Starlette
Starlette menyediakan berbagai komponen yang umum dibutuhkan dalam pengembangan aplikasi web modern.
1. Routing
Routing digunakan untuk menentukan handler yang akan menangani URL tertentu.
Misalnya:
//users/users/{username}
Starlette menyediakan Route, parameter URL, Mount, hingga WebSocketRoute untuk kebutuhan routing HTTP maupun WebSocket.
2. Middleware
Middleware memungkinkan Anda menambahkan fungsi tertentu yang berlaku di berbagai endpoint.
Contohnya:
- CORS
- Logging
- HTTPS redirect
- GZip
- Session
- Security headers
Starlette juga mendukung pembuatan middleware sendiri menggunakan interface ASGI.
3. Request dan Response
Starlette menyediakan komponen untuk menangani request dan menghasilkan berbagai jenis response.
Misalnya:
- JSON response
- HTML response
- Streaming response
- File response
- Static files
Dengan begitu, developer tidak perlu membangun mekanisme HTTP dari awal.
4. WebSocket
Starlette memiliki dukungan WebSocket bawaan sehingga cocok untuk aplikasi yang membutuhkan komunikasi dua arah secara real-time.
Contohnya:
- Live chat
- Notifikasi real-time
- Live dashboard
- Status aplikasi secara langsung
5. Background Tasks
Starlette menyediakan BackgroundTask untuk menjalankan pekerjaan tertentu setelah response dikirim ke pengguna.
Contohnya:
- Mengirim email
- Membuat notifikasi
- Menyimpan aktivitas
- Menjalankan proses ringan lainnya
Namun, background task bawaan ini berjalan di dalam proses aplikasi, sehingga lebih cocok untuk pekerjaan ringan daripada pekerjaan berat atau sistem job queue berskala besar.
6. Startup dan Shutdown
Lifecycle events dapat digunakan untuk menyiapkan resource ketika aplikasi dimulai dan melakukan cleanup ketika aplikasi berhenti.
Contohnya:
- Membuka koneksi database
- Menyiapkan cache
- Membuat client ke service lain
- Menutup koneksi saat aplikasi berhenti
7. Test Client
Starlette menyediakan test client berbasis httpx sehingga endpoint dapat diuji tanpa harus menjalankan server eksternal secara terpisah.
Contoh Starlette Paling Sederhana
Untuk membuat aplikasi sederhana, Anda dapat membuat objek Starlette, menentukan route, kemudian menjalankannya menggunakan ASGI server seperti Uvicorn.
Contohnya:
from starlette.applications import Starlette
from starlette.responses import JSONResponse
from starlette.routing import Route
async def homepage(request):
return JSONResponse({"hello": "world"})
app = Starlette(
debug=True,
routes=[
Route("/", homepage),
],
)Kemudian jalankan menggunakan:
uvicorn main:appSecara sederhana, alurnya menjadi:
Client → Uvicorn → Starlette → Handler → Response
Uvicorn bertugas sebagai ASGI server, sedangkan Starlette menangani routing dan kebutuhan web aplikasi.
Starlette vs FastAPI vs Django
Ketiga framework ini memiliki fokus yang berbeda. Cara paling mudah membedakannya adalah dari tingkat abstraksi dan kelengkapan fiturnya.
Starlette
Fokus: framework web ASGI yang ringan dan fleksibel.
Cocok jika Anda:
- Membutuhkan kontrol lebih besar
- Ingin stack yang minimal
- Membuat microservices
- Membutuhkan WebSocket
- Ingin menentukan sendiri komponen aplikasi
FastAPI
Fokus: pengembangan API dengan pengalaman developer yang lebih praktis.
FastAPI dibangun di atas Starlette dan menambahkan berbagai fitur untuk pengembangan API, termasuk validasi data dan dokumentasi API otomatis.
Cocok jika Anda:
- Membuat REST API
- Membutuhkan validasi data
- Membutuhkan OpenAPI
- Ingin proses development lebih cepat
Django
Fokus: framework web yang lebih lengkap.
Django cocok untuk aplikasi yang membutuhkan banyak fitur bawaan seperti:
- ORM
- Admin panel
- Authentication
- Struktur aplikasi yang lebih lengkap
Jadi, Pilih yang Mana?
- Gunakan Starlette jika Anda membutuhkan fondasi ASGI yang ringan dan fleksibel.
- Gunakan FastAPI jika fokus utama Anda adalah membangun API dengan fitur produktivitas yang lebih lengkap.
- Gunakan Django jika Anda membutuhkan framework web yang lebih komprehensif dengan banyak fitur bawaan.
Kapan Sebaiknya Menggunakan Starlette?
Starlette cocok ketika Anda ingin membangun aplikasi asynchronous tanpa terlalu banyak abstraksi dari framework.
Beberapa skenario yang cocok antara lain:
- Microservices
- API internal
- Service asynchronous
- Aplikasi WebSocket
- Live dashboard
- Sistem notifikasi real-time
- Aplikasi yang membutuhkan kontrol terhadap middleware dan routing
Sebaliknya, Starlette mungkin kurang cocok jika Anda mencari framework “baterai lengkap” yang sudah menyediakan ORM, admin panel, dan berbagai fitur aplikasi bisnis secara bawaan.
Kelebihan dan Kekurangan Starlette
Kelebihan
- Ringan dan memiliki sedikit dependency.
- Mendukung ASGI secara native.
- Mendukung WebSocket.
- Memiliki middleware yang cukup lengkap.
- Mendukung background tasks.
- Modular dan fleksibel.
- Bisa digunakan sebagai framework maupun toolkit.
Kekurangan
- Tidak menyediakan fitur selengkap Django.
- Tidak memiliki ORM bawaan.
- Developer perlu memilih dan mengatur beberapa komponen sendiri.
- Untuk API yang membutuhkan banyak fitur otomatis, FastAPI bisa lebih praktis.
Jadi, kekuatan Starlette justru ada pada kesederhanaannya. Anda mendapatkan fondasi web yang kuat tanpa harus mengikuti terlalu banyak opini dari framework.
Checklist Sebelum Deploy Starlette ke Produksi
Sebelum aplikasi Starlette digunakan di production, jangan hanya fokus pada kode. Infrastruktur dan konfigurasi deployment juga perlu diperhatikan.
Gunakan checklist berikut:
- Gunakan ASGI server seperti Uvicorn.
- Siapkan logging yang jelas.
- Gunakan request ID untuk membantu tracing.
- Atur CORS sesuai kebutuhan.
- Siapkan rate limiting jika diperlukan.
- Simpan secret menggunakan secrets management.
- Buat health check endpoint.
- Lakukan load testing sederhana.
- Siapkan monitoring dan alerting.
- Pastikan konfigurasi production tidak menggunakan debug mode.
Dengan checklist tersebut, proses deployment akan lebih siap dan lebih mudah dipantau ketika aplikasi mulai menerima traffic.
Starlette Membutuhkan Infrastruktur yang Mudah Dikontrol
Ketika aplikasi Starlette atau FastAPI mulai digunakan untuk API dan microservices, Anda biasanya membutuhkan server yang memberikan kontrol terhadap environment aplikasi, reverse proxy, TLS, monitoring, hingga scaling.
Salah satu opsi yang bisa dipertimbangkan adalah VPS KVM dari Rumahweb. Layanannya menggunakan virtualisasi KVM dengan resource terisolasi, SSD storage, DDoS protection, serta dua availability zone. Rumahweb juga mencantumkan jaminan SLA uptime 99,9%, sertifikasi ISO 27001, dan support 24/7.
FAQ
Keduanya. Starlette bisa dipakai sebagai framework lengkap, atau sebagai toolkit ASGI karena komponennya modular.
Tidak. FastAPI dibangun di atas Starlette dan menambahkan fitur high-level seperti validasi data dan dokumentasi OpenAPI.
Starlette butuh ASGI server untuk berjalan, misalnya Uvicorn.
Ya, Starlette punya dukungan WebSocket bawaan.
Jika Anda butuh framework monolit dengan ORM dan admin panel bawaan, Django biasanya lebih cocok.
Kesimpulan
Starlette adalah framework ASGI berbasis Python async yang sangat ringan dan fleksibel untuk membangun layanan web modern. Solusi ini ideal bagi Anda yang menginginkan kontrol penuh terhadap struktur kode dengan beban sistem (overhead) yang minimal.
Kendati demikian, jika prioritas utama Anda adalah membangun API publik dengan cepat dan efisien, FastAPI sering kali menjadi pilihan yang lebih praktis. Gunakan Starlette saat proyek membutuhkan fondasi yang minimalis dan tim siap merakit komponen pendukung lainnya secara mandiri sesuai kebutuhan.







