Sering saya dapatkan pertanyaan dari kawan apakah website yang akan dibuatnya cukup untuk dihandle oleh server dari Cloud Provider A dengan harga sekian. Jawaban saya selalu sama TERGANTUNG. Terlepas mereka akan membuat suatu web company profile hanya menampilkan branding perusahaan, web kaya analitik, hingga suatu web e-commerce jawabannya sama tergantung. Bagaimana bisa ? Lantas apa yang menjadi tolak ukurnya ?
Baca Juga: Mengenal Performa Website Melalui Page Speed Insight
Tentu berbeda kebutuhan server bagi web sekedar company profile, web analitik, hingga e-commerce. Bagi saya setelah hampir 15 tahun di industri ini, menentukan server sangan tergantung dari aplikasi yang dijalankan dan jumlah pengunjung dalam satuan waktu. Sehingga web company profile asuransi kecil yang hanya dikunjungi kurang dari 3 pengunjung per detik dan web company profile RANS entertainment yang dikunjungi ribuan pengunjung perdetik misalnya membutuhkan spesifikasi server yang berbeda. Best practice yang biasa digunakan yakni suatu server memiliki cukup memori untuk menjalankan aplikasinya ditambah lonjakan maksimum pengguna yang direncanakan. Misal anda merencanakan untuk memiliki web company profile berbasis PHP yang dikunjungi cukup 10 orang per hari maka server cloud paling murah pun dapat melakukan hal tersebut. Sedangkan jika dari awal anda telah memiliki baseline pengunjung ribuan per detik tentunya anda tidak lagi berbicara satu server melainkan cluster.
K6 Grafana
Grafana meluncurkan suatu produk teknologi bernama K6 yang dapat digunakan untuk menguji performa web anda dengan mensimulasikan pengunjung. Layaknya aplikasi JMeter milik Apache, K6 yang berbasis Javascript kian digandrungi sebagai performance test yang mencakupi skenario Soak Test, Stress Test, dan Load Test.
Anda cukup membuat satu file berekstensi .js
dan masukkan kode berikut :
import http from 'k6/http';
export default function() {
http.get('http://test.k6.io');
}
Lalu jalankan k6 run --vus 10 --duration 30s script.js
dan akan mensimulasikan HTTP Get ke https://test.k6.io
dari 10 Virtual User (VU) dalam durasi 30 detik. Mudah bukan… Namun saking mudah menggunakannya banyak orang yang salah kaprak dalam penggunannya. Berikut beberapa tips untuk menggunakan K6 Grafana yang tepat sasaran.
1. K6 harus di Install di server yang berbeda dari Aplikasi yang ingin diuji
Untuk mengingstall K6, anda cukup mengikuti instruksinya di link berikut (https://k6.io/docs/get-started/installation/). Namun pastikan anda menginstall di server yang berbeda dari aplikasi yang diuji. Hal ini dikarenakan Anda tidak ingin memory server anda justru digunakan oleh K6 dalam membuat request dan tidak menyisakan memory untuk server anda menjawab requestnya.
2. Pastikan server uji memiliki kapasitas minimal lebih tinggi hingga 2 kali lipat server yang diuji
Dalam pertarungan (tanpa melihat teknik tiap petarung) seringnya petarung berbadan lebih besar diasumsikan dapat mengalahkan petarung yang lebih kecil hanya karena petarung besar memiliki masa tubuh yang lebih besar sehingga tinjunya pasti lebih kuat. Begitu juga dalam performance test, saat anda ingin membuat suatu server tenggelam dalam ribuan request hingga mati misalnya, anda perlu server yang minimal memiliki spesifikasi yang sama atau lebih. Seringnya dua kali lipat lebih besar.
3. Server uji memiliki koneksi langsung tidak melewati firewall
Jika anda ingin melihat kehandalan website anda (ataupun arsitektur teknologi anda) dalam memenuhi request misal 10,000 pengunjung dalam satu waktu anda perlu memiliki server uji yang memiliki koneksi langsung ke server aplikasi (ataupun melewati load balancer) yang tidak melewati firewall. Hal ini dikarenakan firewall memblokir request mencurigakan anda sebagai serangan (sedangkan anda sedang dalam kondisi ingin sistem anda diserang oleh anda sendiri).
K6 bisa dipakai untuk DDOS ?
Sepertinya anda cukup tertarik untuk membaca hingga bagian ini. Entah dengan tujuan kriminal maupun akademik. Jawabannya IYA, K6 dapat digunakan untuk melakukan DDOS. Meskipun anda dengan mudah dapat meningkatkan jumlah Virtual User hingga 1 juta Virtual User misalnya, anda harus pikirkan bahwa setiap request misal membutuhkan memori 120 KB maka setidaknya anda harus memiliki 120 GB dalam memori anda. Belum lagi anda akan berhadapan pertama kali dengan firewall yang pastinya akan mengendus request anda sebagai mencurigakan dan kemudian memblokir IP Anda. Namun jika anda beruntung, misal ada suatu web yang dideploy tanpa firewall dengan kapasitas server minimum, bisa jadi kurang dari 1,000 request pun anda dapat membuat web tersebut bertekuk lutut.