Stack Penting untuk Membuat Aplikasi Web Python

Untuk membangun sebuah aplikasi web menggunakan Python, kamu sudah sangat beruntung dengan memilih bahasa pemrograman ini. Bagaimana tidak, mulai dari membuat aplikasi konsol hingga task queue, Python memiliki semuanya.

Walaupun Python sudah di-cover oleh berbagai web framework canggih dan platform as a service yang siap membuat aplikasi web kamu go public. Kamu tetap harus mengenal beberapa stack berikut untuk membuat arsitektur di server kamu sendiri.

Stack umum untuk membuat aplikasi web berbasis Python biasanya adalah sebagai berikut:

Frontend

Untuk menampilkan halaman HTML, CSS, dan Javascript. Kamu dapat menggunakan Javascript native walaupun saat ini sudah banyak menggunakan jQuery untuk mengganti dom manipulation ketimbang Javascript native.

Kamu pun dapat menggunakan berbagai web framework untuk single page application seperti Angular.js, React.js, dan Vue.js. Namun tentunya dengan menggunakan sedikit konfigurasi dan preferensi yang disesuaikan dengan web framework Python.

Backend

Di dunia Python, kamu punya banyak rasa dalam memilih web framework. Beberapa web framework yang bisa kamu pilih antara lain:

  • Django
  • Flask
  • Tornado
  • Falcon
  • Pylon
  • Sanic
  • Klein
  • dan lainnya

Database

Jangan takut dengan menggunakan Python, sangat banyak database yang didukungnya. Mulai dari MySQL, PostgreSQL, MongoDB, CouchDB, Elasticsearch, Redis, Aerospike, Oracle, dan masih banyak lainnya.

Namun kamu dapat fokus saja pada MySQL dan MongoDB bila ingin membuat sebuah aplikasi web dengan menggunakan ORM nya. Di Python ada beberapa ORM yang bisa kamu gunakan:

  • Neo4j OGM, ORM untuk membuat database di Neo4j
  • Redisco, ORM untuk menyimpan struktur data di Redis
  • Orator, ORM untuk menyimpan database di MySQL, PostgreSQL, SQLite3
  • SQLAlchemy, ORM untuk menyimpan database di MySQL, PostgreSQL, SQLite3
  • Haystack, ORM untuk menyimpan data di search engine seperti Solr, Elasticsearch, dan Whoosh

Caching

Mayoritas web framework Python mendukung mesin caching seperti Memcached dan Redis. Kamu dapat menggunakan wrapper atau library bawaan yang ada di dalam web framework yang kamu gunakan.

Django sudah memiliki wrapper sendiri untuk melakukan caching. Bila kamu menggunakan selain Django biasanya kamu harus memasang lagi library tambahan menggunakan PIP.

Distributed Task Queue

Python memiliki sebuah library bernama Celery. Dimana kamu dapat mengerjakan task berat yang diatur oleh queue engine seperti Redis dan RabbitMQ. Nantinya task berat tersebut akan dikerjakan secara multithreading dan proses pun akan lebih cepat dan efisien.

Menariknya, Celery ini merupakan abstraksi yang dapat dengan mudah digunakan tanpa harus membuat kode rumit terhadap queue engine yang telah disebutkan. Celery pun dapat diintegrasikan dengan berbagai web framework Python yang kamu suka.

Threaded Server Engine

Ada dua threaded server yang cukup dikenal yaitu Gunicorn dan Meinheld. Bila biasanya kita hanya menjalankan aplikasi web melalui script utama dan dijalankan menggunakan Python saja. Maka agar lebih kuat kita jalankan aplikasi web kita diatas threaded server ini.

Proses – proses yang datang akan ditangani melalui multithreading dan ruang komputasi pun akan digunakan secara optimal dan efisien. Selain itu aplikasi web Python kita akan lebih tahan lama dibanding menjalankannya tanpa menggunakan threaded server.

Watchdog

Terkadang bila threaded server dan service pendukung lainnya mudah mati, kita akan mengalami kesulitan bila harus masuk terus ke server dan menyalakan ulang. Atau membuat script sendiri untuk menyalakan service tertentu dan dieksekusi melalui Crontab.

Lupakan cara itu, Python memiliki sebuah watchdog bernama Supervisord. Kamu cukup membuat beberapa file konfigurasi dan menjalankannya di belakang layar, dan secara otomatis bila service yang diawasi mati maka akan dinyalakan oleh Supervisord.

Suatu saat bila server mengalami kebanjiran traffic maka kamu tidak perlu terlalu risau bila threaded server nge-hang atau mati. Begitupun dengan service lainnya seperti websocket dan Celery yang harus nyala terus menerus.

Web Socket

WebSocket memang sih enaknya pakai Node.js + Socket.io yang sudah cukup dikenal oleh khalayak web developer, tapi Python pun memiliki sebuah web framework mumpuni yang mampu membantu kita untuk membuat sebuah websocket server, namanya adalah Tornado.

Selain dapat berfungsi sebagai web framework, dengan menggunakan Tornado. Kamu dapat membuat sejumlah service berbasis websocket yang dapat dibaca oleh HTML5 Websocket. Misal kamu dapat membuat notifikasi instan untuk diberikan kepada sejumlah user di aplikasi web kamu, atau membuat layanan chat instan hingga grafik yang dapat berubah seketika ketika data terbaru masuk ke database.

Web Server

Kamu dapat menggunakan berbagai web server seperti Apache, Nginx, Lighttpd, ataupun laninya. Umumnya Nginx digunakan karena kemudahan dan kehandalan yang dipadukan dengan threaded server yang menjalankan aplikasi web Python.

Tentu saja bukan masalah web server saja yang menjadi pilihan. Pengaturan dan konfigurasi pun menjadi salah satu kunci dalam membuat aplikasi web yang tangguh dan tahan banting.

Leave a Reply