Model klien-peladen

**Model klien-peladen** atau **klien-server** adalah struktur aplikasi terdistribusi yang membagi tugas atau beban kerja antara penyedia sumber atau layanan, yang disebut peladen (*server*), dan peminta layanan, yang disebut klien (*client*). Sering kali klien dan peladen berkomunikasi melalui jaringan komputer pada perangkat keras yang terpisah, tetapi klien dan peladen mungkin saja berada pada perangkat yang sama. Inang peladen menjalankan satu atau lebih program peladen, yang berbagi sumber dayanya dengan klien. Klien biasanya tidak membagikan sumber daya komputasinya, tetapi meminta isi atau layanan dari peladen dan dapat berbagi isinya sendiri sebagai bagian dari permintaan tersebut. Oleh karena itu, klien memulai sesi komunikasi dengan peladen, yang menunggu permintaan masuk. Contoh aplikasi komputer yang menggunakan model klien-peladen adalah surel, pencetakan jaringan, dan Waring Wera Wanua.

## Peran klien dan peladen
Komponen peladen menyediakan fungsi atau layanan kepada satu atau banyak klien, yang memulai permintaan untuk layanan tersebut.
Peladen dikelompokkan berdasarkan layanan yang mereka beri. Misal, peladen web melayani laman web dan peladen berkas melayani berkas komputer. Sumber daya bersama dapat berupa perangkat lunak dan komponen elektronik komputer peladen, mulai dari program dan data hingga prosesor dan perangkat penyimpanan. Pembagian sumber daya peladen merupakan sebuah *layanan*.

Apakah komputer adalah klien, peladen, atau keduanya, ditentukan oleh sifat aplikasi yang membutuhkan fungsi layanan. Misal, satu komputer dapat menjalankan perangkat lunak peladen web dan peladen berkas pada saat yang sama untuk menyajikan data yang berbeda kepada klien yang membuat berbagai jenis permintaan. Perangkat lunak klien juga dapat berkomunikasi dengan perangkat lunak peladen dalam komputer yang sama. Komunikasi antara peladen, seperti untuk menyinkronkan data, terkadang disebut komunikasi *[[antar-peladen]]* atau komunikasi *peladen-ke-peladen*.

## Komunikasi klien dan peladen
Umumnya, sebuah layanan adalah pengabstrakan sumber daya komputer dan klien tidak perlu khawatir dengan kinerja peladen saat memenuhi permintaan dan memberi tanggapan. Klien hanya perlu memahami tanggapan berdasarkan protokol aplikasi yang relevan, yakni isi dan format data untuk layanan yang diminta.

klien dan peladen bertukar pesan dalam pola pengiriman pesan permintaan–tanggapan. Klien mengirim permintaan, dan peladen mengembalikan tanggapan. Pertukaran pesan ini adalah contoh komunikasi antarproses. Untuk dapat berkomunikasi, kedua atau banyak komputer harus memiliki bahasa yang sama, dan harus mengikuti aturan sehingga baik klien maupun peladen mengetahui apa yang diharapkan. Bahasa dan aturan komunikasi ditetapkan dalam protokol komunikasi. Semua protokol beroperasi dalam lapisan aplikasi. Protokol lapisan aplikasinya yang menetapkan pola dasar dialog. Untuk lebih jauh memformalkan pertukaran data, peladen dapat menerapkan antarmuka pemrograman aplikasi (APA). APA tersebut adalah lapisan pengabstrakan untuk pengaksesan layanan. Dengan membatasi komunikasi ke format isi tertentu, ini memfasilitasi penguraian (*parsing*). Dengan mengabstraksi akses, ini memfasilitasi pula pertukaran data lintas-anjungan.

Peladen dapat menerima permintaan dari banyak klien berbeda dalam waktu singkat. Sedangkan, komputer hanya dapat melakukan sejumlah tugas terbatas pada suatu waktu, dan bergantung pada sistem penjadwalan untuk mengutamakan permintaan masuk dari para klien untuk dapat menampung mereka. Untuk mencegah penyalahgunaan dan memaksimalkan ketersediaan, perangkat lunak peladen dapat membatasi ketersediaan bagi para klien, untuk mewaspadai pula serangan kegagalan layanan yang dirancang untuk memanfaati kewajiban peladen dalam mengolah permintaan — dengan membebani peladen dengan tingkat permintaan yang berlebihan. Enkripsi harus diterapkan jika informasi sensitif akan dikomunikasikan antara klien dan peladen.

## Contoh
Ketika seorang nasabah bank menjangkau layanan perbankan daring dengan peramban web (si klien), maka si nasabah akan mengajukan permintaan ke peladen web bank. Asnad log masuk pelanggan diperbandingkan dengan pangkalan data, dan peladen web mengakses peladen pangkalan data tersebut sebagai klien. Lalu peladen aplikasi menafsirkan data yang dikembalikan dengan menerapkan logika bisnis bank dan menyediakan keluaran ke peladen web. Terakhir, peladen web mengembalikan hasilnya ke peramban web klien untuk ditampilkan.

Pada setiap langkah rangkaian pertukaran pesan klien-peladen ini, komputer mengolah permintaan dan mengembalikan data. Ini adalah pola pengiriman pesan permintaan-tanggapan. Ketika semua permintaan dipenuhi, rangkaian akan selesai.

Contoh ini menggambarkan pola rancangan yang berlaku untuk model klien-peladen: pemisahan perhatian.

## Sisi peladen

Sisi-peladen mengacu pada program dan operasi yang berjalan di peladen. Ini berbeda dengan program dan operasi sisi-klien yang berjalan di klien. (Lihat di bawah)

### Konsep umum
"Perangkat lunak sisi-peladen" mengacu pada aplikasi komputer, misal peladen web, yang berjalan pada perangkat keras peladen jarak jauh, yang dapat diakses dari komputer, ponsel cerdas, atau perangkat lain milik pengguna setempat. Operasi dapat dilakukan di sisi-peladen karena memerlukan akses ke informasi atau fungsi yang tidak tersedia di klien, atau karena melakukan operasi tersebut di sisi-klien akan lambat, tidak dapat diandalkan, atau tidak aman.

Program klien dan peladen dapat berupa program yang umum tersedia seperti peladen web dan peramban web gratis atau komersial, yang saling berkomunikasi menggunakan protokol baku. Atau, pemrogram dapat menulis peladen, klien, dan protokol komunikasi mereka sendiri yang hanya dapat digunakan bersama-sama.

Operasi sisi-peladen mencakup operasi yang dilakukan sebagai tanggapan terhadap permintaan klien, dan operasi yang tak-berorientasi pada klien seperti tugas pemeliharaan.

### Keamanan komputer
Dalam konteks keamanan komputer, kerentanan atau serangan sisi-peladen merujuk pada kerentanan atau serangan yang terjadi pada sistem komputer peladen, bukan pada sisi klien, atau di antara keduanya. Misalnya, seorang penyerang mungkin memanfaati kerentanan penyuntikan SQL dalam aplikasi web untuk mengubah atau mendapatkan akses tak sah ke data dalam pangkalan data peladen. Atau, penyerang dapat membobol sistem peladen menggunakan kerentanan pada sistem operasi yang mendasarinya dan kemudian dapat mengakses pangkalan data dan berkas lainnya dengan cara yang sama seperti pengurus peladen yang berwenang.

### Contoh
Dalam kasus proyek komputasi terdistribusi misal SETI@home dah Great Internet Mersenne Prime Search (GIMPS), sementara sebagian besar operasi terjadi di sisi klien, peladen bertanggung jawab untuk menyelaraskan para klien, mengirimkan data untuk dianalisis, menerima dan menyimpan hasil, menyediakan fungsionalitas pelaporan kepada pengurus proyek, dsb. Dalam kasus aplikasi pengguna berkegantungan-Internet seperti Google Earth, saat kueri dan tampilan data peta terjadi di sisi klien, peladen bertanggung jawab atas penyimpanan permanen data peta, menyelesaikan kueri pengguna menjadi data peta yang akan dikembalikan ke klien, dsb.

Dalam konteks Waring Wera Wanua, bahasa komputer sisi-peladen yang umum dijumpai meliputi:
* C# atau Visual Basic dalam lingkungan ASP.NET
* Java
* Perl
* PHP
* Python
* Ruby
* Node.js
* Swift

Namun, aplikasi dan layanan web dapat diterapkan dalam hampir semua bahasa, selama keduanya dapat mengembalikan data ke peramban web berpangkal-kebakuan (mungkin melalui program perantara) dalam format yang dapat digunakan.

## Sisi klien

Sisi-klien mengacu pada operasi yang dilakukan oleh klien dalam sebuah jaringan komputer.

### Konsep umum
Biasanya, klien adalah aplikasi komputer, seperti peramban web, yang berjalan di komputer, ponsel cerdas, atau perangkat lain milik pengguna, dan terhubung ke peladen sesuai kebutuhan. Operasi dapat dilakukan di sisi-klien karena ia memerlukan akses ke informasi atau fungsi yang tersedia di klien tetapi tidak di peladen, karena pengguna perlu mengamati operasi atau memberi masukan, atau karena peladen tidak memiliki daya pengolahan untuk melakukan operasi dengan tepat waktu untuk semua klien yang dilayaninya. Selain itu, jika operasi dapat dilakukan oleh klien, tanpa mengirim data melalui jaringan, operasi tersebut mungkin memerlukan waktu lebih sedikit, menggunakan lebih sedikit lebar pita, dan menimbulkan risiko keamanan lebih rendah.

Jika si peladen menyajikan data dengan cara yang umum digunakan, misalnya menurut protokol-protokol baku seperti HTTP atau FTP, pengguna dapat memilih sejumlah program klien (misal, sebagian besar peramban web modern dapat meminta dan menerima data menggunakan HTTP dan FTP). Dalam kasus aplikasi yang lebih khusus, pemrogram dapat menulis peladen, klien, dan protokol komunikasi mereka sendiri yang hanya dapat digunakan bersama-sama.

Program yang berjalan pada komputer setempat pengguna tanpa pernah mengirim atau menerima data melalui jaringan tidak dianggap sebagai klien, sehingga operasi program tersebut tidak akan disebut operasi sisi-klien.

### Keamanan komputer
Dalam konteks keamanan komputer, kerentanan atau serangan sisi-klien merujuk pada kerentanan atau serangan yang terjadi pada sistem komputer klien/pengguna, bukan pada sisi peladen, atau di antara keduanya. Misal, jika sebuah peladen berisi sebuah berkas atau pesan terenkripsi yang hanya bisa didekripsi (dilepas enkripsinya) menggunakan sebuah kunci yang tersimpan di sistem komputer pengguna/si klien, maka serangan sisi klien biasanya akan menjadi satu-satunya kesempatan bagi penyerang untuk mendapatkan akses ke isi yang didekripsi tersebut. Misalnya, penyerang mungkin saja menyebabkan perangkat pembahaya terpasang pada sistem klien, yang memungkinkan si penyerang untuk melihat layar pengguna, merekam penekanan tombol pengguna, dan mencuri salinan kunci enkripsi pengguna, dll. Atau, penyerang bisa memanfaatkan kerentanan skripting lintas situs (XSS) untuk melaksanakan kode berbahaya pada sistem klien tanpa perlu memasang perangkat pembahaya.

### Contoh
Proyek komputasi terdistribusi seperti SETI@home dan Great Internet Mersenne Prime Search (GIMPS), serta aplikasi berkegantungan-Internet seperti Google Earth, bergantung terutama pada operasi sisi-klien. Mereka memulai sambungan dengan peladen (baik sebagai tanggapan terhadap permintaan pengguna, seperti Google Earth, atau secara otomatis, seperti SETI@home), dan meminta beberapa data. Peladen memilih sekumpulan data (operasi sisi-peladen) dan mengirimkannya kembali pada klien. Lalu klien menganalisis data (operasi sisi-klien), dan, ketika analisis selesai, menampilkannya kepada pengguna (seperti pada Google Earth) dan/atau mengirimkan hasil perhitungan kembali ke peladen (seperti pada SETI@home).

Dalam konteks Waring Wera Wanua, bahasa komputer yang umum dijumpai yang dinilai atau dijalankan di sisi-klien meliputi:
* Cascading Style Sheets (CSS)
* HTML
* JavaScript

## Sejarah awal
Bentuk awal arsitektur klien–peladen adalah entri pekerjaan jarak jauh, yang dimulai setidaknya pada OS/360 (diumumkan tahun 1964), di mana permintaannya adalah menjalankan pekerjaan, dan tanggapannya adalah keluaran.

Ketika merumuskan model klien-peladen pada 1960-an dan 1970-an, ilmuwan komputer yang membangun ARPANET (di Stanford Research Institute) menggunakan istilah *server-host* (atau *serving-host*) dan *user-host* (atau *using-host*) , dan istilah ini muncul dalam dokumen-dokumen awal RFC dan RFC 4. Penggunaan ini dilanjutkan di Xerox PARC pada pertengahan 1970-an.

Salah satu konteks di mana para peneliti menggunakan istilah-istilah ini adalah dalam rancangan bahasa pemrograman jaringan komputer yang disebut Decode-Encode Language (DEL). Bahasa ini bertujuan untuk menerima perintah dari satu komputer (inang-pengguna), yang akan mengembalikan laporan status kepada pengguna saat mengodekan perintah dalam paket jaringan. Komputer berkemampuan-DEL lain, inang-peladen, menerima paket-paket tersebut, mendekodekannya, dan mengembalikan data yang diformat ke inang-pengguna. Program DEL pada inang-pengguna menerima hasilnya untuk disajikan kepada pengguna. Ini merupakan transaksi klien-peladen. Pengembangan DEL baru dimulai pada 1969, tahun ketika Departemen Pertahanan Amerika Serikat mendirikan ARPANET (pendahulu Internet).

### Inang-klien dan inang-peladen
*Inang-klien* dan *inang-peladen* punya arti yang sedikit berbeda dengan *klien* dan *peladen*.  Inang atau hos adalah komputer apa pun yang terhubung ke jaringan. Sementara kata *peladen* dan *klien* dapat mengacu ke suatu komputer atau suatu program komputer, *inang-peladen* dan *inang-klien* selalu mengacu ke komputer. Inang tersebut adalah komputer serbaguna dan multifungsi; *klien* dan *peladen* hanyalah program yang berjalan pada inang. Dalam model klien-peladen, peladen lebih cenderung dikhususkan untuk tugas melayani.

Penggunaan awal kata *client* (klien) dijumpai dalam "Separating Data from Function in a Distributed File System", sebuah makalah tahun 1978 oleh para ilmuwan komputer Xerox PARC Howard Sturgis, James Mitchell, dan Jay Israel. Para penulis ini berhati-hati dalam mengartikan istilah tersebut bagi pembaca, dan menjelaskan bahwa mereka menggunakannya untuk membedakan antara pengguna dan simpul jaringan pengguna (yaitu si klien). Pada tahun 1992, kata *server* (peladen) telah digunakan secara meluas.

## Komputasi terpusat

Model klien-peladen tidak menentukan bahwa inang-peladen harus memiliki lebih banyak sumber daya daripada inang-klien. Sebaliknya, ia memungkinkan komputer serbaguna untuk memperluas kemampuannya dengan menggunakan sumber daya bersama dari inang lain. Namun, komputasi terpusat secara khusus menjatahkan sejumlah besar sumber daya ke sejumlah kecil komputer. Semakin banyak komputasi yang dialihkan dari inang-klien ke komputer pusat, semakin sederhana inang-klien dapat bekerja. Ia sangat bergantung pada sumber daya jaringan (peladen dan prasarana) untuk komputasi dan penyimpanan. Simpul nircakram pun memuat sistem operasinya dari jaringan, sedangkan terminal komputer tidak memiliki sistem operasi sama sekali; ia hanyalah antarmuka masukan/keluaran ke peladen. Sebaliknya, klien kaya, misal komputer pribadi, memiliki banyak sumber daya dan tidak bergantung pada peladen untuk fungsi-fungsi penting.

Ketika harga komputer mikro menurun tetapi dayanya meningkat dari tahun 1980-an hingga akhir 1990-an, banyak organisasi yang mengubah komputasi dari peladen terpusat, seperti komputer bingkai utama dan komputer mini, ke klien kaya. Ini memberi kekuasaan yang lebih besar dan lebih berseorang atas sumber daya komputer, tetapi memperumit pengelolaan teknologi informasi. Selama tahun 2000-an, aplikasi web sudah cukup matang untuk menyaingi perangkat lunak aplikasi yang dikembangkan untuk arsitektur mikro tertentu. Kematangan ini, penyimpanan besar-besaran yang lebih terjangkau, dan munculnya arsitektur berorientasi layanan merupakan beberapa faktor yang memunculkan tren komputasi awan pada tahun 2010-an.

## Perbandingan dengan arsitektur mitra-ke-mitra
Selain model klien-peladen, aplikasi komputasi terdistribusi sering menggunakan arsitektur aplikasi mitra-ke-mitra (*peer-to-peer*; P2P). Dalam model klien-peladen, peladen sering dirancang untuk beroperasi sebagai sistem terpusat yang melayani banyak klien. Daya komputasi, memori, dan persyaratan penyimpanan peladen harus disesuaikan dengan beban kerja yang diharapkan. Sistem penyeimbangan beban dan ketahanan kesalahan (*failover*) sering digunakan untuk meningkatkan skala peladen di luar satu mesin fisik.

Penyeimbangan beban dalam konteks ini diartikan sebagai edaran lalu lintas jaringan atau aplikasi yang metodis dan efisien di beberapa peladen dalam "peternakan peladen". Setiap penyeimbang beban berada di antara perangkat klien dan peladen ujung-belakang, menerima lalu mengedarkan permintaan masuk ke peladen tersedia mana pun yang mampu memenuhinya.

Dalam jaringan mitra-ke-mitra, dua atau lebih komputer (*mitra*) menyatukan sumber daya mereka dan berkomunikasi dalam sistem terdesentralisasi. Mitra-mitra adalah simpul yang sederajat atau sepotensi dalam jaringan non-hierarkis. Tidak seperti klien dalam jaringan klien-peladen atau klien-antrean-klien, mitra-mitra saling berkomunikasi langsung. Dalam jejaring mitra-ke-mitra, suatu algoritma dalam protokol komunikasi mitra-ke-mitra dapat menyeimbangkan beban, dan mitra dengan sumber daya sederhana pun dapat membantu berbagi beban. Jika sebuah simpul menjadi tidak tersedia, sumber daya yang dibagikan tetap tersedia selama mitra-mitra lain menawarkannya. Idealnya, sebuah mitra tidak perlu mencapai ketersediaan tinggi karena mitra-mitra redundan lainnya akan menggantikan masa padam sumber daya apa pun; ketika ketersediaan dan daya tampung beban mitra-mitra berubah, protokol akan mengalihkan permintaan.

Baik model klien-peladen dan tuan-hamba dianggap sebagai anak kategori dari sistem mitra-ke-mitra terdistribusi.

## Catatan kaki

## Referensi