Bagaimana cara menerapkan aplikasi FastAPI?
Meskipun banyak penyedia hosting, hanya sedikit yang menawarkan Common Gateway Interface (CGI) atau modul mod_wsgi untuk mendukung hosting Python. Tetapi di antara para pengembang yang mengikuti Survei Pengembang Stack Overflow 2023, kontainerisasi dengan Docker memimpin untuk pengembangan dan penyebaran aplikasi.
Untuk aplikasi Python yang dikembangkan menggunakan framework seperti FastAPI, penerapan melalui Container-as-a-Service (CaaS ) semudah mendorong kode Anda ke GitHub. Dalam blog ini, Anda akan belajar cara mendokumentasi aplikasi FastAPI Anda dan men-deploy-nya melalui CaaS.
Contents
Hal-hal Penting yang Dapat Dipetik
- Docker dan FastAPI adalah duet yang kuat; keduanya memungkinkan penerapan yang efisien dan terkemas dengan dependensi yang disertakan.
- FastAPI unggul dalam operasi asinkronisasi, validasi data, dan OpenAPI, tetapi kurang dalam hal dukungan dan kompatibilitas komunitas.
- Back4app memudahkan penerapan FastAPI, sinkronisasi dengan GitHub untuk pembaruan otomatis, dan menawarkan penyiapan basis data cloud.
Apa itu FastAPI?
FastAPI adalah kerangka kerja web Python sumber terbuka yang ringan untuk mengembangkan RESTful API. Diluncurkan pada tahun 2018, framework ini mendukung model Pydantic dan Starlette, menempatkannya pada level performa yang sama dengan Node.js dan Golang. Framework ini juga dapat dikustomisasi, memungkinkan Anda untuk mendesain basis kode secara fleksibel.
Dengan dukungannya terhadap JSON Schema dan petunjuk tipe pada Python versi 3.6 dan yang lebih baru, model Pydantic memungkinkan FastAPI mengurai data dengan mudah dan memvalidasinya pada saat run-time.
Kerangka kerja Starlette memperkenalkan Asynchronous Server Gateway Interface (ASGI) ke dalam FastAPI; ini memungkinkan Anda melakukan operasi asinkron dalam Python RESTful APIs dan menjalankan kode Anda di server ASGI Uvicorn.
Seperti Nodemon di Node.js, server Uvicorn mendengarkan perubahan pada rute API dan menginisiasi ulang waktu berjalan untuk setiap pembaruan.
Meskipun hanya 7,42% dari pengembang yang mengikuti Survei Pengembang Stack Overflow 2023 yang menunjukkan bahwa mereka menggunakan FastAPI, pada saat penulisan, GitHub menempatkan total penggunanya pada 203 ribu. Dengan lebih dari 498 kontributor dan 190 rilis pada saat artikel ini ditulis, FastAPI menerima pembaruan dan patch secara konsisten.
Namun, menempatkan FastAPI pada tingkat kinerja yang sama dengan Golang dan Node.js masih menjadi perdebatan di antara para pengembang.
Sementara yang lain setuju, beberapa orang berpendapat bahwa meskipun ini adalah peningkatan yang signifikan untuk pengembangan web Python, FastAPI masih belum bisa dibandingkan dengan kinerja keduanya.
Keuntungan dari FastAPI
- Dukungan untuk operasi asinkron: Selain operasi sinkron default Python, FastAPI mendukung deklarasi fungsi menggunakan async/await. Terima kasih kepada Starlette, yang juga memberikan dukungan WebSocket. Hal ini menambah konkurensi pada program Anda, sehingga memungkinkan aplikasi Anda untuk melakukan operasi lain sambil menunggu operasi yang lebih lambat seperti kueri basis data.
- Dukungan untuk validasi data: Dengan menggunakan Pydantic BaseModel, FastAPI memanfaatkan petunjuk tipe data Python untuk menjaga ketelitian saat mengurai data. Hal ini mencegah tipe data yang salah masuk ke dalam database. Oleh karena itu, tidak seperti model dinamis yang membutuhkan pustaka validasi tambahan, validasi model sangat mudah dan sudah tersedia di FastAPI.
- Sepenuhnya terstandarisasi: FastAPI sesuai dengan spesifikasi OpenAPI untuk melayani HTTP API di seluruh web, sehingga memudahkan aplikasi konsumen dan klien untuk memahami API yang ingin mereka gunakan. Di baliknya, FastAPI juga menggunakan deklarasi Skema JSON untuk memastikan pengujian dan data yang dikirimkan pengguna langsung valid sebelum mengirimkannya ke basis data.
- Fleksibilitas: Tidak seperti Django, FastAPI tidak membatasi pengembang pada standar arsitektur basis kode tertentu. Sebaliknya, FastAPI menyerahkan keputusan itu kepada pengembang. Oleh karena itu, Anda dapat mendesain basis kode Anda dengan konvensi penamaan yang fleksibel dan mendeklarasikan pengaturan aplikasi umum dan unit test suite saat bepergian. Modularisasi kode dan pemisahan perhatian (SOC) juga sangat mudah.
Dan jika menggunakan pemrograman berorientasi objek (OOP), yang kami rekomendasikan, Anda dapat dengan mudah menyusun model ke dalam kelas-kelas endpoint. Ketika Anda membangun, menambahkan titik akhir API ke rute Anda juga sangat mudah.
- Framework ini memiliki kurva pembelajaran yang mudah: Meskipun memiliki komunitas pengguna yang lebih kecil dibandingkan dengan framework seperti Flask dan Django, FastAPI menonjol dengan dokumentasi dan tutorialnya yang sangat komprehensif. Dengan latar belakang pengembangan, khususnya dalam Python atau JavaScript, Anda dapat dengan mudah memahaminya. Kesederhanaan dan fleksibilitasnya secara keseluruhan berkontribusi pada proses pengembangan yang lebih cepat.
Keterbatasan
- Dukungan komunitas yang rendah: FastAPI tidak memiliki banyak pengguna seperti Django atau Flask. Ini masih relatif baru. Jadi dukungan komunitasnya lebih rendah; ini bisa menjadi tantangan, terutama untuk pengembang baru.
- Kompatibilitas versi terbatas: FastAPI hanya mendukung versi Python yang lebih baru, mulai dari Python 3.6 ke atas. Oleh karena itu, mesin atau server yang menjalankan versi Python yang lebih awal dari 3.6 harus melakukan upgrade agar dapat menginstal dan menjalankan FastAPI dengan sukses.
Opsi Penerapan FastAPI
Infrastructure-as-a-service (IaaS) dan container-as-a-service (CaaS) adalah infrastruktur cloud yang dapat diskalakan untuk menerapkan aplikasi.
Meskipun Anda bisa menerapkan aplikasi FastAPI melalui server pribadi virtual (VPS) atau hosting bersama, tidak ada yang skalabel seperti IaaS atau CaaS.
IaaS
IaaS adalah platform yang menyediakan sumber daya komputasi sesuai permintaan di cloud. IaaS menyediakan semua sumber daya tervirtualisasi yang diperlukan untuk menyiapkan server penerapan untuk aplikasi Anda, biasanya dengan sistem bayar sesuai penggunaan.
Selain infrastruktur komputasi, IaaS mencakup penyimpanan dan sumber daya jaringan lainnya seperti penyeimbang beban, VPN, firewall, manajemen DNS, dan banyak lagi. Anda bertanggung jawab untuk mengelola lingkungan komputasi Anda dan dapat menyesuaikan atau menskalakan sumber dayanya agar sesuai dengan kebutuhan aplikasi Anda.
CaaS
CaaS adalah platform-as-a-service (PaaS) yang memungkinkan Anda menerapkan aplikasi Anda di awan sebagai kontainer. Tidak seperti IaaS, CaaS mengelola semua dasar komputasi yang diperlukan untuk meng-host aplikasi Anda di bawah tenda.
Ini termasuk lingkungan waktu kerja kontainer, orkestrasi, penyimpanan, penyeimbangan beban, dan banyak lagi. Dengan demikian, Anda bisa fokus membangun aplikasi Anda daripada memusingkan manajemen infrastruktur.
Karena Anda menerapkan aplikasi Anda sebagai kontainer, maka integrasi CI/CD dapat dilakukan dengan mudah tanpa perlu mengkhawatirkan konfigurasi teknis. Hal ini membuat rilis dan pembaruan aplikasi menjadi lebih cepat.
Proses Penerapan API CEPAT
Mari kita bahas proses penerapan langkah demi langkah, dimulai dari prasyarat. Namun, karena kita akan menerapkan aplikasi FastAPI menggunakan kontainer Back4App, mari kita lihat dengan cepat apa saja prasyaratnya sebelum melanjutkan.
Gambaran Umum Wadah Back4app
Back4App Containers adalah platform cloud yang memungkinkan Anda untuk menerapkan aplikasi dockerized dengan cepat di cloud. Platform ini disinkronkan dengan repositori GitHub Anda dan secara otomatis memperbarui penerapan Anda setiap kali Anda mendorong rilis. Dengan cara ini, ini membantu menghilangkan pembaruan kontainer secara manual dan waktu henti server.
Dengan Back4App Containers, Anda hanya perlu mendorong kode Anda dan rilis berikutnya ke GitHub dari mesin lokal Anda, dan platform ini menangani orkestrasi gambar kontainer di bawah tenda. Back4App juga memiliki fitur pelacakan penerapan waktu nyata dan pencatatan waktu nyata.
Dengan demikian, Anda bisa melacak langkah-langkah penerapan dan menentukan titik kegagalan—jika ada. Dan jika aplikasi Anda mengalami crash saat run-time, yang mungkin terjadi pada bahasa yang diinterpretasikan seperti Python, pencatatan waktu nyata membantu Anda melacak kesalahan di konsol untuk memperbaikinya dengan cepat.
Berikut ini adalah fitur-fitur utama Back4App:
- Sinkronkan aplikasi Back4App Anda dengan mudah dengan repositori basis kode di GitHub.
- Menyebarkan aplikasi Anda ke cloud melalui kontainer Back4App dengan mendorong kode Anda dan pembaruan berikutnya ke repositori GitHub Anda.
- Yang Anda butuhkan hanyalah Dockerfile. Back4App menangani semua instalasi ketergantungan untuk Anda.
- Enkripsi variabel lingkungan Anda dengan mudah selama penerapan dan rilis berikutnya.
- Pantau penerapan secara real-time dan kelola rollback.
- Pantau riwayat penggunaan aplikasi Anda dengan log waktu nyata.
- Menerapkan aplikasi seluler dan web ke cloud
Unduh dan Instal Python
Kita akan menggunakan Python 3.10.6 di blog ini. Tetapi Anda dapat menggunakan versi Python apa pun yang tidak lebih awal dari 3.6. Kunjungi python.org untuk mengunduh dan menginstal versi Python terbaru yang kompatibel untuk OS Anda — jika Anda belum melakukannya. Jika tidak, abaikan bagian ini.
Setelah diunduh, klik berkas instalasi dan ikuti petunjuk di layar untuk menginstal Python di mesin lokal Anda.
Pastikan Anda mencentang opsi Add python.exe to PATH untuk menambahkan Python ke jalur variabel sistem Anda; ini membuatnya dapat dieksekusi melalui baris perintah.
Jika menggunakan Mac, secara default sudah dilengkapi dengan Python 2.7. Anda bisa memperbaruinya ke versi terbaru menggunakan Homebrew melalui terminal:
brew install python3
Jalankan perintah berikut di terminal Anda untuk memeriksa versi Python Anda.
python --version
Mengaktifkan Lingkungan Virtual Python dan Menginstal FastAPI
Selanjutnya, buat direktori proyek baru dan buka baris perintah ke folder ini. Kemudian aktifkan lingkungan virtual Python menggunakan venv.
Paket ini dilengkapi dengan Python dan tidak memerlukan instalasi. Paket ini memungkinkan Anda untuk mengelola dependensi Python secara terpisah daripada menginstalnya secara global.
Jalankan perintah berikut melalui terminal untuk membuat lingkungan virtual, ganti env_name dengan nama lingkungan pilihan Anda.
py -m venv env_name
Jalankan perintah berikut ini untuk mengaktifkan lingkungan virtual.
.\env_name\Scripts\activate
Instal FastAPI dan Uvicorn
Langkah selanjutnya adalah menginstal kerangka kerja FastAPI dan runtime server Uvicorn ke dalam lingkungan virtual yang aktif. Ini juga menginstal Pydantic dan Starlette.
Buat berkas requirements.txt di root proyek Anda dan masukkan paket-paket yang akan diinstal, seperti yang ditunjukkan di bawah ini.
fastapi
uvicorn
Di bawah ini adalah demonstrasi dalam VSCode. Anda dapat menambahkan lebih banyak dependensi ke file ini jika diperlukan.
Jalankan perintah berikut melalui terminal untuk menginstal dependensi yang terdaftar. Pastikan lingkungan virtual masih aktif.
pip install install -r requirements.txt
Perintah ini akan menginstal paket yang ditentukan seperti yang ditunjukkan di bawah ini.
Setelah terinstal, perbarui requirements.txt menggunakan perintah berikut:
pip freeze > requirements.txt
Perintah di atas akan menimpa requirements.txt dengan dependensi yang terinstal, termasuk nomor versi yang benar. Pastikan Anda melakukan hal ini setiap kali Anda menginstal dependensi baru ke dalam lingkungan virtual.
File requirements.txt terlihat seperti ini setelah pembaruan:
Pengenalan Proyek
Kita akan menulis aplikasi FastAPI “Hello World” yang sederhana dan menerapkannya menggunakan Back4App Containers gratis. Jangan khawatir jika proyek Anda rumit. Penempatan mengambil langkah yang sama, dan Anda juga mendapatkan waktu aktif bulanan gratis.
Namun, jika aplikasi Anda menangani banyak permintaan setiap hari, Anda mungkin ingin meningkatkan setelah penerapan untuk memberikan pengalaman pengguna yang lebih lancar kepada pengunjung tanpa waktu henti.
Kode Aplikasi
Buat direktori router baru di folder root proyek Anda dan buat file main.py di dalam direktori tersebut. Berkas ini menangani titik akhir API aplikasi dan router Anda. Lanjutkan ke bagian berikut jika Anda sudah memiliki proyek untuk diterapkan.
Berikut adalah kode “Hello World”:
from fastapi import FastAPI, APIRouter
import uvicorn
app = FastAPI()
class HelloWorld():
def read_hello(self):
return {"data": "Hello World"}
router = APIRouter()
router.add_api_route('/api/v2/hello-world',
endpoint = HelloWorld().read_hello, methods=["GET"])
app.include_router(router)
if __name__ == "__main__":
uvicorn.run("main:app", host="127.0.0.1", port=8000, reload=True)
Untuk menjalankan server uvicorn dan menguji titik akhir API hello-world, jalankan berkas main.py melalui baris perintah:
python main.py
Ini akan memulai server pengembangan pada port 8000 seperti yang ditentukan.
Karena ini adalah permintaan GET, kita dapat mengujinya langsung pada browser web apa pun. Di bawah ini adalah hasilnya.
Dockerize Aplikasi
Selanjutnya, buatlah Dockerfile di dalam folder root proyek Anda. Anda dapat melakukan ini dengan membuat berkas baru di VS Code dan menamainya Dockerfile.
Setelah dibuat, ketik perintah berikut untuk membangun citra Docker:
FROM python:3.9-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
EXPOSE 8000
CMD ["uvicorn", "router.main:app", "--host", "0.0.0.0", "--port", "8000"]
Dorong ke GitHub
Masuk ke akun GitHub Anda dan buka Repositori. Mulai repositori baru dengan mengeklik Baru di bagian kanan atas.
Masuk ke akun GitHub Anda dan buka Repositori. Mulai repositori baru dengan mengeklik Baru di bagian kanan atas.
Jika Anda telah mendorong kode Anda ke GitHub, tambahkan berkas Docker ke salinan di mesin lokal Anda dan dorong kembali ke repositori Anda.
Beri nama repositori Anda dan klik Buat repositori di kanan bawah.
Selanjutnya, inisialisasi repositori lokal menggunakan perintah init seperti yang ditunjukkan:
git init
Abaikan folder venv dan file .env kamu dengan menggunakan .gitignore untuk menghindari mendorongnya ke repositori kamu. Untuk melakukannya, buat file .gitignore di folder root proyek kamu dan masukkan folder dan file yang ingin kamu abaikan, seperti yang ditunjukkan di bawah ini.
Jalankan perintah berikut ini melalui terminal Anda satu per satu untuk mendorong kode Anda ke repositori.
1. git add .
2. git commit -m "commit message"
3. git branch -m main
4. git remote add origin <URL of the created repository>
5. git push -u origin main
Menyebarkan Aplikasi Dengan Wadah Back4App
Jika Anda belum melakukannya, pastikan Anda membuat akun Back4App yang baru. Untuk mempercepat prosesnya, gunakan opsi masuk Google atau GitHub .
Setelah masuk, klik widget Bangun aplikasi baru.
Buka Wadah sebagai Layanan.
Pada halaman berikut, klik Impor Repo GitHub. Berikan izin GitHub untuk mengotorisasi Back4App saat diminta.
Di bawah Akses repositori pada modal yang terbuka, klik Pilih repositori. Pilih repositori yang berisi proyek yang ingin Anda gunakan dan klik Simpan.
Back4App akan menyinkronkan repositori yang dipilih secara otomatis. Setelah diarahkan ke Back4App, klik Pilih di sebelah kanan repositori GitHub yang ditambahkan. Selanjutnya, isi kolom Nama Aplikasi dengan nama aplikasi pilihan Anda.
Jika aplikasi FastAPI Anda memiliki rahasia yang disembunyikan di dalam file .env, klik Environment Variables untuk memasukkan variabel lingkungan. Klik Tambah variabel dan ketik nama variabel Anda menggunakan huruf besar.
Pastikan Anda menggunakan konvensi penamaan yang sama dengan variabel dalam file .env proyek Anda untuk menghindari kesalahan nama.
Langkah ini mengenkripsi dan menambahkan nilai variabel Anda ke penerapan Anda. Terakhir, klik Buat Aplikasi untuk menerapkan aplikasi FastAPI Anda.
Instance deployment untuk aplikasi FastAPI berjalan seperti yang ditunjukkan di bawah ini.
Untuk melihat versi langsung aplikasi Anda, klik URL di bilah sisi kiri. Membuka https://testapp-omisolaidowu.b4a.run/api/v2/hello-world, dalam hal ini, akan memberikan respons yang diharapkan.
Kesimpulan
Mengembangkan aplikasi menggunakan FastAPI dari Python adalah satu tugas. Namun, menerapkannya dengan mulus untuk melayani klien adalah hal lain.
Selain membantu penerapan yang lebih cepat, CaaS juga tidak terlalu teknis. Meskipun Anda telah melihat cara menerapkan aplikasi FastAPI, bukan hanya itu saja.
Anda mungkin ingin menggunakan aplikasi sisi klien pada instance container terpisah dan menyambungkan ke endpoint FastAPI menggunakan URL yang dihasilkan sebagai URL dasar.
Jika Anda menyukai artikel ini, silakan lihat tutorial kami tentang Cara menggunakan aplikasi Flask.
Apa itu FastAPI?
FastAPI adalah framework web berkinerja tinggi untuk mengembangkan API RESTFul dengan Python.
Bagaimana cara menerapkan aplikasi FastAPI?
– Buat gambar Docker untuk proyek Anda menggunakan Dockerfile.
– Dorong kode Anda ke GitHub.
– Masuk ke akun Back4App Anda dan buat aplikasi baru.
– Hubungkan instance container Anda dengan repositori GitHub yang berisi proyek target.
– Terapkan aplikasi FastAPI Anda dan lihat log penerapan secara real-time.