Sabtu, 22 Maret 2008

Sistem Terdistribusi

CORBA (Common Object Request Broker Architecture)

CORBA adalah sebuah arsitektur software yang berbasis pada teknologi berorientasi obyek atau Object Oriented (OO) dengan paradigma client-server. Dalam terminologi OO, sebuah obyek berkomunikasi dengan obyek lain dengan cara pengiriman pesan (message passing). Konteks komunikasi ini kemudian dipetakan ke dalam model client-server: satu obyek berperan sebagai client (si pengirim pesan) dan yang lain bertindak sebagai server (yang menerima pesan dan memroses pesan yang bersangkutan).

CORBA adalah hasil kesepakatan antara sejumlah vendor dan pengembang perangkat lunak terkenal seperti IBM, Hewlett-Packard, dan DEC yang tergabung dalam sebuah konsorium yang bernama OMG (Object Management Group). Keunikan dari CORBA adalah kemampuannya dalam menangani heterogenitas antara client dan server (dalam terminologi CORBA, obyek server dinamakan implementasi obyek (object implementation). Keduanya dapat saja diimplementasikan dalam hardware, sistem operasi, bahasa pemrograman, dan di lokasi yang berbeda, tetapi tetap bisa saling berkomunikasi. Kuncinya ada pada sebuah lapisan software yang disebut dengan ORB(Object Request Broker).

Bagaimana mungkin dua obyek yang dikembangkan secara terpisah, dengan perangkat dan bahasa yang berbeda, serta dijalankan di komputer yang berbeda pula bisa saling berkomunikasi? Apa yang bisa "mempertemukan" perbedaan-perbedaan itu? Kuncinya adalah konsep tentang interface. Dalam teknologi OO, interface dapat dikatakan sebagai "ikatan kontrak" antara dua obyek yang akan berkomunikasi. Bagi obyek server, interface berfungsi sebagai "iklan" tentang apa saja yang bisa dikerjakannya. Bagi client, interface berfungsi untuk mengetahui layanan-layanan apa yang disediakan oleh server. Dalam CORBA, spesifikasi interface merupakan hal yang pertama kali dilakukan, layaknya dalam kehidupan nyata di mana sebelum terjadi transaksi, dibuat dulu kontraknya. Spesifikasi interface dibuat menggunakan sebuah bahasa khusus yang bersifat standar yang disebut Interface Definition Language (IDL).

RMI (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.

RMI (Remote Method Invocation) adalah cara programmer Java untuk membuat program aplikasi Java to Java yang terdistribusi. Program-program yang menggunakan RMI bisa menjalankan metode secara jarak jauh, sehingga program dari server bisa menjalankan method di komputer klien, dan begitu juga sebaliknya.

Java RMI yang ada pada bahasa Java telah didesain khusus sehingga hanya bisa bekerja pada lingkungan Java. Hal ini berbeda dengan sistem RMI lainnya, misalnya CORBA, yang biasanya didesain untuk bekerja pada lingkungan yang terdiri dari banyak bahasa dan heterogen. Pemodelan objek pada CORBA tidak boleh mengacu pada bahasa tertentu.

Sistem RMI terdiri atas tiga layer/lapisan, yaitu
1. stub/skeleton layer, yaitu stub pada sisi klien (berupa proxy), dan skeleton pada sisi server.
2. remote reference layer, yaitu perilaku remote reference (misalnya pemanggilan kepada suatu objek)
3. transport layer, yaitu set up koneksi, pengurusannya dan remote object tracking.

Batas antar masing-masing layer disusun oleh interface dan protokol tertentu, yaitu tiap layer bersifat independen terhadap layer lainnya, dan bisa diganti oleh implementasi alternatif tanpa mengganggu layer lainnya. Sebagai contoh, implementasi transport yang digunakan RMI adalah yang berbasis TCP (menggunakan Java socket), tapi bisa digantikan dengan menggunakan UDP.

Layer application berada di atas sistem RMI. Hubungan antara layer-layer tersebut dapat dijelaskan pada gambar berikut :

Sebuah remote method invocation dari klien ke remote server object akan melalui layer-layer pada sistem RMI dari layer transport pada sisi klien ke layer transport pada sisi server.

DCOM (Distributed Component Object Model)

DCOM adalah konsep Microsoft dan program interface yang telah diatur dalam program client-object yang dapat merequest layanan dari program server-object dalam beberapa komputer yang berada dalam satu jaringan. DCOM didasarkan oleh component object model yang menyediakan pengaturan interface yang melibatkan client dan server untuk berkomunikasi dengan sesama komputer.

DCOM juga bisa bekerja dalam sebuah jaringan dengan enterprise atau jaringan yang lain seperti internet. Ini menggunakan TCP/IP dan Hypertext Tranfer Protocol. DCOM secara umum hampir sama dengan CORBA dalam terminologinya penyedia layanan pendistribusian. DCOM menggunakan mekanisme RPC untuk transparansi pengiriman dan penerimaan informasi diantara komponen COM (seperti, client dan servers) dalam jaringan yang sama. DCOM pertama kali hadir tahun 1995 dengan initial release di Windows NT 4

Mirror dalam komputer adalah web site atau FTP yang mengcopi data atau file yang dihasilkan sama dengan file yang telah dicopy di server. Tujuannya untuk menyediakan cara alternative mengakses file ketika server utama digunakan bersamaan dan banyak user.

1 komentar: