Kamu mengetik sebuah alamat, menekan Enter, dan sepersekian detik kemudian satu halaman web utuh muncul di layarmu. Di ujung sana, ada sebuah program yang sedari tadi diam menunggu permintaanmu datang — dan begitu permintaan itu tiba, program tadi langsung mencari halaman yang tepat lalu mengirimkannya balik ke kamu. Program itu namanya web server, dan dia salah satu potongan software paling penting di seluruh internet.
Istilah ini sering dipakai dengan longgar: kadang merujuk ke mesin, kadang ke sebuah software, kadang ke keseluruhan susunan hosting. Ayo kita paku artinya pelan-pelan. Begitu kamu lihat persis apa yang dikerjakan web server dan apa yang bukan tugasnya, sebagian besar cara kerja website di dunia online berhenti terasa seperti sihir.
Web server itu sebenarnya apa
Web server adalah program yang menunggu permintaan yang datang lewat jaringan, lalu menjawabnya dengan konten web — biasanya halaman HTML, tapi juga gambar, stylesheet, script, font, dan berkas. Untuk percakapan ini, dia memakai bahasa khusus bernama HTTP (dan versi amannya, HTTPS), yaitu seperangkat aturan yang disepakati browser dan server untuk saling berbicara.
Kalau dikupas habis, web server cuma melakukan tiga hal, berulang-ulang, jutaan kali sehari:
- Mendengarkan permintaan yang masuk lewat sebuah port jaringan.
- Mencari tahu apa yang diminta oleh permintaan itu.
- Menjawab dengan konten yang tepat, atau dengan pesan error kalau dia tidak bisa.
Itu seluruh tugasnya. Hal lain — caching, kompresi, keamanan, melayani ribuan pengunjung sekaligus — semuanya dibangun di atas loop sederhana tadi.
Perhatikan kata program. Web server itu software. Dia berjalan di atas sebuah komputer, tapi dia bukan komputernya. Ide besarnya sudah kita bahas di apa itu server — dan bedanya itu penting di sini, jadi ayo kita perjelas.
Dua makna 'web server', dan cara membedakannya
Orang memakai “web server” untuk dua hal yang berbeda. Kadang yang dimaksud adalah software-nya — program yang menjawab permintaan HTTP. Kadang yang dimaksud adalah mesin-nya — komputer fisik atau virtual tempat software itu berjalan. Kalau ada yang bilang “aku me-restart web server”, biasanya yang dimaksud software-nya. Kalau ada yang bilang “web server-nya punya RAM 16 GB”, yang dimaksud perangkat kerasnya. Dua-duanya lazim dipakai, jadi biarkan sisa kalimatnya yang memberi tahu mana yang dimaksud.
Bedanya web server dengan mesin tempat dia berjalan
Bagian ini hampir selalu bikin orang bingung di awal, jadi pantas kita pelan-pelan. Satu komputer bisa menjalankan banyak program sekaligus: database, penangan email, alat backup, dan sebuah web server, semuanya di satu mesin. Web server itu cuma satu program dari tumpukan tadi yang tugasnya menjawab permintaan HTTP.
Ini gambaran susunannya:
┌──────────────────────────────────────────┐
│ Mesinnya (perangkat keras) │
│ ┌────────────────────────────────────┐ │
│ │ Sistem operasi (Linux) │ │
│ │ ┌──────────┐ ┌───────────────┐ │ │
│ │ │ web │ │ database │ │ │
│ │ │ server │ │ server │ │ │
│ │ │ software │ │ software │ │ │
│ │ └──────────┘ └───────────────┘ │ │
│ └────────────────────────────────────┘ │
└──────────────────────────────────────────┘
Software web server cuma satu kotak di dalam sistem operasi, di dalam mesin. Kamu bisa mematikan dan menyalakannya tanpa mengusik apa pun yang lain di komputer itu. Kalau mau, kamu bahkan bisa menjalankan dua program web server yang sama sekali berbeda di satu mesin. Dan software web server yang persis sama bisa berjalan di laptop mungil maupun di rak server raksasa di sebuah data center — software-nya tidak peduli, dia cuma menjalankan loop dengar-cari-tahu-jawab di mana pun dia tinggal.
Jadi ketika orang bilang “komputer apa pun bisa jadi web server”, yang sebenarnya mereka maksud adalah: komputer apa pun bisa menjalankan software web server. Begitu software itu jalan dan bisa dijangkau lewat jaringan, mesin tersebut sedang memerankan diri sebagai web server.
Bahasa yang dia pakai: HTTP
Web server dan browser tidak bisa asal teriak satu sama lain — mereka butuh format yang sama, persis seperti dua orang butuh bahasa yang sama untuk mengobrol. Format bersama itu namanya HTTP, kepanjangan dari HyperText Transfer Protocol.
Saat browser-mu ingin sebuah halaman, dia mengirim permintaan HTTP yang kira-kira tampak begini:
GET /tentang HTTP/1.1
Host: blog.acy-partner.com
Baris pertama itu, dalam bahasa sehari-hari, berarti: “Pakai HTTP, tolong GET-kan aku sumber daya di path /tentang.” Web server membacanya, mencari (atau menyusun) konten yang tepat, lalu membalas dengan jawaban HTTP:
HTTP/1.1 200 OK
Content-Type: text/html
<!DOCTYPE html>
<html> … halaman aslinya … </html>
Bagian 200 OK itu adalah status code — vonis singkat dari server soal bagaimana hasilnya. 200 berarti berhasil. Kamu mungkin sudah pernah ketemu 404 (server sudah mencari, tapi tidak ada apa-apa di path itu) dan barangkali 500 (server sudah berusaha, tapi ada yang rusak di sisinya). Kode-kode itu adalah cara web server memberi tahu kamu, dengan format yang baku, apa yang terjadi pada permintaanmu.
Kamu sudah lebih paham HTTP daripada yang kamu kira
Setiap kali kamu melihat halaman “404 Not Found”, sebenarnya kamu sedang membaca pesan langsung dari sebuah web server. Dia menerima permintaanmu, mengecek apakah dia punya sesuatu di alamat itu, ternyata kosong, lalu dengan sopan mengembalikan status 404 ketimbang sebuah halaman. Grafik manis yang muncul di layar itu cuma cara situsnya mendandani kode polos tadi. Status code adalah kosakata web server untuk berkata “ini dia”, “tidak ketemu”, atau “ada yang salah” — dan kosakata itu sama di seluruh web.
Apa yang terjadi saat kamu membuka sebuah halaman
Ayo kita telusuri satu permintaan utuh, dari awal sampai akhir, dengan web server sebagai pemeran utama. Misalnya kamu membuka halaman utama ACY Partner Indonesia:
1. Kamu mengetik alamatnya dan menekan Enter.
2. Browser-mu mengirim permintaan HTTP lewat jaringan
ke web server yang menampung situs itu.
3. WEB SERVER menerima permintaan tadi dan membaca path-nya.
4. Dia salah satu dari:
- mengambil berkas yang sudah jadi (misalnya halaman .html), atau
- meminta program lain menyusun halamannya saat itu juga.
5. Hasilnya dia bungkus dalam jawaban HTTP berikut status code-nya.
6. Jawaban itu kembali melintas balik ke browser-mu.
7. Browser-mu membaca HTML-nya dan mulai menggambar halaman —
lalu mengirim LEBIH BANYAK permintaan untuk tiap gambar,
stylesheet, dan script yang dibutuhkan halaman itu, dan
server menjawab satu per satu.
Langkah terakhir tadi sering bikin orang kaget: membuka “satu halaman” jarang berarti satu permintaan saja. Satu halaman bisa menarik sebuah stylesheet, beberapa script, satu font, dan belasan gambar — dan tiap-tiap dari itu adalah permintaan kecilnya sendiri yang dijawab web server. Web server sebuah situs yang ramai sedang menghadapi badai permintaan semacam ini terus-menerus, sepanjang hari, setiap hari.
Konten statis vs. konten yang disusun dadakan
Langkah ke-4 di atas menyembunyikan satu persimpangan penting, dan ini pantas kita bongkar karena bentuknya memengaruhi cara tiap situs dibangun.
Kadang hal yang kamu minta memang sudah ada sebagai berkas, tersimpan di disk, sudah jadi dan tinggal menunggu. Gambar logo, PDF yang bisa diunduh, halaman HTML yang sudah ditulis sebelumnya — web server tinggal membaca berkasnya lalu mengirimnya. Ini disebut konten statis: server membagikan persis apa yang tersimpan, tanpa diubah.
Kadang yang lain, halamannya belum ada saat kamu memintanya. Bayangkan dashboard pribadimu, atau hasil pencarian, atau halaman produk dengan jumlah stok yang hidup. Untuk yang seperti ini, web server tidak bisa sekadar membaca berkas — halamannya harus dibuat khusus untuk permintaan ini. Maka web server menyerahkan pekerjaannya ke program lain (sering disebut application server atau backend) yang menyusun halaman itu, lalu web server mengirimkan hasil yang baru jadi tadi balik ke kamu. Ini disebut konten dinamis.
STATIS DINAMIS
────── ───────
browser minta /logo.png browser minta /dashboard
│ │
▼ ▼
web server membaca berkasnya web server menyerahkan tugasnya ke
dari disk, kirim apa adanya program backend, yang menyusun
halamannya, lalu mengirimnya balik
Sebagian besar hari seorang web server dihabiskan untuk memutuskan jalur mana yang ditempuh sebuah permintaan: “Bisa aku jawab sendiri dari sebuah berkas, atau aku perlu mengopernya?” Mekanisme pemisahan ini layak dapat ulasannya sendiri yang lebih dalam, tapi untuk sekarang ide kuncinya cukup ini saja: kedua jenis konten itu kembali ke kamu lewat web server yang sama, dengan bahasa HTTP yang sama.
Kenapa web server begitu penting
Web server adalah pintu depan untuk semua yang kamu publikasikan online. Frontend-mu yang cantik, database-mu yang penuh catatan, logika backend-mu yang pintar — tak satu pun dari itu sampai ke pengunjung kalau tidak ada web server yang menerima permintaan lalu menyodorkan jawaban. Dialah resepsionis yang menyala terus-menerus, yang mengubah “sekumpulan berkas di sebuah mesin entah di mana” menjadi “sebuah website yang bisa dibuka seluruh dunia”.
Di situ juga banyak keputusan praktis berlabuh. Seberapa cepat halamanmu dimuat, apakah koneksimu dienkripsi dengan HTTPS, bagaimana situs bertahan saat trafik tiba-tiba melonjak, bagaimana permintaan diarahkan ke tempat yang tepat — semua itu pekerjaan yang berada di lapisan web server. Kamu tidak harus menguasai semuanya hari ini. Tapi tahu bahwa satu program duduk di pusat dari semua itu, mendengarkan dan menjawab, memberimu jangkar pikiran untuk semua yang menyusul.
Pahami web server, dan sisa infrastruktur web punya sesuatu yang kokoh untuk ditempeli. Hosting, domain, HTTPS, proxy, scaling sampai jutaan pengunjung — masing-masing sebenarnya cuma pertanyaan “bagaimana kita membuat loop sederhana web server ini jadi lebih cepat, lebih aman, atau lebih besar?”
Penutup
Ini rangkuman semuanya dalam satu tempat:
- Web server adalah program yang menunggu permintaan jaringan lalu menjawabnya dengan konten web — halaman, gambar, berkas — memakai protokol HTTP.
- Seluruh tugasnya adalah loop sederhana: dengarkan, cari tahu apa yang diminta, jawab (atau kembalikan error seperti
404). - Web server itu software, terpisah dari mesin tempat dia berjalan. Satu komputer bisa menjalankan web server berdampingan dengan program lain, dan software web server yang sama bisa jalan di mana saja.
- Browser dan web server berbicara dalam HTTP, memakai permintaan (
GET /tentang) dan jawaban yang membawa status code (200,404,500). - Membuka satu halaman biasanya berarti banyak permintaan — satu untuk halamannya, ditambah satu untuk tiap gambar, script, dan stylesheet yang dibutuhkan.
- Web server bisa mengirim konten statis (berkas yang dibaca langsung dari disk) atau mengoper ke backend untuk menyusun konten dinamis khusus permintaan itu.
Berikutnya, ada baiknya kita perbesar loop dengar-cari-tahu-jawab tadi dan menontonnya berjalan langkah demi langkah — persis cara kerja web server di balik layar, dari saat sebuah permintaan mendarat sampai saat sebuah jawaban berangkat.