Leher Botol, sering dicekek dan dikatain tapi jarang yang mau jelasin

Leher botol pembawa petaka

Apa yang terjadi saat website anda susah diakses atau tiba-tiba flashsale terhenti dan website down karena bottleneck

Disclaimer : artikel ini untuk kaum awam, jadi saya coba menjelaskan dengan cara sederhana, kadang agak meleset tapi percayalah saya sedang mencoba mencari analogi dan logika yang tepat namun sederhana


Apa saja yang ada di server websitemu

Apa saja yang ada di webserver ? kenapa overload ? apa saja fungsinya ? itu yang sering menjadi pertanyaan awam atau mereka yang tidak memahami how web server works

Webserver

Webserver ini bertugas menampilkan kode pemrograman anda dalam format HTML, yak, semua dalam bentuk statis HTML dan CSS,

Untuk web dinamis seperti PHP dan yang memerlukan Database gimana ? diperlukan "mesin" tambahan

PHP Intepreter

Agar bisa memahami PHP, maka diperlukan mesin penterjemah PHP yang ditambahkan kedalam webserver

Kalau kita pengen nyimpen data kedalam database seperti MySQL atau MariaDB gimana caranya ?

Database Server

Server Data diperlukan agar kita bisa nyimpen data dan diperlukan bahasa tambahan untuk mengambil, mengolah, dan mengirimkan data. Bahasa tadi dikenal dengan nama Structured English Query Language atau SEQUEL yang kemudian kita kenal dengan nama pendek SQL, Aplikasi Database yang populer adalah MySQL, MariaDB dan Postgresql, meskipun ada banyak lagi Aplikasi Databaseyang lain

Mesin tadi merupakan 3 tool dasar, untuk beragam kebutuhan biasanya kita memerlukan beberapa mesin tambahan, misal :

  • Kalau pengen punya alamat email dan bisa ngirim email gimana ?

Kita harus nambah email server untuk fungsi terima, kirim, dan simpan email di server kita

  • Kalau pengen aman gimana ?
  • Kita harus membatasi akses ke masing-masing pintu, yang sering disebut port.
  • Memisahkan mesin web dan mesin data serta membatasi akses ke mesin data
  • Menentukan kunci akses ke mesin data

Dan itu belum tentu 100% aman kalau pengguna web kita bacotan dan gak bisa jaga data pribadi, terutama mudah tergoda pishing dan social hacking


Kenapa webnya lambat?

Percaya atau tidak, kebanyakan overload proses di website kita itu tidak terjadi di webserver, melainkan di SQL Server. Kebanyakan kita tidak sadar karena menggabungkan kedua server tersebut kedalam 1 mesin. Untuk mengurangi kemungkinan tersebut, apa yang harus kita lakukan selain menjamin kebutuhan bandwith dan mesin yang mumpuni ? ini langkah sederhana yang bisa kita lakukan

  • Pisahkan mesin web dan Databasemu

Memisahkan mesin ini hanya bisa kita jalankan di dedicated server atau VPS. Untuk shared hosting, langkahnya akan ribet dan menurut saya nggak layak untuk diperjuangkan, mirip dengan mantan yang udah punya yayang atau malah udah nikah duluan.

Dengan memisah mesin, kita bisa mengamati load yang besar terjadi dimana.

  • Sederhanakan Struktur database dan Querymu

Menyederhanakan database dan query merupakan hal paling utama, analoginya, hindari cewek yang suka drama. Usahakan kebutuhan data bisa dipenuhi hanya dalam 1 -2 tabel. Semakin ribet data anda, semakin mudah dibuat ngebul server anda. Karena itu desain database dan query yang ringkas sangat membantu kinerja servermu.

Masih ada beberapa trik lagi, tapi pada dasarnya itu yang harus kita prioritaskan, dan percayalah juga bahwa kalau tahu detailnya itu ribet.

Kok bisa yang overload SQL Servernya ?

Awalnya saya berasumsi kalau PHPnya yang bikin berat, proses perhitungan dan banyak hal lagi yang bikin berat. Tetapi ternyata, menyediakan data sesuai kebutuhan perhitungan tersebut lebih memakan banyak waktu dan sumberdaya.

Sebagai gambaran sederhana, saya akan bikin gambaran apa yang terjadi pada satu request :

Saya pengen tau total SPP yang belum dibayar oleh si fulan

Webserver + PHP Server

  • Kirim permintaan data si fulan dan SPP yang belum dibayar
  • Tampilin Data

SQL Server

  • Otentifikasi yang minta data punya akses yang cukup apa nggak
  • Cari data si fulan
  • Cari data transaksi pembayaran SPP
  • Cari tagihan yang belum dibayar
  • Otentifikasi data udah bener apa belum
  • Urutin dan bikin tabel datanya
  • Kirimkan data ke webserver

kalau struktur datamu tidak efisien, langkah tadi bisa lebih panjang lagi, kalikan proses tadi dengan berapa kali kita klik halaman, melakukan proses pengisian form. Itu sebabnya desain database yang efisien sangat berpengaruh pada kinerja web anda selain penggunaan data gambar yang berlebihan dan tidak terkompresi dengan baik.

error: Alert: Content selection is disabled!!