Apa Itu Starlette? Framework ASGI Ringan di Balik FastAPI
Halo DomaiNesians! Di balik pesatnya adopsi FastAPI dan aplikasi Python asynchronous, ada satu framework penting yang sering terlewat dari perhatian developer, yaitu Starlette. Meskipun namanya tidak sepopuler FastAPI, namun Starlette adalah salah satu fondasi utama bagi banyak aplikasi ASGI modern.
Pada artikel kali ini kita akan membahas apa itu Starlette secara lengkap, mulai dari konsep dasar, perannya dalam ekosistem ASGI, fitur utama, hingga kapan sebaiknya kita menggunakan Starlette dibanding framework lain.
Apa Itu Starlette?
Starlette adalah framework web ASGI ringan dan minimalis yang ditulis menggunakan Python. Starlette dirancang untuk membangun aplikasi web dan API asynchronous dengan performa tinggi dan overhead serendah mungkin.
Starlette adalah framework yang berfokus pada core web functionality, seperti routing, middleware, request-response handling, WebSocket, dan background task. Framework ini tidak memaksakan struktur besar atau fitur tambahan yang kompleks, sehingga developer bisa memiliki kontrol penuh atas arsitektur aplikasinya.
Starlette sering digunakan sebagai:
- Framework inti untuk aplikasi ASGI ringan
- Fondasi framework lain seperti FastAPI
- Solusi custom backend untuk microservices
Peran dan Fungsi Starlette dalam Ekosistem ASGI
Untuk memahami apa itu Starlette secara utuh, perlu dilihat bagaimana ia ditempatkan dalam arsitektur ASGI dan apa fungsi utamanya di antara komponen lain pada backend Python modern.
Posisi Starlette di Arsitektur ASGI
Dalam arsitektur ini, setiap lapisan memiliki tanggung jawab yang berbeda:
- ASGI sebagai standar komunikasi antara server dan aplikasi async
- Uvicorn sebagai ASGI server yang menerima koneksi HTTP dan WebSocket
- Starlette sebagai ASGI framework yang menangani routing, middleware, request, dan response
- FastAPI sebagai framework tingkat lanjut yang dibangun di atas Starlette
Alur request berjalan dari Uvicorn ke Starlette, lalu diproses sesuai logika aplikasi. Jika menggunakan FastAPI, maka FastAPI memanfaatkan kemampuan Starlette untuk menangani proses di level bawah.
Fungsi Utama Starlette
Starlette adalah framework yang berfungsi sebagai fondasi aplikasi async dengan menyediakan komponen inti seperti:
- Sistem routing
- Middleware
- Manajemen request dan response
- Dukungan WebSocket
- Background task
Starlette tidak menyediakan ORM, admin panel, atau fitur besar lainnya karena memang tidak ditujukan sebagai framework “serba ada”. Fungsinya adalah menyediakan building block yang ringan dan solid untuk aplikasi asynchronous.
Starlette dan Asynchronous Programming
Karena sepenuhnya ASGI-native, Starlette adalah framework yang dirancang untuk memanfaatkan pola asynchronous secara maksimal dan mampu menangani beberapa hal berikut ini:
- HTTP request asynchronous
- WebSocket dan koneksi jangka panjang
- Background processing tanpa blocking
- Penanganan banyak koneksi secara concurrent dalam satu proses
Pendekatan ini membuat penggunaan resource jauh lebih efisien dibanding model berbasis thread per request, sehingga sangat cocok untuk aplikasi modern yang bersifat I/O-bound dan real-time.
Cara Kerja Starlette
Starlette adalah framework yang bekerja di atas konsep request–response yang mengikuti spesifikasi ASGI. Intinya, setiap request yang masuk diproses berdasarkan ASGI scope, yaitu struktur data yang membawa seluruh konteks koneksi (HTTP atau WebSocket) dari server ke aplikasi.
Secara umum, berikut adalah alur kerja Starlette:
- Client mengirim request HTTP atau membuka koneksi WebSocket.
- Uvicorn menerima koneksi tersebut sebagai ASGI server.
- Informasi koneksi dikemas dalam bentuk ASGI scope lalu diteruskan ke aplikasi Starlette.
- Router Starlette membaca path dan method untuk menentukan endpoint yang sesuai.
- Endpoint dijalankan secara async, memungkinkan proses I/O berjalan tanpa blocking.
- Starlette menyusun response dan mengirimkannya kembali melalui Uvicorn ke client.
Seluruh lifecycle ini dirancang non-blocking. Artinya, saat satu endpoint menunggu proses I/O (misalnya query database atau API eksternal), event loop tetap bisa melayani request lain. Inilah yang membuat Starlette sangat efisien dalam menangani banyak koneksi secara concurrent dalam satu proses.
5 Komponen Inti Starlette
Starlette adalah framework yang menyediakan sekumpulan komponen inti yang menjadi fondasi aplikasi ASGI. Komponen-komponen ini sengaja dibuat sederhana, eksplisit, dan fleksibel, sehingga developer bisa membangun arsitektur sesuai kebutuhan tanpa dibatasi opini framework.
1. Routing di Starlette
Sistem routing Starlette terlihat sederhana, tetapi sangat fleksibel untuk berbagai pola aplikasi. Fitur yang tersedia:
- Path parameter untuk menangkap nilai dinamis dari URL
- HTTP method handling (GET, POST, PUT, DELETE, dll.)
- Mount sub-application untuk memecah aplikasi menjadi beberapa modul
- Class-based endpoint untuk struktur kode yang lebih rapi
Routing inilah yang menjadi fondasi routing di FastAPI. Bedanya, di Starlette kamu berinteraksi langsung dengan API level rendahnya, sehingga kontrolnya lebih penuh.
2. Middleware di Starlette
Middleware memungkinkan penyisipan logic di antara proses request dan response. Posisi ini sangat strategis untuk menangani kebutuhan lintas endpoint. Contoh yang umum:
- Logging request dan response
- Authentication dan authorization
- Rate limiting
- Penanganan CORS
Starlette adalah framework yang mendukung middleware berbasis class maupun decorator, sehingga mudah disesuaikan dengan kebutuhan aplikasi.
3. Request dan Response Handling
Selain itu, Starlette adalah framework yang menyediakan objek Request dan Response yang eksplisit dan mudah diakses. Kamu bisa dengan mudah:
- Membaca header dan query parameter
- Mengambil body request
- Mengatur status code response
- Mengirim response dalam bentuk JSON, HTML, file, atau streaming
Pendekatan ini memberi kontrol penuh terhadap bagaimana data masuk dan keluar tanpa abstraksi berlebihan.
4. WebSocket di Starlette
Salah satu kekuatan utama Starlette adalah dukungan WebSocket yang terintegrasi langsung dengan lifecycle ASGI. Dengan API WebSocket yang sederhana, kamu bisa membangun:
- Aplikasi chat
- Live dashboard monitoring
- Notifikasi real-time
- Sistem komunikasi dua arah yang persisten
Semua ini dapat ditangani tanpa library tambahan karena sudah menjadi bagian inti Starlette.
5. Background Task
Starlette juga menyediakan mekanisme background task untuk pekerjaan ringan yang tidak perlu menahan response ke client. Contoh penggunaan:
- Mengirim email setelah request selesai
- Logging asinkron
- Post-processing data
Background task dijalankan setelah response dikirim, sehingga latency request utama tetap rendah dan user tidak perlu menunggu proses tambahan selesai.
Perbandingan Starlette dengan FastAPI dan Django
Memahami posisi Starlette akan lebih mudah jika dibandingkan langsung dengan dua framework yang sering berada di sekitarnya yaitu FastAPI dan Django. Ketiganya bisa berjalan di ekosistem ASGI, tetapi memiliki tujuan desain dan pengalaman developer yang sangat berbeda.
Starlette vs FastAPI
FastAPI sebenarnya dibangun di atas Starlette. Maksudnya, FastAPI menggunakan seluruh fondasi routing, middleware, dan request-response handling milik Starlette, lalu menambahkan layer fitur tingkat tinggi di atasnya.
Perbedaan utamanya ada pada level abstraksi:
- Starlette bersifat minimalis, fleksibel, dan low-level. Developer mengatur banyak hal sendiri.
- FastAPI bersifat high-level, produktif, dan opinionated. Banyak hal sudah disiapkan otomatis.
Dengan Starlette, kamu bebas menentukan cara validasi data, struktur aplikasi, dan integrasi library lain. Dengan FastAPI, kamu mendapatkan:
- Validasi data otomatis berbasis Pydantic
- Dokumentasi API otomatis (Swagger/OpenAPI)
- Dependency injection bawaan
- Struktur yang lebih terarah
Starlette memberi kebebasan penuh, sedangkan FastAPI memberi kenyamanan dan kecepatan development. Starlette cocok ketika kamu ingin kontrol penuh terhadap arsitektur. FastAPI cocok ketika kamu ingin membangun API dengan cepat tanpa memikirkan detail low-level.
Starlette vs Django
Jika dibandingkan dengan Django, perbedaannya jauh lebih kontras karena filosofi keduanya memang berbeda sejak awal. Django adalah framework monolit besar dengan fitur lengkap:
- ORM bawaan
- Admin panel
- Sistem autentikasi
- Struktur project yang sudah ditentukan
Sebaliknya, Starlette:
- Jauh lebih ringan
- Tidak menyediakan ORM atau admin
- Fokus pada async, WebSocket, dan real-time communication
- Memberi kebebasan penuh menentukan stack teknologi
Django sangat cocok untuk aplikasi monolit besar seperti sistem manajemen, portal, atau aplikasi bisnis yang kompleks. Starlette lebih cocok untuk service kecil, cepat, dan efisien seperti API, microservices, atau aplikasi real-time.
Kapan Sebaiknya Menggunakan Starlette?
Starlette adalah framework yang paling terasa manfaatnya ketika kamu membutuhkan fondasi ASGI yang ringan, cepat, dan tidak terlalu opinionated. Ia bukan framework yang mencoba menyediakan semua fitur, melainkan memberi komponen inti agar kamu bisa menyusun arsitektur sesuai kebutuhan. Starlette sangat cocok digunakan ketika:
- Membutuhkan framework yang ringan
Tidak ada ORM, tidak ada admin panel, tidak ada fitur besar yang membebani resource sejak awal.
- Tidak membutuhkan validasi data yang kompleks
Jika kebutuhan validasi sederhana atau ditangani oleh library lain, Starlette sudah lebih dari cukup tanpa layer tambahan.
- Membangun microservice kecil dan cepat
Service yang fokus pada satu fungsi spesifik akan sangat efisien jika dibangun langsung di atas Starlette.
- Membuat API internal
Untuk API yang tidak membutuhkan dokumentasi otomatis, skema validasi rumit, atau fitur high-level lainnya.
- Ingin kontrol penuh atas arsitektur
Kamu bebas menentukan ORM, auth system, struktur project, hingga cara integrasi library lain tanpa dibatasi pola bawaan framework.
Sebaliknya, untuk aplikasi besar dengan banyak endpoint publik, kebutuhan validasi ketat, dan dokumentasi API otomatis, menggunakan FastAPI biasanya lebih praktis dan mempercepat proses development.
Kelebihan dan Kekurangan Starlette
Starlette adalah framework yang dirancang sebagai ASGI framework yang minimalis dan fleksibel. Desain ini menghadirkan sejumlah keunggulan yang sangat terasa pada arsitektur modern, tetapi juga membawa beberapa konsekuensi yang perlu dipahami sebelum memilihnya.
Kelebihan Starlette
Beberapa hal yang menjadi kelebihan Starlette adalah:
- Ringan dan cepat
Tanpa fitur bawaan yang besar, Starlette memiliki startup time singkat dan penggunaan resource yang efisien.
- ASGI-native
Dirancang langsung mengikuti standar ASGI, sehingga sangat optimal untuk HTTP async, WebSocket, dan koneksi jangka panjang.
- Dukungan WebSocket bawaan
Membangun aplikasi real-time seperti chat, live dashboard, atau notifikasi menjadi jauh lebih sederhana.
- Fleksibel dan modular
Developer bebas menentukan ORM, sistem autentikasi, struktur project, dan library pendukung lain.
- Cocok untuk microservices
Karena ringan dan tidak opinionated, Starlette sangat ideal untuk service kecil yang fokus pada satu tanggung jawab.
Kekurangan Starlette
Di sisi lain, pendekatan minimalis ini juga berarti beberapa fitur tidak tersedia secara default:
- Tidak menyediakan validasi otomatis
Validasi data perlu ditangani sendiri atau menggunakan library tambahan.
- Tidak ada ORM bawaan
Semua integrasi database harus dipilih dan diatur sendiri.
- Lebih banyak boilerplate dibanding FastAPI
Beberapa hal yang otomatis di FastAPI perlu ditulis manual di Starlette.
Namun, bagi developer yang sudah berpengalaman dan ingin kontrol penuh terhadap arsitektur aplikasi, keterbatasan ini justru menjadi kelebihan karena tidak ada batasan dari framework.
Kesimpulan
Starlette adalah framework ASGI minimalis yang menjadi fondasi penting bagi ekosistem Python asynchronous. Dengan performa tinggi dan fleksibilitas maksimal, Starlette sangat cocok untuk microservices, API ringan, dan aplikasi real-time.
Untuk menjalankan Starlette secara optimal di production, kamu membutuhkan infrastruktur yang stabil dan scalable. Cloud VPS DomaiNesia siap mendukung deployment Starlette dengan performa tinggi, konfigurasi fleksibel, dan resource yang dapat disesuaikan dengan kebutuhan aplikasi modern kamu.




