Saturday, December 16, 2017

Memilih apache atau nginx untuk web server


Jika anda sedang membangun aplikasi yang akan dideploy pada VPS ataupun dedicated server maka kasus memilih untuk menggunakan apache atau nginx ini akan mencuat. Saat ini apache dan nginx adalah web server opensource yang menguasai dan bertanggung jawab atas 50%+ web server yang digunakan diseluruh website di internet. Baik nginx dan apache dapat compatible dengan berbagai stack teknologi seperi php (hypertext preprocessor), perl dan lain sebagainnya.

Pertanyaan tersebut dapat kita jawab berdasarkan data-data terkait dengan apache dan nginx tentunnya dengan melihat situasi dan kondisi yang dihadapi terkait aplikasi yang akan kita deploy. Jawabnnya memang terkesan retoris karena memang segala sesuatu pasti tidak terlepas dari kegiatan “memilih”. Tidak ada pilihan yang salah asal kita memiliki alasan yang kuat atas pilihan tersebut.

Apache
Apache didikelola oleh apache foundation yang dikembangkan pertama kali pada tahun 1995. Apache adalah Http server yang opensource dimana kita dapat mendapatkan sourcenya secara gratis namun dengan lisensi-lisensi tertentu. Apache mulai merambah ke internet dan popularistasnya meningkat sejak tahun 1996 karena memiliki dokumentasi yang well written dan lengkap. Apache dikenal sebagai web server yang sangat baik untuk menyajikan konten dinamis.

Nginx
Berbeda dengan apache, nginx pertama kali dikembangkan tahun 2002 yang kemudian dipekernalkan pada publik pada tahun 2004. Sehingga secara maturity antara apache dan nginx, apache lebih dahulu lahir dan diperkenalkan ke publik. Namun kita tidak dapat menilai sesuatu dari hanya melihat umur. Nginx terkenal dengan arsitektur asynchronous, events-driven architecture. Nginx terkenal dengan impressi “lightweight” a.k.a ringan jika dibandingkan dengan apache selain itu nginx juga lebih efisien dalam menyajikan konten yang statis.

Apache vs Nginx
Kita akan membandingkan kedua http web server ini dalam dua topik yakni
  • Bagaimana web server tersebut menghandle koneksi. Tentu ini vital karena terkait stabilitas server.
  • Bagaimana web server tersebut menyajikan konten statis dan dinamis.
langsung saja kita membandingkan kedua hal tersebut pada nginx dan juga apache. Setelah itu diharapkan anda dapat menentukan pilihan web server yang terbaik sesuai dengan situasi dan kondisi.

Handle koneksi
Apache melakukan handle koneksi dengan MPM (multi-processing modules). Pada intinnya MPM ini sangat fleksible dalam menghandle koneksi. Sehingga sangat baik untuk menangani koneksi kongruen namun jika user membeludak maka performannya tidak secanggih nginx. Kongruen adalah situasi dimana dua kondisi sama. Contohnya pada bangun ruang maka terdapat dua buah kubus yang sama ukurannya. Pada terminologi server maka kongruen berarti koneksi yang berjalan bersamaan.
Berbeda dengan apache , nginx yang lahir setelah apache ini lebih memahami mengenai masalah yang akan terjadi terkait kongruensi jika user menjadi sangat banyak. Maka nginx memiliki performa yang lebih baik terkait hal tersebut karena arsitektur “asynchronous, events-driven” dan mempunyai kemampuan scaling yang lebih baik jika dibandingkan dengan apache. Namun disisi lain jika menghandle user yang tidak membeludak atau tidak terlalu banyak maka apache lebih diunggulkan.

Static content vs dynamic content
Kita berbicara mengenai performa dari web server saat menyajikan konten statis dan dinamis. Saat ini terdapat dua jenis mekanisme penyajian web. Pertama yakni secara statis yang kita kenal dengan single page application dan kedua yaitu MPA atau multipage application. Nginx terkenal dengan kemampuan menyajikan konten statis. Eschrade.com telah melakukan benchmark dan menyatakan bahwa :
  1. Nginx memiliki performa 2.5x lebih cepat saat menyajikan static content. Performa 2.5x lebih cepat ini akan muncul ketika nginx dan apache mendapatkan koneksi kongruen sebanyak lebih dari 1000 koneksi bersamaan. Ini artinnya untuk urusan static content atau kita dapat kaitkan dengan mekanisme SPA nginx memiliki performa yang sangat baik.
  2. Speedemy menyatakan bahwa dalam konteks dynamic content nginx dan apache memiliki performa yang sama. Namun sumber lain menyatakan bahwa apache memiliki performa sedikit diatas nginx karena mekanisme MPM yang dimiliki apache.
Kesimpulan
Kesimpulannya sangat sederhana yakni jika anda berfokus untuk menyajikan static content pilihlah nginx. Namun jika aplikasi anda menyediakan konten yang dinamis seperti php, phyton dan lain sebagainnya maka pilihlah apache karena mekanisme MPM sangat baik dalam menghandle dynamic content. Ingat bahwa nginx memiliki performa yang jauh lebih baik ketika kita berbicara mengenai menghandle koneksi lebih dari 1000 user bersamaan.

No comments:

Post a Comment