Sunday, December 16, 2018

Django vs Flask Python framework

Hallo Semua,

Dalam membangun aplikasi "web app" tentu tidak asing dengan Application Programming Interface (API), pada kesempatan kali ini saya akan membagikan pengalaman membandingkan 2 python framework yang disebut Django dan Flask. Secara fitur, Django memang dibuat untuk membangun aplikasi web app yang sudah lengkap dari sisi admin, user, auth dan programming front-end nya. Sedangkan Flask adalah microframework yang sangat fleksibel dimana semua fitur, bisa dipilih mana yang akan dipasang. Dibawah adalah hasil perbandingan yang didapat oleh penulis sebagai bahan pertimbangan untuk menentukan framework mana yang bisa dipakai.


Pembatasan masalah : 
  • Komunikasi API yang dibandingkan antara 2 framework
  • Metode GET dan POST ke database
  • Database menggunakan local, aplikasi local
  • Django menggunakan djangorestframework
  • Test menggunakan concurrent test untuk semua method menggunakan Jmeter
source code dapat dilihat disini: https://github.com/narwa/blog.git


Tabel Concurrent Test

Tabel diatas adalah rangkuman hasil concurrent test method GET, pada user 100 secara bersamaan, flask tidak mengalami kendala(error) dan django kena error ketika loop setiap usernya dinaikan menjadi 10. pada user 1000, flask sekitar 62% request tidak terpenuhi/rusak, ketika ramp-up dinaikan ke angka 10 pun tidak banyak berpengaruh. Django lumayan lebih baik untuk kasus ini, hanya sekitar 28% data yang rusak.

Untuk method POST, flask tidak mengalami kendala(error), pada django, ketika 100 user melakukan looping POST 10x, terjadi error sekitar 7%, namun ketika ramp-up dinaikan ke angka 10, error tidak terjadi.

Dari segi waktu, GET data flask terlihat lebih lama, tetapi untuk POST, flask lebih cepat, ini terjadi karena flask untuk GET dilakukan konversi data terlebih, sedangkan django tinggal pakai serializer, sehingga lebih cepat. untuk POST data, flask sedikit lebih cepat dari django.

Kesimpulan:
  1. Waktu build aplikasi : dibanding flask, django lebih kompleks setting parameternya
  2. Tingkat kesulitan : flask sederhana meskipun dokumentasi kurang lengkap, django terlihat rumit tetapi dokumentasi dan contoh sudah banyak
  3. Concurrent test GET : 61% data rusak pada 1000 user yang melakukan hit API secara bersamaan pada flask, django hanya 28%
  4. Concurrent test POST: flask mendapat waktu lebih sedikit dibanding django, tetapi ketika loop dinaikan ke angka 10, flask mengalami peningkatan waktu yang lumayan tinggi, sedangkan django mengalami error. Namun ketika ramp-up dinaikan keduanya sama-sama mendapatkan nilai kecil (7mS) per request.
  5. Overall : jika menginginkan framework yang lengkap, pakailah django, namun jika menginginkan framework yang sederhana (bisa untuk sistem embeded) flask menjadi alternatif.
  6. Flask tidak punya serializer, sehingga untuk query ke database dilakukan secara manual dengan operasi data manual juga.
  7. Django sudah ada Modeling data ke database dan serializer ke output, sehingga sangat mudah ketika operasi data.
  8. Penelitian lain yang menujukan Flask lebih cepat daripada django tidak terbukti di method GET, tetapi pada POST terlihat.
  9. Ukuran fisik file instalasi : django 2x lebih besar daripada flask

Referensi:
  • https://www.djangoproject.com/
  • http://flask.pocoo.org/
  • https://flask-mysql.readthedocs.io/en/latest/
  • https://www.django-rest-framework.org/


No comments:

Post a Comment