Mengatasi Lonjakan API Latency saat Deployment - Studi Kasus Django + Gunicorn
- Sistem backend dibangun dengan Django + Gunicorn
- Ditemukan masalah bahwa setiap kali deployment dilakukan, API Latency meningkat tajam
- Setelah meninjau cara kerja Gunicorn, ditemukan adanya bagian-bagian yang mengalami cold start
- Setelah menganalisis kode internal Django, ditemukan bahwa saat proses fork dari master worker process, meskipun opsi preload sudah diberikan, ada beberapa elemen yang tidak dimuat sebelumnya, sehingga masalah dapat diselesaikan
Hal yang dipelajari
- Web framework yang banyak digunakan seperti Django umumnya memiliki tingkat keandalan yang tinggi pada sebagian besar perilakunya, sehingga ada kecenderungan untuk menganggap pengguna nyata pun akan berpikir demikian
- Namun saat melihat kode yang sebenarnya, ditemukan adanya kode yang bermasalah, dan dari sini dapat dipelajari bahwa kita tidak boleh terlalu mempercayai framework yang digunakan
- Proses menyelesaikan masalah API Latency tidak mudah dipahami karena kurangnya dokumentasi yang memadai + kurangnya pemahaman mendalam tentang struktur internal dan cara kerjanya + keengganan untuk menggali lebih dalam codebase proyek open source
- Dalam proses ini juga ada beberapa masalah kompleks yang saling berkaitan, sehingga tidak mudah untuk mengidentifikasinya
- Pada akhirnya, masalah bisa diselesaikan dengan meninjau kode internal Django
- Dari proses ini, dapat dipelajari bahwa selain memperdalam pemahaman terhadap tool Django yang digunakan, meninjau kode internal juga dapat membantu menemukan solusi untuk beberapa masalah yang sulit
- Penting untuk memahami akar penyebab masalah.
- Frekuensi terjadinya API Latency mungkin bisa dikurangi dengan menyesuaikan kondisi keberhasilan health check menjadi lebih sering atau berdurasi lebih lama, tetapi itu tidak akan menyelesaikan masalah mendasarnya
- Dengan memanfaatkan kecerdasan kolektif, kita bisa lebih cepat menemukan titik-titik yang perlu difokuskan dan memperoleh beragam pengetahuan
- Masalah terkait API Latency segera dibagikan ke organisasi, dan berbagai engineer memberikan pendapat tentang hal-hal yang diduga menjadi penyebab masalah
- Pendapat-pendapat tersebut dapat dikumpulkan dengan cepat, sehingga pengetahuan tentang area yang perlu difokuskan juga bisa diperoleh dengan cepat
- Penting untuk menyiapkan lingkungan reproduksi gejala guna menyelesaikan masalah
- Berhasil mereproduksi masalah yang sama di lingkungan lokal, dan melalui hal itu dapat dipastikan apakah masalah benar-benar telah terselesaikan
- Dari sini dapat disadari pentingnya reproduksi gejala untuk penyelesaian masalah
1 komentar
Saya membuka tautannya dan isi postingannya memang sangat bagus.