Inti dari lingkungan backend adalah menyampaikan data kepada pengguna secara stabil. Untuk itu, tiga elemen inti yang wajib ada adalah web server, WAS, dan database. Ketiganya terus berevolusi untuk menyelesaikan berbagai masalah yang muncul dalam proses perkembangan web. Teknologi tingkat lanjut seperti monitoring, load balancing, caching, pipeline CI/CD, dan Kubernetes ibarat membangun rumah yang bisa runtuh kapan saja bila pemahaman tentang tiga elemen ini tidak didahului terlebih dahulu.
Pertama, peran web server
Peran utama web server adalah sebagai file server yang mengirimkan file, dan contoh web server yang umum antara lain Nginx, Apache, IIS, dan Caddy. Web server semacam ini setia pada fungsi dasarnya, yaitu menyediakan file statis, dan telah dioptimalkan secara sangat tinggi.
Kedua, kemunculan dan peran WAS (Web Application Server)
WAS bekerja dengan cara menerima permintaan tertentu, menjalankan program yang sudah ditentukan sebelumnya, lalu menampilkan hasil yang dibuat program tersebut kepada pengguna. Cara kerja ini bisa disebut sebagai kelahiran backend yang sesungguhnya, yakni momen ketika server melampaui sekadar menampilkan file dan mulai berpikir, melakukan komputasi, serta memproses logika. Web server selalu mengembalikan halaman statis yang sama, sedangkan WAS mengembalikan halaman dinamis.
Ketiga, kebutuhan dan peran database
Database berperan untuk menyimpan data secara permanen, mengelolanya dengan aman, dan mengendalikan akses bersamaan.
Selain itu, hal-hal yang sangat berguna untuk diketahui dalam perencanaan backend mencakup desain RESTful API (prinsip desain API berbasis gaya arsitektur REST seperti desain URL yang berpusat pada resource, makna HTTP (GET, POST, PUT, DELETE, dan lain-lain), serta penggunaan status code), autentikasi (pemahaman dasar tentang autentikasi pengguna dan metode pemberian otorisasi seperti autentikasi berbasis sesi, serta penyusunan kebijakan manajemen pengguna), dan penanganan error (konsep penanganan kasus pengecualian yang esensial untuk menjamin stabilitas sistem).
8 komentar
Saya kira backend di dunia ini cuma memakai protokol web
Katanya 3 elemen inti backend, tapi malah muncul web server jadi bikin pusing
ALB dan CDN pada dasarnya sudah menangani semua hal yang biasanya diharapkan dari web server, jadi saya kurang paham kenapa masih harus bersikeras memakai itu. Apakah kalian punya contoh keamanan atau hal serupa yang secara nyata bisa dicegah karena adanya web server?
Artinya, jika ALB secara fungsional menggantikan web server dan pengguna tidak bisa langsung mengakses backend seperti WAS, maka itu dianggap sudah memenuhi konfigurasi lingkungan keamanan yang ada. Dan masih banyak layanan yang hingga sekarang tetap berjalan di lingkungan on-premise.
Dari sisi keamanan, saya masih berpendapat bahwa Web Server / server WAS tetap perlu dipisahkan. Di lingkungan cloud-native pun tidak ada yang berubah. Backend seperti WAS tidak boleh berada di layer yang bisa diakses langsung oleh pengguna.
Apakah memahami konsep web server / WAS masih tetap bermakna?
Pada masa ketika Java EE, php, dan CGI sedang populer, itu memang pembedaan yang tepat, tetapi sekarang hampir semua bahasa sudah memiliki HTTP server bawaan, dan dengan muncul serta menjadi lumrahnya konsep seperti ALB, API Gateway, CDN, dan Object Storage, zamannya sudah berubah.
Saya malah merasa bahwa tanpa konteks sejarah, konsep tentang Web Server dan WAS yang sangat berbeda dari kondisi sekarang itu bukan lagi konsep yang tepat, dan justru hanya akan menimbulkan kebingungan yang lebih besar bagi para pemula.
Di bidang fintech, karena persyaratan keamanan, masih banyak lingkungan yang memisahkan Web-WAS. Karena kita tidak tahu akan ditempatkan di lingkungan seperti apa, menurut saya benar untuk mempersiapkan apa pun terlebih dahulu, hehe.
Bahkan di lingkungan cloud seperti sekarang, ini digunakan untuk menyeimbangkan beberapa WAS secara efisien di dalam satu instance demi menangani volume besar
Jika permintaan jaringan sedikit, ini mungkin tidak diperlukan
Saya setuju. Mengajarkan prinsip 12-factor app dan pola cloud-native tampaknya akan lebih praktis. Konsepnya sendiri sudah terlalu usang.