Senin, 08 Oktober 2012

SISTEM TERDISTRIBUSI : REMOTE METHOD INVOCATION


REMOTE METHOD INVOCATION

Sistem komputasi terdistribusi yang bekerja di banyak tempat mengharuskan beberapa komputer untuk bisa berkomunikasi satu sama lain. Untuk komunikasi, bahasa Java mendukung pemakaian socket yang sifatnya fleksibel dan mencukupi untuk keperluan komunikasi umum. Tapi di sisi lain, untuk membuat socket, klien dan server harus terhubung melalui protokol pada application level untuk meng-encode dan men-decode data-data yang akan dikirimkan. Protokol itu sendiri ternyata sulit untuk dibuat dan bisa menjadi rentan terhadap error.

Alternatif lain dari socket adalah dengan menggunakan Remote Procedure Call (RPC), yang mengabstraksi interface komunikasi ke level pemanggilan procedure. Programmer tidak akan menangani socket secara langsung, dan seolah-olah memanggil prosedur lokal, padahal argumen dari prosedur lokal tersebut dipaketkan dan dikirimkan ke tujuan jarak jauh. Tapi RPC tidak bisa langsung dipakai dalam sistem objek terdistribusi. Dalam sistem objek terdistribusi, diperlukan komunikasi antara objek-objek yang ada di level program, yang berada dibanyak tempat. Oleh karena itu, sistem objek terdistribusi memerlukan suatu Remote Method Invocation (RMI). Pada sistem yang memakai RMI, sebuah objek lokal yang dinamakan stub mengurus pemanggilan method pada objek jarak jauh.

  1. DEFINISI
RMI adalah sebuah tekhnik pemanggilan method remote yang lebih secara umum lebih baik dari RPC. RMI menggunakan paradigma pemrograman berorientasi obyek. RMI memungkinkan kita untuk mengirim obyek sebagai parameter dari remote method. Dengan dibolehkannya program Java memanggil method pada remote obyek, RMI membuat pengguna dapat mengembangkan aplikasi Java yang terdistribusi pada jaringan.
  1. TUJUAN
Adapun tujuan dari RMI yaitu
1.      Menyediakan fasilitas bagi programmer untuk dapat mendistribusikan objek yang digunakan pada beberapa proses yang berbeda.
2.      Dapat berjalan dalam satu mesin ataupun di beberapa mesin yang terhubung dengan jaringan.
  1. APLIKASI OBJEK TERDISTRIBUSI
Aplikasi RMI seringkali terdiri dari dua program terpisah yaitu server dan client. Aplikasi server semacam ini biasanya membuat beberapa objek remote, menyediakan referensi terhadap objek-objek tersebut sehingga dapat diakses, serta menunggu client menginvoke/memanggil method dari objek-objek remote tersebut. Aplikasi client mendapatkan referensi remote ke satu atau lebih objek remote di server dan menjalankan method dari objek tersebut.
Sebagai contoh.:
Pada paket Whiteboard, RMI digunakan untuk program-program Chat, Whiteboard dan Projector. Dalam program Chat, RMI digunakan untuk memasukkan input dari para pengguna, baik dosen maupun mahasiswa, ke komputer server. Setelah itu, server akan mengeluarkan output berupa hasil percakapan antar pengguna kepada semua komputer klien. Pada Whiteboard, penggunaan RMI terletak pada pengiriman graphics dan image antara komputer server dan klien. Sedangkan pada Projector, RMI digunakan agar dosen, sebagai klien, bisa mengatur indeks tampilan pada Projector yang berlangsung pada komputer mahasiswa, yang berfungsi sebagai klien lainnya.
Aplikasi RMI sering kali terdiri dari dua program terpisah yaitu server dan client.
1.      Aplikasi Server
·         Membuat beberapa remote objek
·         Menyediakan referensi terhadap objek-objek tersebut sehingga dapat diakses
·         Menunggu RMI client merequest server
2.      Aplikasi Client
·         Mendapatkan referensi remote ke satu atau lebih objek remote di server
·         Menjalankan method dari objek tersebut
·         Meminta pemanggilan ke beberapa remote objek berbasarkan referensi yang diterimanya.
RMI menyediakan mekanisme dimana server dan client berkomunikasi dan memberikan informasi secara timbal balik, aplikasi ini disebut aplikasi obyek terdistribusi.
Aplikasi objek terdistribusi seringkali melakukan hal berikut:
·         Melokasikan objek remote: Aplikasi dapat menggunakan satu dari dua mekanisme untuk mendapatkan referensi ke objek remote. Aplikasi dapat mendaftarkan objek remote dengan fasilitas penamaan RMI (naming facility) yaitu rmiregistry atau aplikasi dapat mem-pass dan mengembalikan referensi objek remote sebagai bagian dari operasi normal.
·         Berkomunikasi dengan objek remote: Detail dari komunikasi antara objek remote ditangani oleh RMI, bagi programmer komunikasi remote tampak seperti invokasi method Java standar.
·         Memanggil (load) bytecode untuk objek yang di-pass: Karena RMI mengizinkan pemanggil (caller) untuk mem-pass objek ke objek remote, RMI menyediakan mekanisme yang diperlukan objek me-load kode objek, sebagaimana juga mentransmisikan datanya.
Ilustrasi berikut menggambarkan aplikasi RMI terdistribusi yang menggunakan registry untuk mendapatkan referensi ke objek remote. Server memanggil registry untuk mengasosiasikan (mengikat) suatu nama dengan objek remote. Client mencari objek remote dengan namanya pada registry server dan meng-invoke method dari objek. Ilustrasi ini juga menunjukkan sistem RMI menggunakan Web server untuk memanggil class bytecodes, dari server ke  client dan dari client ke server, untuk objek-objek yang diperlukan.

  1. LANGKAH PEMBUATAN
Dalam RMI, semua informasi tentang satu pelayanan server disediakan dalam suatu definisi  remote  interface. Dengan melihat pada definisi  interface, seorang pemrogram dapat memberitahukan  method  apa yang dapat dikerjakan oleh  server, meliputi data apa yang diterima dan data apa yang akan dikirim sebagai tanggapan.
Definisi yang ada pada  remote interface  menentukan karakteristik  methods yang disediakan server yang dapat dilihat oleh client. Client programmer harus dapat  mengetahui  methods  apa yang disediakan  server  dan bagaimana memanggilnya langsung dengan melihat ke remote interface. Client mendapatkan referensi ke remote object melalui RMI registry.
Membangun suatu aplikasi terdistribusi menggunakan  RMI  meliputi 6 langkah. Keenam langkah tersebut adalah:
1. Mendefinisikan remote interface
2. Implementasi remote interface dan server
3. Pengembangan client (atau applet) yang menggunakan remote interface
4. Mengkompilasi source files dan mem-buat stub and skeletons
5. Memulai (start) RMI registry
6. Menjalankan server dan client
Model RMI – Remote Interface

  • Remote interface – mendefinisikan method apa saj ayang  dapat diakses oleh client
  • Pada contoh gambar slide 8, objek B dan F harus memiliki remote interface
  • Contoh :
    • CORBA menggunakan IDL untuk definisi Interface objek server
    • RMI menggunakan interface Java untuk definisi objek server
Protokol Request/Reply untuk RMI

public byte[] doOperation (RemoteObjectRef o, int methodId, byte[] arguments), sends a request message to the remote object and returns the reply. The arguments specify the remote object, the method to be invoked and the arguments of that method.
public byte[] getRequest (); acquires a client request via the server port.
public void sendReply (byte[] reply, InetAddress clientHost, int clientPort); sends the reply message reply to the client at its Internet address and port.

  1. CARA KERJA
Dalam model ini, sebuah proses memanggil method dari objek yang terletak pada suatu host/computer remote. Dalam paradigma ini, penyedia layanan mendaftarkan dirinya dengan server direktori pada jaringan. Proses yang menginginkan suatu layanan mengontak server direktori saat runtime, jika layanan tersedia, maka referensi ke layanan akan diberikan. Dengan menggunakan referensi ini, proses dapat berinteraksi dengan layanan tsb. Paradigma ini ekstensi penting dari paradigma RPC. Perbedaannya adalah objek yang memberikan layanan didaftarkan (diregister) ke suatu layanan direktori global, sehingga memungkinkan untuk ditemukan dan diakses oleh aplikasi yang meminta layanan tersebut.
Contoh aplikasi untuk meremote pada teknik RMI (Remote Method Invocation) menggunakan teamviewer untuk meremote computer lain.
Teamviewer adalah suatu program yang cukup sederhana dan sangat mudah digunakan untuk beberapa keperluan terutama melakukan akses PC secara remote melalui internet.

Cara Meremote : Tampilan utama TeamViewer, jika sudah tampil (Ready to connect (secure connection)) maka sudah siap melakukan koneksi ke PC lain, kemudian masukan ID PC klien jika koneksi berhasil maka akan muncul kotak “Password”, isi password teamviewer PC yang akan anda remote. Jika berhasil maka akan tampil desktop PC yang diremote tersebut. Jika ingin melakukan File Transfer, maka pilih “File Transfer” pada bagian pilihan yang terlihat dibawah kotak ID, kemudian klik “Connect to partner”. TeamViewer Versi Baru
Jika ingin menggunakan password dan ID yang tetap maka cukup tempatkan kursor mouse pada bagian kotak password, maka akan tampil seperti gambar diatas, pilih “Set user definied password” kemudian masukan password yang anda inginkan. Hasilnya Setelah kita melakukan setting pada teamviewer dan setelah login dan memasukkan password tujuan dengan benar maka kita bisa mengakses computer yang kita remote secara penuh.

  1. IMPLEMENTASI



Berikut ilustrasi yang terjadi pada metode RMI:
Programmer pada client menulis :
Server_id.service(values_to_server,result_arguments);
Pada sisi server mempunyai fungsi sebagai berikut :
Public service(in type1 arg from client; out type2 arg to_client)
{——-}
Programmer pada client tidak mengetahui bahwa reply message yang didapatkan berasal dari server yang dikirim melalui jaringan.
                       
Gambar Ilustrasi Implementasi RMI
Komponen-komponen dam RMI(gambar 2.2) :
·         Object A(client) : meminta layanan
·         Object B(server) : menghantarkan layanan
·         Proxy for B
o    Ketika object A mempunyai remote reference ke object B, maka akan timbul objek proxy B pada host object A. Proxy terbuat ketika remote object reference digunakan pertama kali.
o    Proxy adalah perwakilan objek yang berada pada remote, dengan kata lain ketika terjadi invokasi dari A ke B ditangani seolah – olah hanya mengakses Proxy B.
o    Ketika invokasi terjadi proxy menggunakan metode marshals untuk membungkus pesan yang akan dikirim ke server. Dan setelah menerima hasil dari server proxy menggunakan metode unmarshal (membuka bungkus) untuk kemudian diteruskan ke client (Object A).
·         Skeleton for object B
o    Pada sisi server, terdapat object kerangka (skeleton) yang berhubungan ke class, kalau object pada class tersebut dapat diakses oleh RMI.
o    Skeleton menerima pesan kemudian melakukan unmarshal dan meneruskan ke  method object yang dituju. Dan kemudian menunggu hasil dari object B dan kemudian membungkus hasil (unmarshal) dan kemudian dikirimkan ke client (Objec A).
o    Ada bagian dari skeleton B yang disebut dengan dispatcher. Dispatcher menerima request dari communication module, dan kemudian mengidentifikasi invokasi dan mengarahkan permintaan ke corresponding method ( method pada skeleton yang berfungsi untuk berkomunikasi dengan object).
·         Communication Modul (Modul Komunikasi)
o    Communication modul pada client atau server bertanggung jawab dalam pertukaran pesan yang dilakukan melalui metode request dan reply.
·         Remote Reference Module
o    Bagian ini bertugas untuk menterjemahkan antara referensi objek lokal dan remote. Proses berkomunikasi antara mereka disimpan dalam remote object table.
o    Yang menggenerate class untuk proxy dan skeleton adalah middleware.
o    Contoh : CORBA, Java RMI
Object A dan object B dipunyai oleh aplikasi (berada pada Application Layer) Remote Reference Modul dan Communication modul dimiliki oleh middleware. Proxy B dan Sekeleton B berada antara middleware dan aplikasi yang di generate oleh middleware.
  1. KELEBIHAN DAN KEKURANGAN
Keuntungan RMI:
·         ¨Salahsatu keuntungan RMI adalah kemampuan untuk download bytecodes (code) dari suatu object’s class, jika class tsb tidak terdefinisikan di VM-nya penerima.
·         ¨Type-type dan metode-metode object (class), yang terletak dalam satu VM, dapat dikirim ke VM yang lain, yang mungkin saja remote.
·         ¨Sifat-sifat object yang terkirim ini tidak berubah sama sekali
Kelemahan RMI:
proses pembukaan socket yang kadang-kadang tidak dapat diimplementasikan lewat jaringan internet, tapi hal ini bisa diatasi dengan menggunakan Spring HttpInvoker, sama persis dengan RMI tapi lewat protokol HTTP.


  1. MASALAH PERANCANGAN UNTUK RMI
Semantik Pemanggilan RMI : doOperation() dapat diterapkan dalam beberapa cara untuk menyediakan jaminan pengiriman yang berbeda. (George Coulouris dkk, hal 174)
·         Retry Requet Message : apakah permintaan Retransmit pesan sampai baik balasan diterima atau server diasumsikan telah gagal.
·         Duplicate Filtering : ketika retransmisi digunakan, apakah untuk menyaring duplikat permintaan pada server.
·         Retransmission of Result : apakah akan menyimpan history dari pesan hasil untuk mengaktifkan hasil hilang yang akan kembali tanpa mengeksekusi ulang operasi pada server.
  1. DAFTAR PUSTAKA
Sagitri, A. Sekilar Tentang RMI.
pyia.wordpress.com/2012/01/08/rmi-remote-method-invocation-dan-rpc-remote-procedure-call/

Kamis, 04 Oktober 2012

Fungsi Routing dalam Layer Network



Protocol-2 layer Network adalah proses software yang melakukan fungsi routing antar-jaringan. Suatu router Cisco dapat menjalankan beberapa protocol layer Network sekaligus dimana setiap protocol berjalan independen satu sama lain. Suatu protocol routing adalah protocol layer Network sesungguhnya yang menjalankan fungsi routing antar jaringan. Protocol routing mempelajari dan berbagi informasi routing antar-jaringan, dan membuat keputusan-2 tentang jalur mana yang akan dipakai. Protocol-2 routing meliputi yang berikut:
1. Routing Information protocols (RIP)
2. Interrior Gateway Routing Protocol (IGRP)
3. Open shortest path first (OSPF)
4. Netware link service protocol (NLSP)
Protocol yang bisa diarahkan (routed protocol)
Suatu routed protocol adalah suatu protocol upper-layer yang dapat dilewatkan antar-jaringan. Suatu protocol yang bisa dilewatkan harus berisi informasi address layer Network. Protocol-2 yang bisa di-route dilewatkan antar-jaringan oleh protocol-2 yang meliputi: IP; IPX; AppleTalk; dan juga DECNet.
Protocol yang Tidak dapat dilewatkan (Non-routable protocols)
Tidak semua protocol bisa dilewatkan atau diarahkan, yang merupakan protocol-2 yang tidak bisa dilewatkan yang mana:
1. Tidak mendukung data layer Network; tidak berisi address-2 logical.
2. Menggunakan Static – route-2 yang sudah didefinisikan yang tidak bisa diubah.
Sebagai contoh:
1. NetBIOS (Network Basic Input / Output)
2. NetBEUI (NetBIOS Extended user interface
3. LAT (Local Area Transport)

Rabu, 03 Oktober 2012

Sistem Terdistribusi

Latar Belakang Sistem Terdistribusi

Awal tahun 1980, dua perkembangan teknologi merubah segala sesuatu dibidang komputer. Pertama, sejak ditemukan dan dikembangkannya mikroprosessor yang berkinerja tinggi. Diawali dengan sistem arsitektur 8-bit, 16-bit, 32 bahkan 64-bit saat ini. 

Kedua ditemukan dan dikembangkannya teknologi jaringan komputer. Jaringan Komputer Lokal (LAN) mampu menghubungkan beberapa komputer dalam satu gedung dengan gedung lainnya, sehingga informasi daot dikirimkan dalam waktun yang cepat. Wide Area Network (WAN) dapat menghubungkan beberapa LAN dalam wilayah yang lebih luas sehingga bisa menangani penyampaian informasi lebih cepat untuk area yang lebih luas. 

Dengan teknologi ini tidak hanya mungkin, tetapi mudah menggabungkan beberapa komputer dalam jumlah yang besar yang terhubung satu sama lain. Hal tersebut kita sebagai jaringan komputer atau sistem tesebar. Ini merupakan  kebalikan dari sistem terpusat (single prosessor System).

Definisi Sistem Tersebar

Sistem tersebar adalah kumpulan komputer otonom yang dihubungkan oleh jaringan dengan software yang dirancang untuk menghasilkan fasilitas komputasi terintegrasi sehingga tampak oleh user sebagai satu sistem komputer.

Infrastruktur sistem tersebar adalah 
a. Jaringan Komputer (LAN, MAN, WAN, Internet)
b. Beragam perangkat keras dan perangkat lunak, serta user yang saling terkait dalam sistem jaringan yang membentuknya.

Manfaat Sistem Tersebar 

Manfaat diterapkannya sistem tersebar adalah :
a. Data Sharing : mangijinkan pengguna untuk bisa mengakses data yang sama.
b. Device Sharing : mengijinkan pengguna untuk bisa mengakses perangkat keras yang sama 
c. Communication : memungkinkan pengguna bisa melakukan komunikasi jauh lebih mudah
d. Flexibility : membagi beban kerja pada perangkat yang tersedia dengan cara yang efektif, dapat menambah komponen secara individu tanpa harus menduplikasi System, fasilitas local dapat disesuaikan dengan kebutuhan local, memungkinkan pertumbuhan System secara terus menerus, susunan System bisa disesuaikan dengan susunan pola organisasi perusahaan, memungkinkan beberapa bagian atau local mengadakan percobaan konsep baru dan fasilitas baru untuk mengurangi resiko kegagalan System secara keseluruhan. 
e. Multiuser Computing :  menerapkan banyak user yang dapat login pada saat yang bersamaan untuk mengakses sistem. 


Kerugian Sistem Tersebar

Beberapa kekurangan sistem tersebar disamping kelebihan yang ada, antara lain 
a. Complexity : secara umum dapat diketahui dari jumlah perangkat keras yang terhubung sistem terditribusi jauh lebih komplek dibandingkan dengan sistem terpusat, baik secara rancangan, implementasi dan maintenance
b. Security : asumsi terhadap sistem yang terhubung jaringan artinya telah masuk ke jaringan publik ini artinya setiap orang yang diperbolehkan untuk bisa  mengakses data pada jaringan publik. asumsi ini bisa menjadi lubang untuk keamanan terhadap pengaksesan data secara tidak sah.
c. Manageability : membutuhkan banyak usaha untuk mengorganisasi sistem.
d. Unpredictability : sulit diprediksi terhadap ketidakstabilan sistem tergantung dari sistem organisasi dan banyaknya akses terhadap jaringan.