Arsitektur didefinisikan
sebagai suatu rancangan untuk penyusunan komponen-komponen suatu sistem, dimana
rancangan tersebut mengidentifikasi komponen serta fungsi masing-masing
komponen, konektifitas antar komponen serta pemetaan fungsionalitas komponen.
Sistem terdistribusi
merupakan bagian dari sistem yang komplek yang menghubungkan beberapa mesin.
Untuk hal ini dibutuhkan pengorganisasian sistem yang baik. Ada dua hal dalam
melihat pengorganisasian sistem terdistribusi, organisasi secara logis sebagai
kumpulan perangkat lunak dan secara fisik.
Hampir
semua pengorganisasian sistem terdistribusi terkait dengan komponen perangkat
lunak. Arsitektur software ini menggambarkan bagaimana antar komponen
perangkat lunak saling berinteraksi satu sama lain. Sedangkan untuk penerapan
secara fisik yaitu bagaimana kita menempatkan komponen perangkat lunak pada
mesin sesungguhnya. Inti dari arsitektur perangkat lunak adalah arsitektur
sistemnya.
Salah satu dari sudut pandang Arsitektur
Sistem Terdistribusi adalah melihat sistem terdistribusi dari sudut pandang
secara logis. Komponen pada sistem terdistribusi merupakan alat penghubung yang
dapat diganti mengikuti lingkungan sistemnya itu sendiri. Kesulitannya adalah
bagaimana membuat interface agar hal tersebut bisa di lakukan di sistem
yang berbeda.
Interface
ini
kita sebut sebagai connector, yaitu sebuah mekanisme yang menjembatani
komunikasi, koordinasi dan kerjasama antar komponen. Salah satu contohnya
adalah RPC atau Remote Procedure Call.
RPC adalah suatu protokol yang menyediakan suatu
mekanisme komunikasi antar proses
yang mengijinkan suatu program untuk berjalan
pada suatu komputer tanpa terasa adanya
eksekusi kode pada sistem
yang jauh ( remote system ).
Protokol RPC digunakan untuk membangun aplikasi
klien-server yang terdistribusi. Protokol ini didasarkan pada memperluas konsep
konvensional dari suatu prosedur dimana nantinya prosedur ini dapat dipanggil dimana
pemanggil tidak harus mempunyai alamat yang sama dengan yang lokasi dimana prosedur
ini dipanggil. Dimana proses ini dapat dilakukan pada sistem yang sama atau
sistem yang berbeda namun terhubung pada jaringan. Namun terdapat kelemahan
didalam bagian dari RPC yang berhubungan dengan pertukaran message melalui
TCP/IP. Kegagalan terjadi dikarenakan karena penanganan kesalahan pada message
yang berisi informasi yang salah. Hasil dari kelemahan ini berakibat pada
bagian antar-muka RPC, yaitu bagian yang mendengarkan port RPC yang di-enable.
Bagian antar-muka ini menangani objek aktivasi dari DCOM ( Distributed Component Object Model ) yang dikirimkan oleh mesin klien
ke server. Kelemahan ini umumnya dimanfaatkan oleh seorang penyerang untuk
dapat menjalankan suatu kode dengan kewenangan Administrator sistem lokal pada
sistem yang terinfeksi. Dengan demikian, maka sistem yang diserang ini dapat
diubah-ubah termasuk pengkopian dan penghilangan data sampai pembuatan user
baru dengan hak tidak terbatas.
- Operasi Dasar RPC
Pada RPC komputer yang memanggil remote
procedure berstatus sebagai client sedangkan yang menyediakan
prosedur yang dipanggil berstatus sebagai server. Berikut ini adalah rangkaian
kejadian ketika sebuah remote procedure call terjadi:
1. Aplikasi yang berada di client
memanggil prosedur yang disediakan oleh server.
2. Nama prosedur yang dipanggil
dan parameter masukannya (jika diperlukan) sebelum dikirimkan melalui jaringan
komputer terlebih dahulu diubah menjadi format yang sesuai
untuk pengiriman melalui jaringan atau lebih dikenal sebagai proses marshalling. Proses marshalling
ini dilakukan oleh suatu perangkat lunak yang dikenal sebagai client
stub.
3. Client
stub kemudian memanggil prosedur mengirim paket melalui jaringan yang
disediakan dan menjadi tanggung jawab sistem operasi client.
4. Sistem
operasi client mengolah pesan dari client stub dan menjadi paket
jaringan dan dikirimkan ke komputer server.
5. Di sisi
server pesan diterima oleh sistem operasi dan diberikan kepada server
stub yang melakukan proses kebalikan dari marshalling yaitu unmarshalling.
Proses unmarshalling mengubah pesan dari client stub menjadi
bentuk awal berupa panggilan untuk prosedur tertentu dengan parameter
masukannya.
6. Server akan
memanggil prosedur yang diinginkan dengan parameter masukan yang diterima dari server
stub kemudian mengembalikan hasil pemanggilan prosedur kepada server
stub.
7. Server
stub melakukan marshalling pesan berisi hasil dari prosedur yang dipanggil,
kemudian memanggil layanan pengiriman data dari sistem operasi server.
8. Sistem
operasi server mengolah pesan dari server stub menjadi paket jaringan dan
dikirimkan ke komputer client.
9. Sistem
operasi client menerima paket dari sistem operasi server dan
menyampaikannya pada client stub.
10. Client
stub melakukan unmarshalling dan memberikan hasil pemanggilan
prosedur kepada yang aplikasi yang melakukan RPC.
Gambar 1.1 Basic RPC operation
- RPC: Parameter Passing
Pada saat nama prosedur dan parameter masukan
diubah menjadi pesan ada beberapa hal yang perlu diperhatikan, yaitu:
1. Client dan server sangat mungkin
memiliki cara pembacaan data dengan urutan yang berbeda (little endian
dan big endian).
2. Jika terjadi proses encoding maka client
dan server harus sepakat mengenai encoding yang digunakan.
3. Representasi tipe data dasar seperti integer,
float, dan string dalam bentuk biner dapat berbeda-beda antar
komputer dan bahasa pemrograman.
4. Representasi tipe data kompleks seperti array,
union, objek, dan sebagainya ke dalam bentuk biner juga dapat berbeda-beda.
Untuk
menyelesaikan masalah-masalah tersebut client dan server harus mengubah
pesan menjadi format representasi data yang tidak bergantung mesin maupun
bahasa pemrograman.
Gambar 1.2 Remote computation through RPC
- ASynchronous RPC
Pada umumnya proses yang melakukan remote
procedure call akan berhenti sementara hingga mendapat hasil dari sisi
server. Proses-proses tertentu seperti: memulai layanan di komputer lain,
menransfer uang ke rekening lain, melakukan entri data pada basis data tidak
perlu menunggu hasil tertentu dan dapat melanjutkan eksekusi intruksi
berikutnya.
RPC asinkron (aSynchronous RPC) adalah
teknik sedemikian sehingga proses yang memanggil remote procedure tidak
menunggu hasil dari sisi server untuk melanjutkan mengeksekusi instruksi
berikutnya. Pada RPC asinkron server langsung memberikan balasan ketika pesan
dari client diterima tanpa memproses pesan terlebih dahulu dan begitu
balasan dari server diterima client segera melanjutkan eksekusi
instruksi berikutnya.
Gambar 1.3
Asynchronuos RPC. Bandingkan dengan operasi dasar RPC pada gambar 1.1
Pada kasus lain sebuah server
dapat saja membutuhkan waktu untuk menjalankan prosedur yang dipanggil oleh client.
Contohnya adalah permintaan melakukan pencarian data tertentu pada server yang
dapat membutuhkan waktu cukup lama. Client tidak perlu menghabiskan
waktu dengan menunggu jawaban hasil pencarian melainkan dapat langsung
melanjutkan eksekusi instruksi selanjutnya. Pada saat jawaban sudah selesai
disusun oleh server dan dikirimkan ke client proses yang memanggil
prosedur pencarian akan diinterupsi agar mengetahui bahwa jawaban dari server
telah datang dan dapat mengolah jawaban tersebut sesuai kebutuhannya. Teknik ini
dikenal sebagai deferred Synchronous RPC.
Gambar 1.4 client
dan server berinteraksi dengan 2 aSynchronous RPC
·
- RPC pada Tataran Praktis: DCE
DCE atau Distributed Computer
Environment adalah sebuah Middleware yang berfungsi untuk menjadi
sebuah lapisan yang menyembunyikan kerumitan lapisan sistem operasi dan lapisan
komunikasi jaringan dalam RPC. DCE awalnya dikembangkan untuk sistem operasi
UNIX namun saat ini telah dibuat agar dapat dijalankan di berbagai sistem
operasi terkenal termasuk Windows dan VMS.
Model pemrograman dalam
lingkungan DCE adalah client-server. Proses milik pengguna bertindak
sebagai client yang mengakses layanan jarak jauh yang disediakan oleh
server. Beberapa layanan berasal dari sistem DCE itu sendiri tetapi lainnya
adalah milik aplikasi-aplikasi di server yang dibuat oleh pemrogram
aplikasi-aplikasi tersebut menggunakan fasilitas DCE. Semua komunikasi antara client
dan server dilakukan melalui remote procedure call.
Sebuah sistem DCE terdiri dari
beberapa komponen termasuk bahasa-bahasa pemrograman, pustaka-pustaka, daemon-daemon,
program-program utilitas, dan lain-lain. Untuk memungkinkan client dan
server mengerti satu sama lain digunakan sebuah definisi interface (antarmuka)
yang disebut IDL atau Interface Definition Language. File
IDL digunakan untuk menempatkan deklarasi prosedur dalam format yang mirip
dengan ANSI C termasuk definisi tipe-tipe data, deklarasi konstanta, dan
informasi lainnya yang dibutuhkan untuk melakukan marshalling pada
parameter dan unmarshalling untuk hasil prosedur, Pembuat aplikasi juga
dapat menuliskan komentar mengenai prosedur yang dideklarasikan dalam IDL.
Sebuah aplikasi client server
dalam sistem DCE dibuat dengan urutan sebagai berikut:
1. Memanggil sebuah aplikasi
bernama uuidgen yang akan membuat sebuah purwarupa (prototype)
dari sebuah file IDL berisi sebuah identitas untuk interface prosedur
yang dijamin tidak akan sama dengan interface lain yang dibuat dengan uuidgen
yang sama. Identitas tersebut terjamin dikarenakan dalam pembuatannya waktu
dan lokasi menjadi parameter yang diperhitungkan. Identitas tersebut terdiri
dari sebuah bilangan biner 128 bit tertulis sebagai rentetan karakter
ASCII atau dalam bentuk heksadesimal.
2. Mengisi nama prosedur dan
parameter-parameternya dalam file IDL yang telah dibuat.
3. Mengkompilasi file IDL
dengan IDL compiler yang menghasilkan:
a. Sebuah file
header (contoh: interface.h dalam bahasa C),
b. Stub
untuk client,
c.
Stub untuk server.
4. Menulis kode
sumber aplikasi di client dan server dan mengkompilasi keduanya. Hasil
kompilasi ditautkan (linked) dengan stub dan menghasilkan binary
executeable.
Gambar 1.5
langkah-langkah penulisan client dan server di DCE RPC
Setelah pembuatan aplikasi
selesai client dapat mengakses layanan dari server dengan ketentuan dan
urutan sebagai berikut:
1. Layanan di server tersebut
harus mendapatkan nomor port tertentu agar dapat sistem operasi pada
server dapat membedakannya dari proses-proses lain yang menjadi tujuan
pesan-pesan yang datang. Pasangan layanan dan nomor portnya disimpan
dalam sebuah tabel oleh DCE daemon.
2. Layanan didaftarkan pada
sebuah layanan pencarian seperti directory service yang dapat dijangkau client.
3. Client yang akan
melakukan RPC terlebih dahulu mencari alamat dari server yang memiliki nama
prosedur yang dipanggil melalui directory service di mana server
mendaftarkan layanannya.
4. Client
yang
menghubungi server yang telah diketahui alamatnya dan menanyakan kepada DCE daemon
port yang sesuai dengan layanan yang diminta.
5. Setelah nomor
port diketahui barulah client melakukan RPC.
Gambar 1.6 client-to-server
binding in DCE
- Kelebihan RPC
· Relatif mudah digunakan
Pemanggilan remote procedure
tidak jauh berbeda dibandingkan pemanggilan local
procedure. Sehingga pemrogram dapat berkonsentrasi pada software logic, tidak perlu memikirkan low level details seperti soket, marshalling & unmarshalling.
· Robust (Sempurna)
Sejak tahun 1980-an RPC telah banyak digunakan dalam pengembangan mission-critical application yg
memerlukan scalability, fault tolerance
& reliability.
- Kekurangan RPC
- Tidak fleksibel terhadap perubahan.
- Static relationship between client
& server at run-time.
- Berdasarkan prosedural/structured
programming yang sudah ketinggalan jaman dibandingkan OOP.
· Kurangnya location transparency.
- Misalnya premrogram hanya boleh melakukan pass by value, bukan pass by
reference.
- Komunikasi hanya antara 1 klien & 1 server (one-to-one at a time).
- Komunikasi antara 1 klien & beberapa server memerlukan beberapa
koneksi yang terpisah.
Referensi:
- Remote Procedure Call RPC, 2010
[tanggal akses 14 Maret 2013]
- Periyadi, Zani Tafta, dkk. 2009. Sistem Tersebar. Bandung:
Politeknik Telkom
Link:
[tanggal akses 14 Maret 2013]
- Marki
Tommy. 2006. Tugas Akhir EC5010 Keamanan
Sistem Informasi Eksploitasi RPC pada Sistem Operasi Windows. Bandung:
Sekolah Tinggi Elektro dan Informatika Institut Teknologi Bandung
Link:
[tanggal akses 14
Maret 2013]
permisi gan, saya ada sedikit tulisan mengenai protokol websocket dalam beberapa bahasa pemrograman berikut: http://datacomlink.blogspot.co.id/2015/11/implementasi-server-websocket-rfc-6455.html ditunggu feedback-nya ya gan, semoga menambah wawasan bersama.. terima kasih gan..
BalasHapusTerimakasih kakak atas artikel nya, terus tulis artikel lainnya ya kak. O iya, perkenalkan nama saya putri1622520017 dari kampus ISB Atma Luhur
BalasHapus