Jumat, 15 Maret 2013

Remote Procedure Call (RPC)

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]

Jumat, 08 Maret 2013

MODEL SISTEM TERDISTRIBUSI

Sebelum membahas mengenai Model Sistem Terdistribusi, saya akan terlebih dahulu menjabarkan sedikit tentang apa itu sistem terdistribusi. Sistem terdistibusi merupakan sebuah sistem yang komponennya berada pada jaringan komputer. Komponen tersebut saling berkomunikasi dan melakukan koordinasi hanya dengan pengiriman pesan (message passing). 

Dengan kata lain sistem ini melibatkan lebih dari satu komputer dalam suatu infrastruktur jaringan baik local,internet bahkan wireless. Sebuah sistem terdistribusi, tidak hanya melakukan komunikasi antara satu proses pada satu komputer dengan proses pada komputer yang lain, namun juga perlu mempertimbangkan ketersediaan infrastruktur jaringan yang memadai dan juga dukungan standarisasi sistem yang terbuka.

Contoh penerapan Distributed System: Small Area Network (SAN). Local Area Network (LAN), Metropolitan Area Network (MAN), Online Service (OL) / Outernet, Wide Area Network (WAN) / International Network (Internet).

Dalam pelaksanaannya sistem terdistribusi memiliki berbagai bentuk (model), yaitu : 

 1. Sistem client - server
Merupakan bagian dari model sistem terdistribusi yang membagi jaringan berdasarkan pemberi dan penerima jasa layanan. Pada sebuah jaringan akan didapatkan: file server, time server, directory server, printer server, server, dan seterusnya. 
  • Kelebihan jaringan client server
  • Mendukung keamanan jaringan yang lebih baik
  • Kemudahan administrasi ketika jaringan bertambah besar
  • Manajemen jaringan terpusat
  • Semua data bisa disimpan dan di backup terpusat di satu lokasi

  • Kekurangan jaringan client server
  • Butuh administrator jaringan yang profesional
  • Butuh perangkat bagus untuk digunakan sebagai komputer server
  • Butuh software tool operasional untuk mempermudah manajemen jaringan
  • Anggaran untuk manajemen jaringan menjadi besar
  • Bila server down, semua data dan resource diserver tidak bisa diakses.

2. Sistem point to point
Merupakan bagian dari model sistem terdistribusi dimana sistem dapat sekaligus berfungsi sebagai client maupun server
  • Kelebihan jaringan point to point
  • Implementasinya murah dan mudah
  • Tidak memerlukan software administrasi jaringan yang khusus
  • Tidak memerlukan administrator jaringan

  • Kekurangan jaringan point to point
  • Jaringan tidak bisa terlalu besar (tidak bisa memperbesar jaringan)
  • Tingkat keamanan rendah
  • Tidak ada yang memanajemen jaringan
  • Pengguna komputer jaringan harus terlatih mengamankan komputer masing-masing
  • Semakin banyak mesin yang disharing, akan mempengaruhi kinerja komputer.

3. Sistem terkluster 
Adalah gabungan dari beberapa sistem individual (komputer) yang dikumpulkan pada suatu lokasi, saling berbagi tempat penyimpanan data (storage), dan saling terhubung dalam jaringan lokal (Local Area Network). Sistem kluster memiliki persamaan dengan sistem paralel dalam hal menggabungkan beberapa CPU untuk meningkatkan kinerja komputasi. Jika salah satu mesin mengalami masalah dalam menjalankan tugas maka mesin lain dapat mengambil alih pelaksanaan tugas itu. Dengan demikian, sistem akan lebih handal dan fault tolerant dalam melakukan komputasi. 
Dalam hal jaringan, sistem kluster mirip dengan sistem terdistribusi (distributed system). Bedanya, jika jaringan pada sistem terdistribusi melingkupi komputer-komputer yang lokasinya tersebar maka jaringan pada sistem kluster menghubungkan banyak komputer yang dikumpulkan dalam satu tempat.
  • Keuntungan:
a. Absolute scalability   
Adalah mungkin untuk menciptakan sistem terkluster yang jauh lebih powerful daripada satu komputer standalone yang terbesar sekalipun. Satu kluster bisa terdiri atas puluhan, bahkan ratusan komputer, dan masing-masing adalah multiprosesor.
b. Incremental scalability   
Kluster diatur sedemikian rupa sehingga bisa dupgrade sedikit demi sedikit sesuai dengan kebutuhan, tanpa harus mengupgrade keseluruhan sistem sekaligus secara besar-besaran. 
c. High availability   
Karena setiap komputer yang tergabung adalah standalone (mandiri), maka kegagalan salah satu komputer tidak menyebabkan kegagalan sistem. 
d. Superior price/performance  
Dengan konfigurasi yang tepat, dimungkinkan untuk membangun sistem yang jauh lebih powerful atau sama dengan komputer standalone, dengan biaya yang lebih rendah. 
Isu yang menarik tentang sistem kluster adalah bagaimana mengatur mesin-mesin penyusun sistem dalam berbagi tempat penyimpanan data ( storage ). Untuk saat ini, biasanya sistem kluster hanya terdiri dari 2 hingga 4 mesin berhubung kerumitan dalam mengatur akses mesin-mesin ini ke tempat penyimpanan data. 
Isu di atas juga berkembang menjadi bagaimana menerapkan sistem kluster secara paralel atau dalam jaringan yang lebih luas (Wide Area Network ). Hal penting yang berkaitan dengan penerapan sistem kluster secara paralel adalah kemampuan mesin-mesin penyusun sistem untuk mengakses data di storagesecara serentak. Berbagai software khusus dikembangkan untuk mendukung kemampuan itu karena kebanyakan sistem operasi tidak menyediakan fasilitas yang memadai. Salah satu contohsoftware -nya adalah Oracle Parallel Server yang khusus didesain untuk sistem kluster paralel. 
Seiring dengan perkembangan pesat teknologi kluster, sistim kluster diharapkan tidak lagi terbatas pada sekumpulan mesin pada satu lokasi yang terhubung dalam jaringan lokal. Riset dan penelitian sedang dilakukan agar pada suatu saat sistem kluster dapat melingkupi berbagai mesin yang tersebar di seluruh belahan dunia.


Referensi: