Lamp Dan Lemp, Mana Yang Lebih Baik ?
Apa Itu Lamp Dan Lemp ?
LAMP (Linux, Apache, MySQL dan PHP) adalah platform pengembangan Web open source yang menggunakan Linux sebagai sistem operasi, Apache sebagai server Web, MySQL sebagai sistem manajemen basis data relasional dan PHP sebagai bahasa scripting berorientasi objek.
LEMP (Linux, Nginx, MySQL dan PHP) adalah untuk membuat server website dan membantu agar aplikasi menjadi dinamis.
LEMP menggunakan web server Nginx dan LAMP menggunakan web server Apache. Web server Apache sudah terbilang cukup lama yaitu tahun 1995. Sedangkan Nginx tahun 2005. Sehingga kalau berbicara mengenai teknologi serta fitur kedua web server tersebut tentu berbeda.
Perbedaan LAMP dan LEMP
Sebenarnya perbedaan yang paling signifikan adalah pada perangkat lunak web server yang digunakan. Pada stack LAMP, web server yang digunakan adalah Apache, sedangkan pada stack LEMP, web server yang digunakan adalah Nginx. Berikut adalah pembahasan secara detail mengenai masing-masing stack.
1. LAMP
LAMP adalah singkatan dari Linux, Apache, MySQL dan PHP. Ini adalah kombinasi dari komponen-komponen yang membentuk stack web server. LAMP menjadi stack yang sangat populer selama beberapa waktu. Komponen yang membentuk LAMP ini bersifat open source dengan dukungan komunitas yang sangat besar. LAMP telah ada sejak periode awal adanya aplikasi berbasis web.
Istilah LAMP diciptakan oleh Michael Kunze di sebuah majalah Jerman pada tahun 1998. Seperti yang sudah disebutkan di awal, LAMP terdiri dari empat lapisan yang terdiri dari :
- Linux, sebuah sistem operasi yang bersifat terbuka dan gratis. Linux mempunyai komunitas yang sangat kuat dan berkembang hingga saat ini.
- Apache HTTP Server adalah perangkat lunak untuk web server yang bersifa terbuka. Dibuat pertama kali pada tahun 1995.
- MySQL adalah sistem manajemen basis data relasional yang digunakan untuk menyimpan data. Bersifat terbuka dan bekerja dengan bahasa SQL.
- PHP adalah bahasa scripting untuk membangun halaman web yang bersifat dinamis.
Arsitektur LAMP sendiri berlapis mulai dari Linux pada bagian bawah, kemudian diikuti oleh Apache, MySQL kemudian PHP.
Cara kerja dari LAMP dimulai ketika browser mengirimkan permintaan untuk halaman web ke web server Apache. Jika permintaan tersebut dalam bentuk file PHP, maka permintaan tersebut akan diteruskan ke PHP dan kemudian kodenya dijalankan. Jika ada informasi yang berkaitan dengan data, maka selanjutnya meminta MySQL untuk mengambil informasi apapun yang diminta oleh kode tersebut. Kemudian kode dan data tersebut diolah dan ditampilkan ke browser untuk menampilkan halaman web.
LAMP juga bersifat fleksibel. Misalnya pada Apache yang memiliki desain secara modular, dengan hal ini memungkinkan untuk menambahkan modul khusus untuk memperluas fungsionalitas.
2. LEMP
Stack ini mempunyai fungsi yang sama dengan LAMP, hanya perbedaannya pada web server yang digunakan. Jika pada LAMP menggunakan Apache, maka pada LEMP menggunakan Nginx. LEMP sendiri mengacu pada singkatan dari Linux, Nginx, MySQL. LEMP menawarkan pengelolaan web yang ringan dan kuat.
Yang menarik adalah penggunaan huruf E yang mewakili Nginx, daripada memakai huruf N. Alasan yang terkuat adalah karena dari pembacaan, Nginx terbaca dengan huruf E di depan kata-nya.
Karena yang menjadi pembeda antara LAMP dan LEMP ini terletak pada Nginx yang dipakai, mari kita ulas secara singkat apa itu Nginx. Nginx adalah web server yang berjalan di sistem operasi Linux. Nginx merupakan perangkat lunak untuk server yang sangat optimal, ringan dan cepat. Bersifat terbuka dan sudah mendukung berbagai protokol seperti HTTP, HTTPS, SMTP, POP3 dan IMAP. Nginx juga dapat berfungsi sebagai penyeimbang beban dan cache HTTP. NginX berfokus pada implementasi konsekuensi yang tinggi, kinerja yang tinggi namun penggunaan memori yang rendah.
Web Server Apache
Apache server diciptakan oleh Robert McCool pada tahun 1995, selanjutnya proyek Apache dikembangkan dan dikelola oleh Apache Software Foundation semenjak tahun 1999. Apache seringkali dipilih oleh web administrator karena fleksibilitas, kekuatan dan dukungannya yang luas. Apache juga dapat dikembangkan dengan sistem modular.
Beberapa fakta menarik tentang Apache antara lain :
- Apache Software Foundation sebagai pengelola merek dan pengembang layanan.
- Apache dikembangkan dan dikelola oleh komunitas pengembang terbuka di bawah pengelolaan Apache Software Foundation.
- Apache sebagian besar berjalan di sistem operasi Linux. Saat ini Apache telah mengelola sekitar 46% dari semua situs web di seluruh dunia.
Apache bekerja dengan baik jika menggunakan konten-konten dinamis. Apache juga mengandalkan konsep based on process, versi Apache yang terbaru yaitu Apache 2 memperkenalkan Multi-Processing Module (MPM), fungsi dari MPM ini bisa merubah Apache listen ke network, accept maupun handle request. Ada 3 macam MPM yang digunakan untuk mengatasi request yang masuk dan memproses request tersebut.
- Prefork MPM
Prefefork MPM meluncurkan multiple child process. Setiap child process ini menangani satu koneksi pada satu waktu. MPM ini menggunakan memory yang besar dan juga default MPM yang digunakan Apache2.
- Worker MPM
Worker MPM melakukan generate multiple child process serupa dengan Prefork. Setiap child process menjalankan banyak thread. Setiap thread menangani satu koneksi pada satu waktu.
- Event MPM
Event MPM dikenalkan Apache versi 2.4. Cara kerjanya sama dengan Worker MPM, namun ini di desain untuk mengelola load yang tinggi. MPM ini mengizinkan request lebih yang harus dilayani secara bersamaan dengan melewati beberapa proses untuk mendukung threads. Dengan menggunakan MPM Apache ini mencoba memperbaiki masalah “Keep-Alive”.
Sedikit penjelasan mengenai apa itu Keep-Alive, keep-alive ini membuat koneksi ganda untuk menurunkan loading time. Benefitnya :
-
- Reduce CPU Usage
Membuat koneksi TCP baru membutuhkan banyak resource seperti CPU dan Memory Usage. Menjaga koneksi tetap hidup lebih lama (keep-alive) dapat menurunkan pengguna resource yang berlebihan.
-
- Web page Speed
Kemampuan untuk menangani file dengan menggunakan koneksi yang sama dapat menurunkan latency dan mengizinkan web pages untuk mempercepat load time.
-
- HTTPS.
HTTPS adalah koneksi yang lebih aman dari HTTP, karena menggunakan Secure Socket Layer (SSL). SSL ini adalah salah satu resource yang intensif. Sehingga direkomendasikan dengan mengaktifkan Keep-Alive untuk HTTPS connetions.
Web Server Nginx
Nginx bekerja dengan baik jika menggunakan konten statis. Nginx mengenalkan arsitektur asynchronous, events-driven architecture. Juga mengandalkan konsep based on event.
Penggunaan desain non-synchronized atau asynchronous ini dapat menerima high loads. Nginx cocok digunakan untuk menjalankan satu worker process untuk setiap CPU. Sehingga dapat memaksimalkan efesiensi dari sebuah hardware.
Teknologi Nginx juga support FastCGI dan CSGI handler untuk melayani script konten dinamis seperti PHP dan Python. Stacknya menggunakan LEMP.
Perbedaan Apache dan Nginx
Banyak perbedaan yang harus diketahui antara kedua web server ini, berikut penjelasannya :
1. Konsep
Apache mengandalkan konsep based on process. Maksudnya adalah membuat proses dan pekerjaan hanya jika ada request. Sedangkan Nginx mengandalkan konsep based on event. Maksudnya adalah Nginx tidak akan memproses suatu pekerjaan meskipun ada request baru. Jadi, Nginx merupakan web server yang bekerja multi-tasking.
2. Performance
Static Content – Nginx lebih cepat 2.5 dibandingkan dengan Apache.
Dynamic Content – Keduanya saat ini hampir mirip, karena Apache dan Nginx sama-sama support PHP-FPM, juga dengan Varnish atau Memcached Cache.
3. OS Support
Apache bekerja dengan banyak varian Unix system (seperti Linux atau BSD) dan support penuh Microsoft Windows. Sedangkan Nginx pada Windows hanya sedikit.
4. Security
Apache menawarkan tips konfigurasi menangani DDoS Attack termasuk dengan Mod Evasive, module yang berurusan dengan HTTP DoS, DDoS atau Brute Force Attack. Sedangkan Nginx menawarkan untuk dapat melakukan limitasi pada jumlah request dan jumlah koneksi pada konfigurasi Nginx.
Shared Hosting biasanya menggunakan Apache karena bisa menangani banyak modul dinamis. Sedangkan Nginx sangat populer untuk VPS Hosting, Dedicated Hosting atau Cluster Container.