Bisa AI dan Tampil.id: backend Python, dari pendaftaran sampai model AI
Gambaran umum
Di Bisa AI (Jun 2019 – Mar 2021) saya mengerjakan backend Python untuk dua produk: bisa.ai, platform pembelajaran teknologi di Indonesia, dan tampil.id, platform konferensi online. Pekerjaannya mencakup mengintegrasikan model AI ke dalam sistem. Stack-nya Python dengan Flask dan MySQL.
Yang saya bangun
Backend bisa.ai. Bagian saya mencakup pendaftaran peserta, pembuatan silabus kursus, integrasi dengan server konferensi, integrasi model AI, dan payment gateway. Detail integrasi pembayaran sengaja tidak saya tulis di sini.
Model AI untuk scan paru-paru. Platform ini memuat model yang mendeteksi COVID-19 dari scan paru-paru. Modelnya sudah dilatih sebelumnya, jadi saya tidak melatihnya: bagian saya adalah mengintegrasikannya ke dalam sistem, dengan Python dan Flask, agar bagian lain platform bisa memakainya.
Backend tampil.id. Seingat saya, bagian saya mencakup login, pendaftaran, dan integrasi dengan konferensi.
Bagian yang lebih kecil. Dua bagian kecil dari masa kerja saya di sana: ketika sisi front end punya masalah integrasi yang tidak bisa diselesaikan oleh bagiannya sendiri, saya menanganinya sementara dengan CodeIgniter (PHP), dan saya juga pernah mengisi webinar untuk Bisa AI.
Yang sulit
Python bukan bahasa yang paling cocok untuk semua beban kerja backend, dan saya menemui banyak kendala performa di sepanjang jalan. Salah satu alasan kuatnya adalah cara kode menangani koneksi database: tidak ada koneksi bersama seperti pada layanan Go. Setiap kali kode butuh database, fungsi koneksi dipanggil lagi, sehingga satu endpoint yang memanggil database sepuluh kali akan membuka sepuluh koneksi.
Setelah bekerja di Olsera saya tahu satu cara memperbaikinya: membuka koneksi sekali saat aplikasi mulai lalu memakainya kembali lewat connection pool, seperti yang dilakukan *gorm.DB di Go.
Masalah lain yang saya temukan adalah kode tidak memakai transaksi database. Tanpa transaksi, perubahan yang terdiri dari beberapa langkah tidak bisa dibatalkan (rollback) saat satu langkah gagal, sehingga kami harus benar-benar memastikan tidak ada langkah yang bisa salah. Saya baru benar-benar memahami transaksi database setelah bekerja di Olsera.
Hasil
Bisa.ai dan tampil.id sama-sama selesai dan berjalan di produksi. Ini sudah lama berlalu, jadi di sini saya hanya menulis apa yang saya ingat dengan jelas.
Produk publik
Stack
Python, Flask, MySQL.