Mengapa Memilih FastAPI daripada Flask?
Untuk membantu Anda memulai dengan cepat menggunakan Milvus, basis data vektor sumber terbuka, kami merilis proyek sumber terbuka terafiliasi lainnya, Milvus Bootcamp di GitHub. Milvus Bootcamp tidak hanya menyediakan skrip dan data untuk tes benchmark, tetapi juga mencakup proyek yang menggunakan Milvus untuk membangun beberapa MVP (produk yang layak), seperti sistem pencarian gambar terbalik, sistem analisis video, chatbot QA, atau sistem pemberi rekomendasi. Anda dapat mempelajari cara menerapkan pencarian kemiripan vektor di dunia yang penuh dengan data yang tidak terstruktur dan mendapatkan pengalaman langsung di Milvus Bootcamp.
2.png
Kami menyediakan layanan front-end dan back-end untuk proyek-proyek di Milvus Bootcamp. Namun, baru-baru ini kami telah membuat keputusan untuk mengubah kerangka kerja web yang diadopsi dari Flask ke FastAPI.
Artikel ini bertujuan untuk menjelaskan motivasi kami di balik perubahan kerangka kerja web yang diadopsi untuk Milvus Bootcamp dengan mengklarifikasi mengapa kami memilih FastAPI daripada Flask.
Kerangka kerja web untuk Python
Kerangka kerja web mengacu pada kumpulan paket atau modul. Ini adalah seperangkat arsitektur perangkat lunak untuk pengembangan web yang memungkinkan Anda untuk menulis aplikasi atau layanan web dan menyelamatkan Anda dari kesulitan menangani detail tingkat rendah seperti protokol, soket, atau manajemen proses / thread. Menggunakan web framework dapat secara signifikan mengurangi beban kerja dalam mengembangkan aplikasi web karena Anda cukup "menyambungkan" kode Anda ke dalam framework, tanpa perlu perhatian ekstra saat berurusan dengan cache data, akses database, dan verifikasi keamanan data. Untuk informasi lebih lanjut tentang apa itu kerangka kerja web untuk Python, lihat Kerangka Kerja Web.
Ada berbagai jenis kerangka kerja web Python. Yang paling umum adalah Django, Flask, Tornado, dan FastAPI.
Flask
3.png
Flask adalah kerangka kerja mikro ringan yang dirancang untuk Python, dengan inti yang sederhana dan mudah digunakan yang memungkinkan Anda untuk mengembangkan aplikasi web Anda sendiri. Selain itu, inti Flask juga dapat dikembangkan. Oleh karena itu, Flask mendukung ekstensi sesuai permintaan dari berbagai fungsi yang berbeda untuk memenuhi kebutuhan pribadi Anda selama pengembangan aplikasi web. Dengan kata lain, dengan pustaka berbagai plug-in di Flask, Anda dapat mengembangkan situs web yang kuat.
Flask memiliki karakteristik sebagai berikut:
- Flask adalah sebuah kerangka kerja mikro yang tidak bergantung pada alat atau komponen spesifik lainnya dari pustaka pihak ketiga untuk menyediakan fungsionalitas bersama. Flask tidak memiliki lapisan abstraksi basis data, dan tidak memerlukan validasi formulir. Namun, Flask sangat mudah dikembangkan dan mendukung penambahan fungsionalitas aplikasi dengan cara yang mirip dengan implementasi di dalam Flask itu sendiri. Ekstensi yang relevan termasuk pemetaan objek-relasional, validasi formulir, pemrosesan unggahan, teknologi otentikasi terbuka, dan beberapa alat umum yang dirancang untuk kerangka kerja web.
- Flask adalah sebuah kerangka kerja aplikasi web yang berbasis WSGI (Web Server Gateway Interface). WSGI adalah antarmuka sederhana yang menghubungkan server web dengan aplikasi web atau kerangka kerja yang didefinisikan untuk bahasa Python.
- Flask memiliki dua pustaka fungsi inti, yaitu Werkzeug dan Jinja2. Werkzeug adalah toolkit WSGI yang mengimplementasikan permintaan, objek respons, dan fungsi praktis, yang memungkinkan Anda untuk membangun kerangka kerja web di atasnya. Jinja2 adalah mesin templating berfitur lengkap yang populer untuk Python. Jinja2 memiliki dukungan penuh untuk Unicode, dengan lingkungan eksekusi sandbox terintegrasi yang opsional tetapi diadopsi secara luas.
FastAPI
4.png
FastAPI adalah kerangka kerja aplikasi web Python modern yang memiliki tingkat kinerja tinggi yang sama dengan Go dan NodeJS. Inti dari FastAPI didasarkan pada Starlette dan Pydantic. Starlette adalah toolkit kerangka kerja ASGI(Asynchronous Server Gateway Interface) yang ringan untuk membangun layanan Asyncio berkinerja tinggi. Pydantic adalah sebuah pustaka yang mendefinisikan validasi data, serialisasi, dan dokumentasi berdasarkan petunjuk tipe Python.
FastAPI memiliki karakteristik sebagai berikut:
- FastAPI adalah kerangka kerja aplikasi web berdasarkan ASGI, antarmuka protokol gateway asinkron yang menghubungkan layanan protokol jaringan dan aplikasi Python. FastAPI dapat menangani berbagai jenis protokol umum, termasuk HTTP, HTTP2, dan WebSocket.
- FastAPI didasarkan pada Pydantic, yang menyediakan fungsi untuk memeriksa tipe data antarmuka. Anda tidak perlu memverifikasi parameter antarmuka Anda, atau menulis kode tambahan untuk memverifikasi apakah parameternya kosong atau apakah tipe datanya benar. Menggunakan FastAPI secara efektif dapat menghindari kesalahan manusia dalam kode dan meningkatkan efisiensi pengembangan.
- FastAPI mendukung dokumen dalam dua format - OpenAPI (sebelumnya Swagger) dan Redoc. Oleh karena itu, sebagai pengguna Anda tidak perlu menghabiskan waktu ekstra untuk menulis dokumen antarmuka tambahan. Dokumen OpenAPI yang disediakan oleh FastAPI ditunjukkan pada gambar di bawah ini.
5.png
Flask Vs. FastAPI
Tabel di bawah ini menunjukkan perbedaan antara Flask dan FastAPI dalam beberapa aspek.
FastAPI | Flask | |
---|---|---|
Gerbang antarmuka | ASGI | WSGI |
Kerangka kerja asinkron | ✅ | ❌ |
Kinerja | Lebih cepat | Lebih lambat |
Dokumen interaktif | OpenAPI, Redoc | Tidak ada |
Verifikasi data | ✅ | ❌ |
Biaya pengembangan | Lebih rendah | Lebih tinggi |
Kemudahan penggunaan | Lebih rendah | Lebih tinggi |
Fleksibilitas | Kurang fleksibel | Lebih fleksibel |
Komunitas | Lebih kecil | Lebih aktif |
Mengapa FastAPI?
Sebelum memutuskan kerangka kerja aplikasi web Python mana yang akan dipilih untuk proyek-proyek di Milvus Bootcamp, kami melakukan penelitian terhadap beberapa kerangka kerja utama termasuk Django, Flask, FastAPI, Tornado, dan banyak lagi. Karena proyek-proyek di Milvus Bootcamp berfungsi sebagai referensi untuk Anda, prioritas kami adalah mengadopsi kerangka kerja eksternal yang paling ringan dan cekatan. Berdasarkan aturan ini, kami mempersempit pilihan kami ke Flask dan FastAPI.
Anda dapat melihat perbandingan antara kedua kerangka kerja web tersebut di bagian sebelumnya. Berikut ini adalah penjelasan rinci tentang motivasi kami untuk memilih FastAPI daripada Flask untuk proyek-proyek di Milvus Bootcamp. Ada beberapa alasan:
1. Kinerja
Sebagian besar proyek di Milvus Bootcamp dibangun di sekitar sistem pencarian gambar terbalik, chatbot QA, mesin pencari teks, yang semuanya memiliki tuntutan tinggi untuk pemrosesan data real-time. Oleh karena itu, kami membutuhkan kerangka kerja dengan kinerja yang luar biasa, yang merupakan sorotan utama FastAPI. Oleh karena itu, dari perspektif kinerja sistem, kami memutuskan untuk memilih FastAPI.
2. Efisiensi
Saat menggunakan Flask, Anda perlu menulis kode untuk verifikasi tipe data di setiap antarmuka sehingga sistem dapat menentukan apakah data input kosong atau tidak. Namun, dengan mendukung verifikasi tipe data otomatis, FastAPI membantu menghindari kesalahan manusia dalam pengkodean selama pengembangan sistem dan dapat sangat meningkatkan efisiensi pengembangan. Bootcamp diposisikan sebagai jenis sumber daya pelatihan. Ini berarti kode dan komponen yang kami gunakan harus intuitif dan sangat efisien. Dalam hal ini, kami memilih FastAPI untuk meningkatkan efisiensi sistem dan meningkatkan pengalaman pengguna.
3. Kerangka kerja asinkron
FastAPI pada dasarnya adalah kerangka kerja asinkron. Awalnya, kami merilis empat demo, pencarian gambar terbalik, analisis video, chatbot QA, dan pencarian kemiripan molekuler. Dalam demo-demo ini, Anda dapat mengunggah dataset dan akan segera diberi tahu "permintaan diterima". Dan ketika data diunggah ke sistem demo, Anda akan menerima pemberitahuan "unggahan data berhasil". Ini adalah proses asinkron yang membutuhkan kerangka kerja yang mendukung fitur ini. FastAPI sendiri merupakan kerangka kerja asinkron. Untuk menyelaraskan semua sumber daya Milvus, kami memutuskan untuk mengadopsi satu set alat pengembangan dan perangkat lunak untuk Milvus Bootcamp dan demo Milvus. Sebagai hasilnya, kami mengubah kerangka kerja dari Flask ke FastAPI.
4. Dokumen interaktif otomatis
Dengan cara tradisional, ketika Anda selesai menulis kode untuk sisi server, Anda perlu menulis dokumen tambahan untuk membuat antarmuka, dan kemudian menggunakan alat seperti Postman untuk pengujian dan debugging API. Jadi, bagaimana jika Anda hanya ingin segera memulai dengan bagian pengembangan sisi server web dari proyek-proyek di Milvus Bootcamp tanpa menulis kode tambahan untuk membuat antarmuka? FastAPI adalah solusinya. Dengan menyediakan dokumen OpenAPI, FastAPI dapat menyelamatkan Anda dari kesulitan menguji atau men-debug API dan berkolaborasi dengan tim front-end untuk mengembangkan antarmuka pengguna. Dengan FastAPI, Anda masih dapat dengan cepat mencoba aplikasi yang dibangun dengan antarmuka yang otomatis namun intuitif tanpa upaya ekstra untuk pengkodean.
5. Keramahan pengguna
FastAPI lebih mudah digunakan dan dikembangkan, sehingga memungkinkan Anda untuk lebih memperhatikan implementasi spesifik dari proyek itu sendiri. Tanpa menghabiskan terlalu banyak waktu untuk mengembangkan kerangka kerja web, Anda dapat lebih fokus untuk memahami proyek-proyek di Milvus Bootcamp.
Rekap
Flask dan FlastAPI memiliki kelebihan dan kekurangan masing-masing. Sebagai kerangka kerja aplikasi web yang sedang berkembang, FlastAPI, pada intinya, dibangun di atas toolkit dan perpustakaan yang sudah matang, Starlette dan Pydantic. FastAPI adalah kerangka kerja asinkron dengan kinerja tinggi. Ketangkasan, ekstensibilitas, dan dukungannya untuk verifikasi tipe data otomatis, bersama dengan banyak fitur canggih lainnya, mendorong kami untuk mengadopsi FastAPI sebagai kerangka kerja untuk proyek-proyek Milvus Bootcamp.
Harap dicatat bahwa Anda harus memilih kerangka kerja yang sesuai dengan skenario aplikasi Anda jika Anda ingin membangun sistem pencarian kemiripan vektor dalam produksi.
Tentang penulis
Yunmei Li, Zilliz Data Engineer, lulus dari Universitas Sains dan Teknologi Huazhong dengan gelar di bidang ilmu komputer. Sejak bergabung dengan Zilliz, ia telah bekerja mengeksplorasi solusi untuk proyek open source Milvus dan membantu pengguna untuk menerapkan Milvus dalam skenario dunia nyata. Fokus utamanya adalah pada NLP dan sistem rekomendasi, dan ia ingin lebih memperdalam fokusnya di dua bidang ini. Dia suka menghabiskan waktu sendirian dan membaca.
Mencari lebih banyak sumber daya?
Mulailah membangun sistem AI dengan Milvus dan dapatkan lebih banyak pengalaman langsung dengan membaca tutorial kami!
- Apa itu? Siapa Dia? Milvus Membantu Menganalisis Video dengan Cerdas
- Menggabungkan Model AI untuk Pencarian Gambar menggunakan ONNX dan Milvus
- Klasifikasi Urutan DNA berdasarkan Milvus
- Pengambilan Audio Berdasarkan Milvus
- 4 Langkah untuk Membangun Sistem Pencarian Video
- Membangun Sistem QA Cerdas dengan NLP dan Milvus
- Mempercepat Penemuan Obat Baru
Bergabunglah dengan komunitas sumber terbuka kami:
- Kerangka kerja web untuk Python
- Mengapa FastAPI?
- Rekap
- Tentang penulis
- Mencari lebih banyak sumber daya?
On This Page
Try Managed Milvus for Free
Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.
Get StartedLike the article? Spread the word