Back-End Components

Komponen utama back-end

A. Back End Servers

Back end server adalah perangkat keras (hardware) dan sistem operasi (OS) yang menjalankan seluruh proses dan komponen aplikasi web dari sisi belakang (server-side). Inilah sistem nyata yang menjalankan logika, database, dan layanan utama dari aplikasi web.

Back end server umumnya berada dalam lapisan yang disebut Data Access Layer—yakni lapisan yang bertanggung jawab menangani komunikasi dengan data.


Komponen Software

Server back end biasanya menjalankan tiga komponen utama:

  • Web Server (misalnya: Apache, NGINX, IIS)

  • Database (misalnya: MySQL, PostgreSQL, MSSQL, Oracle)

  • Development Framework (misalnya: PHP, ASP.NET, Java, Python/Django)

Selain itu, server juga bisa menjalankan:

  • Hypervisor (untuk virtualisasi, seperti VMware, Hyper-V)

  • Container (seperti Docker)

  • Web Application Firewall (WAF) untuk proteksi dari serangan


Stack Kombinasi Umum

Berikut adalah beberapa kombinasi software stack yang populer di dunia pengembangan web:

Kombinasi

Komponen

LAMP

Linux, Apache, MySQL, PHP

WAMP

Windows, Apache, MySQL, PHP

WINS

Windows, IIS, .NET, SQL Server

MAMP

macOS, Apache, MySQL, PHP

XAMPP

Cross-platform, Apache, MySQL, PHP/Perl


Komponen Hardware

Server back end juga mencakup komponen perangkat keras seperti:

  • CPU

  • RAM

  • Storage (HDD/SSD)

  • NIC (Network Interface Cards)

  • PSU (Power Supply Units)

Performa hardware sangat berpengaruh terhadap:

  • Kecepatan respon aplikasi

  • Stabilitas sistem

  • Kemampuan menangani banyak permintaan (scalability)


Arsitektur Skala Besar

Untuk aplikasi berskala besar, tidak cukup hanya satu server. Biasanya:

  • Beban aplikasi dibagi ke beberapa server back end

  • Digunakan arsitektur load balancing atau clustered server

  • Di-host di data center atau menggunakan cloud hosting seperti AWS, Azure, GCP

  • Menjalankan banyak virtual machine atau container (misalnya via Kubernetes)

Dengan model ini, aplikasi dapat:

  • Menangani lebih banyak pengguna secara bersamaan

  • Memiliki redundansi jika satu server gagal

  • Lebih fleksibel untuk scaling


B. Web Servers

Web server adalah aplikasi yang berjalan di sisi back end, bertugas menangani semua permintaan HTTP dari browser pengguna, mengarahkannya ke halaman atau resource yang diminta, dan kemudian mengirimkan respons kembali ke browser.

Web server biasanya berjalan di port TCP 80 (HTTP) atau 443 (HTTPS), dan menjadi perantara utama antara pengguna dan fungsionalitas aplikasi web di sisi server.


Cara Kerja (Workflow)

Web server menerima permintaan dari browser pengguna (request), memprosesnya, lalu memberikan respons berupa:

  • Kode status HTTP (seperti 200, 404, dll)

  • Data halaman (HTML, JSON, dsb)

  • File (gambar, video, dokumen, dll)

Beberapa kode status HTTP umum:

Kode

Deskripsi

✅ Respons Sukses

200 OK

Permintaan berhasil

🔁 Redirect (Pengalihan)

301

Alamat URL berubah permanen

302

Alamat URL berubah sementara

❌ Error dari Klien

400

Permintaan tidak valid

401

Belum login

403

Akses ditolak

404

Halaman tidak ditemukan

405

Metode HTTP tidak diizinkan

408

Waktu permintaan habis

💥 Error dari Server

500

Kesalahan internal server

502

Gateway menerima respons tidak valid

504

Gateway tidak merespons tepat waktu

Web server juga menangani berbagai jenis input pengguna, seperti:

  • Formulir

  • Data JSON (via API)

  • Upload file (binary)


Contoh Penggunaan curl

Melihat header HTTP response:

curl -I https://academy.hackthebox.com

Melihat isi halaman:

curl https://academy.hackthebox.com

Jenis-Jenis Web Server

1. Apache HTTP Server

  • Web server paling populer, digunakan oleh >40% website di internet.

  • Umumnya digunakan bersama PHP, tapi juga bisa untuk Python, Perl, .NET, dll.

  • Modul yang umum digunakan: mod_php, mod_rewrite, dll.

  • Open-source, stabil, mudah dikonfigurasi.

  • Cocok untuk: startup, website kecil-menengah.

  • Contoh perusahaan pengguna: | Apple | Adobe | Baidu |


2. Nginx

  • Fokus pada kinerja tinggi dan konkurensi tinggi (banyak request sekaligus).

  • Paling banyak digunakan untuk website dengan traffic besar.

  • Arsitektur asinkron, ringan, cepat.

  • Banyak digunakan sebagai reverse proxy atau load balancer.

  • Contoh perusahaan pengguna: | Google | Facebook | Twitter | Cisco | Intel | Netflix | HackTheBox |


3. IIS (Internet Information Services)

  • Buatan Microsoft, berjalan di Windows Server.

  • Cocok untuk aplikasi berbasis .NET dan integrasi Active Directory.

  • Mendukung PHP, FTP, dan lainnya.

  • Fitur: Windows Authentication, integrasi domain.

  • Contoh pengguna: | Microsoft | Office365 | Skype | Stack Overflow | Dell |


4. Web Server Lainnya

Selain 3 besar di atas, ada juga:

  • Apache Tomcat – khusus untuk aplikasi berbasis Java Servlet/JSP

  • Node.js – digunakan untuk aplikasi JavaScript (biasanya dengan Express.js)

  • Caddy, LiteSpeed, OpenResty, dsb.


Kesimpulan

Web Server

Cocok Untuk

Kelebihan

Apache

Umum, aplikasi PHP

Mudah dikonfigurasi, banyak modul

NGINX

Website dengan traffic besar

Ringan, cepat, cocok untuk reverse proxy

IIS

Aplikasi Windows/.NET

Integrasi AD, manajemen via GUI


C. Databases

Database adalah sistem penyimpanan data yang digunakan oleh aplikasi web untuk menyimpan dan mengelola konten, data pengguna, dan aset aplikasi seperti file, gambar, postingan, dll. Dengan menggunakan database, aplikasi web bisa membuat konten yang dinamis dan spesifik untuk setiap pengguna.


Tujuan Penggunaan Database

Developer memilih database berdasarkan faktor seperti:

  • Kecepatan akses data

  • Kapasitas penyimpanan

  • Skalabilitas untuk pertumbuhan

  • Biaya operasional


Relational Database (SQL)

Relational Database menyimpan data dalam format tabel (table), yang terdiri dari baris (rows) dan kolom (columns). Masing-masing tabel bisa saling terhubung lewat key untuk membentuk hubungan antar data (schema).

Contoh:

  • Tabel users: menyimpan id, username, first_name, last_name

  • Tabel posts: menyimpan post_id, user_id, content, date

Relasi antar tabel membuat query seperti: “Tampilkan semua postingan milik user dengan username X” menjadi sangat efisien.

Database Relational yang umum:

Tipe

Deskripsi

Paling populer, open-source, gratis

Buatan Microsoft, cocok untuk Windows/IIS

Kuat dan kompleks, tapi mahal

Gratis, open-source, sangat fleksibel dan extensible

Database lain: SQLite, MariaDB, Amazon Aurora, Azure SQL


Non-Relational Database (NoSQL)

Tidak menggunakan struktur tabel/kolom. Ideal untuk:

  • Data tidak terstruktur

  • Fleksibilitas tinggi

  • Skala besar

Tipe penyimpanan:

  • Key-Value (mirip dictionary di Python)

  • Document-Based (JSON/XML)

  • Wide-Column

  • Graph

Contoh struktur JSON dari Key-Value:

{
  "100001": {
    "date": "01-01-2021",
    "content": "Welcome to this web application."
  }
}

Database NoSQL populer:

Tipe

Deskripsi

Document-based, JSON, sangat populer

Untuk indexing dan pencarian cepat

Cocok untuk high availability dan skala besar

Lainnya: Redis, Neo4j, CouchDB, Amazon DynamoDB


Integrasi dengan Aplikasi Web

Semua framework modern (seperti Laravel, Express, Django) sudah menyediakan cara mudah untuk menghubungkan aplikasi ke database.

Contoh dasar PHP + MySQL:

$conn = new mysqli("localhost", "user", "pass");
$sql = "CREATE DATABASE database1";
$conn->query($sql);

Query dengan input pengguna:

$searchInput = $_POST['findUser'];
$query = "SELECT * FROM users WHERE name LIKE '%$searchInput%'";
$result = $conn->query($query);

Menampilkan hasil:

while($row = $result->fetch_assoc()){
    echo $row["name"]."<br>";
}

Risiko Keamanan: SQL Injection

Jika input pengguna tidak disanitasi, kode seperti ini:

"SELECT * FROM users WHERE name LIKE '%$searchInput%'"

…bisa disusupi SQL Injection seperti:

' OR 1=1 --

Maka, filtering dan prepared statements sangat penting untuk mencegah serangan.

Last updated