Model kelayan-peladen

struktur aplikasi terdistribusi dalam komputasi
(Dialihkan dari Klien-server)

Model kelayan-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 kelayan (client).[1] Seringkali kelayan dan peladen berkomunikasi melalui jaringan komputer pada perangkat keras yang terpisah, tetapi kelayan dan peladen mungkin saja berada pada perangkat yang sama. Inang peladen menjalankan satu atau lebih program peladen, yang berbagi sumber dayanya dengan kelayan. Kelayan 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, kelayan memulai sesi komunikasi dengan peladen, yang menunggu permintaan masuk. Contoh aplikasi komputer yang menggunakan model kelayan-peladen adalah surel, pencetakan jaringan, dan Waring Wera Wanua.

Diagram jaringan komputer dari kelayan yang berkomunikasi dengan peladen melalui Internet

Peran kelayan dan peladen

sunting

Komponen peladen menyediakan fungsi atau layanan kepada satu atau banyak kelayan, 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 kelayan, 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 kelayan yang membuat berbagai jenis permintaan. Perangkat lunak kelayan juga dapat berkomunikasi dengan perangkat lunak peladen dalam komputer yang sama.[2] Komunikasi antara peladen, seperti untuk menyinkronkan data, terkadang disebut komunikasi antar-peladen atau komunikasi peladen-ke-peladen.

Komunikasi kelayan dan peladen

sunting

Umumnya, sebuah layanan adalah pengabstrakan sumber daya komputer dan kelayan 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.

Kelayan dan peladen bertukar pesan dalam pola pengiriman pesan permintaan–tanggapan. Kelayan 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 kelayan 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).[3] 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.[4]

Peladen dapat menerima permintaan dari banyak kelayan 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 kelayan untuk dapat menampung mereka. Untuk mencegah penyalahgunaan dan memaksimalkan ketersediaan, perangkat lunak peladen dapat membatasi ketersediaan bagi para kelayan, 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 kelayan dan peladen.

Contoh

sunting

Ketika seorang nasabah bank mengakses layanan perbankan daring dengan peramban web (si kelayan), 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 kelayan. 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 kelayan untuk ditampilkan.

Pada setiap langkah rangkaian pertukaran pesan kelayan-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 kelayan-peladen: pemisahan perhatian.

Sisi peladen

sunting

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

Konsep umum

sunting

"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 kelayan, atau karena melakukan operasi tersebut di sisi-kelayan akan lambat, tidak dapat diandalkan, atau tidak aman.

Program kelayan 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, kelayan, dan protokol komunikasi mereka sendiri yang hanya dapat digunakan bersama-sama.

Operasi sisi-peladen mencakup operasi yang dilakukan sebagai tanggapan terhadap permintaan kelayan, dan operasi yang tak-berorientasi pada kelayan seperti tugas pemeliharaan.[5][6]

Keamanan komputer

sunting

Dalam konteks keamanan komputer, kerentanan atau serangan sisi-peladen merujuk pada kerentanan atau serangan yang terjadi pada sistem komputer peladen, bukan pada sisi kelayan, 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.[7][8][9]

Contoh

sunting

Dalam kasus proyek komputasi terdistribusi misal SETI@home dah Great Internet Mersenne Prime Search (GIMPS), sementara sebagian besar operasi terjadi di sisi kelayan, 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 kelayan, peladen bertanggung jawab atas penyimpanan permanen data peta, menyelesaikan kueri pengguna menjadi data peta yang akan dikembalikan ke kelayan, dsb.

Dalam konteks Waring Wera Wanua, bahasa komputer sisi-peladen yang umum dijumpai meliputi:

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 kelayan

sunting

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

Konsep umum

sunting

Biasanya, kelayan 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-kelayan karena ia memerlukan akses ke informasi atau fungsi yang tersedia di kelayan 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 kelayan yang dilayaninya. Selain itu, jika operasi dapat dilakukan oleh kelayan, 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 kelayan (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, kelayan, 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 kelayan, sehingga operasi program tersebut tidak akan disebut operasi sisi-kelayan.

Keamanan komputer

sunting

Dalam konteks keamanan komputer, kerentanan atau serangan sisi-kelayan merujuk pada kerentanan atau serangan yang terjadi pada sistem komputer kelayan/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 kelayan, maka serangan sisi kelayan 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 kelayan, 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 kelayan tanpa perlu memasang perangkat pembahaya.[7][8][9]

Contoh

sunting

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-kelayan. 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 kelayan. Lalu kelayan menganalisis data (operasi sisi-kelayan), 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-kelayan meliputi:

Sejarah awal

sunting

Bentuk awal arsitektur kelayan–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 kelayan-peladen pada 1960-an dan 1970-an, ilmuwan komputer yang membangun ARPANET (di Stanford Research Institute) menggunakan istilah server-host (atau serving-host)[a] dan user-host (atau using-host)[b] , 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 kelayan-peladen. Pengembangan DEL baru dimulai pada 1969, tahun ketika Departemen Pertahanan Amerika Serikat mendirikan ARPANET (pendahulu Internet).

Inang-kelayan dan inang-peladen

sunting

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

Penggunaan awal kata client (kelayan) 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 kelayan).[10] Pada tahun 1992, kata server (peladen) telah digunakan secara meluas.[11][12]

Komputasi terpusat

sunting

Model kelayan-peladen tidak menentukan bahwa inang-peladen harus memiliki lebih banyak sumber daya daripada inang-kelayan. 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-kelayan ke komputer pusat, semakin sederhana inang-kelayan dapat bekerja.[13] 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, kelayan 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 kelayan kaya.[14] Ini memberi kekuasaan yang lebih besar dan lebih berseorang atas sumber daya komputer, namun memperumit pengelolaan teknologi informasi.[13][15][16] 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.[17][Verifikasi gagal]

Perbandingan dengan arsitektur mitra-ke-mitra

sunting

Selain model kelayan-peladen, aplikasi komputasi terdistribusi sering menggunakan arsitektur aplikasi mitra-ke-mitra (peer-to-peer; P2P). Dalam model kelayan-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.[18][19]

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 kelayan 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 kelayan dalam jaringan kelayan-peladen atau kelayan-antrian-kelayan, mitra-mitra saling berkomunikasi langsung.[butuh rujukan] 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.[butuh rujukan] 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 kelayan-peladen dan tuan-hamba dianggap sebagai anak kategori dari sistem mitra-ke-mitra terdistribusi.[20]

Catatan kaki

sunting
  1. ^ Server-host berarti inang-peladen dan serving host berarti inang-pelayanan/peladenan
  2. ^ User-host berarti inang-pengguna dan using-host berarti inang-penggunaan

Rujukan

sunting
  1. ^ "Distributed Application Architecture" (PDF). Sun Microsystem. Diarsipkan dari versi asli (PDF) tanggal 6 April 2011. Diakses tanggal 2009-06-16. 
  2. ^ X Window System adalah salah satu contoh.
  3. ^ Benatallah, B.; Casati, F.; Toumani, F. (2004). "Web service conversation modeling: A cornerstone for e-business automation". IEEE Internet Computing. 8: 46–54. doi:10.1109/MIC.2004.1260703. 
  4. ^ Dustdar, S.; Schreiner, W. (2005). "A survey on web services composition" (PDF). International Journal of Web and Grid Services. 1: 1. CiteSeerX 10.1.1.139.4827 . doi:10.1504/IJWGS.2005.007545. 
  5. ^ "Introduction to the server side - Learn web development | MDN". developer.mozilla.org (dalam bahasa Inggris). 2023-11-05. Diakses tanggal 2023-11-13. 
  6. ^ "Server-side website programming - Learn web development | MDN". developer.mozilla.org (dalam bahasa Inggris). 2023-06-30. Diakses tanggal 2023-11-13. 
  7. ^ a b Lehtinen, Rick; Russell, Deborah; Gangemi, G. T. (2006). Computer Security Basics (edisi ke-2nd). O'Reilly Media. ISBN 9780596006693. Diakses tanggal 2017-07-07. 
  8. ^ a b JS (2015-10-15). "Week 4: Is There a Difference between Client Side and Server Side?". n3tweb.wordpress.com. Diakses tanggal 2017-07-07. 
  9. ^ a b Espinosa, Christian (2016-04-23). "Decoding the Hack" (PDF). alpinesecurity.com. Diakses tanggal 2017-07-07. [pranala nonaktif permanen]
  10. ^ Sturgis, Howard E.; Mitchell, James George; Israel, Jay E. (1978). "Separating Data from Function in a Distributed File System". Xerox PARC. 
  11. ^ Harper, Douglas. "server". Online Etymology Dictionary. Diakses tanggal 30 November 2013. 
  12. ^ "Separating data from function in a distributed file system". GetInfo. German National Library of Science and Technology. Diarsipkan dari versi asli tanggal 2 December 2013. Diakses tanggal 29 November 2013. 
  13. ^ a b Nieh, Jason; Yang, S. Jae; Novik, Naomi (2000). "A Comparison of Thin-Client Computing Architectures". Academic Commons (dalam bahasa Inggris). doi:10.7916/D8Z329VF. Diakses tanggal 28 November 2018. 
  14. ^ d'Amore, M. J.; Oberst, D. J. (1983). "Microcomputers and mainframes". Proceedings of the 11th annual ACM SIGUCCS conference on User services - SIGUCCS '83. hlm. 7. doi:10.1145/800041.801417. ISBN 978-0897911160. 
  15. ^ Tolia, Niraj; Andersen, David G.; Satyanarayanan, M. (March 2006). "Quantifying Interactive User Experience on Thin Clients" (PDF). Computer. IEEE Computer Society. 39 (3): 46–52. doi:10.1109/mc.2006.101. 
  16. ^ Otey, Michael (22 March 2011). "Is the Cloud Really Just the Return of Mainframe Computing?". SQL Server Pro. Penton Media. Diarsipkan dari versi asli tanggal 3 December 2013. Diakses tanggal 1 December 2013. 
  17. ^ Barros, A. P.; Dumas, M. (2006). "The Rise of Web Service Ecosystems". IT Professional. 8 (5): 31. doi:10.1109/MITP.2006.123. 
  18. ^ Cardellini, V.; Colajanni, M.; Yu, P.S. (1999). "Dynamic load balancing on Web-server systems". IEEE Internet Computing. Institute of Electrical and Electronics Engineers (IEEE). 3 (3): 28–39. doi:10.1109/4236.769420. ISSN 1089-7801. 
  19. ^ "What Is Load Balancing? How Load Balancers Work". NGINX. June 1, 2014. Diakses tanggal January 21, 2020. 
  20. ^ Varma, Vasudeva (2009). "1: Software Architecture Primer". Software Architecture: A Case Based Approach. Delhi: Pearson Education India. hlm. 29. ISBN 9788131707494. Diakses tanggal 2017-07-04. Distributed Peer-to-Peer Systems [...] This is a generic style of which popular styles are the client-server and master-slave styles.