Artikel-artikel populer :
Mengenal CORBA: Platform Untuk Komputasi Terdistribusi
Lukito Edi Nugroho (UGM)
Sistem Terdistribusi
Mari kita bayangkan masa depan, saat hampir semua aktivitas manusia
memanfaatkan komputer sebagai sarana utamanya. Berbagai basis data berskala
besar telah disimpan dalam format elektronis. Demikian pula berbagai aplikasi
yang mendasarkan pada basis data telah dikomputerisasi dalam sebuah lingkungan
jaringan komputer yang meliputi berbagai instansi dan perusahaan. Pada
saat itu dimensi ruang benar-benar telah berkontraksi sedemikian rupa sehingga
dunia maya seakan-akan telah menjadi dunia nyata dan berbagai aspek kehidupan
manusia terhubung melalui suatu jaring-jaring yang amat kompleks.
Ilustrasi berikut ini bisa menggambarkannya. Misalnya si A sakit dan
pergi ke dokter langganannya. Jika hasil diagnosa mengharuskan si A harus
masuk ke rumah sakit, maka pemilihan RS dan pemesanan tempat dapat dilakukan
pada saat itu juga melalui komputer di tempat praktek dokter. Selanjutnya
komputer di RS dapat mengontak komputer perusahaan asuransi kesehatan untuk
urusan pembayaran biayanya. Jika si A memerlukan obat atau peralatan
khusus, maka komputer si dokter dapat memberitahu di apotik mana obat atau
peralatan tersebut tersedia. Cerita ini dapat diperpanjang, tapi intinya
adalah bahwa satu aksi dapat memicu berbagai aktivitas lain yang saling
berhubungan.
Ilustrasi di atas nampaknya tidak lagi jauh dari kenyataan yang ada
saat ini. Sesungguhnya dapat dikatakan bahwa teknologi untuk menuju ke
sana saat ini sudah dimiliki manusia. Selain teknologi mikroelektronik
dan telekomunikasi, maka teknologi lain yang berperanan penting adalah
teknologi sistem komputer terdistribusi
(distributed computer systems).
Sistem komputer terdistribusi adalah sebuah sistem yang memungkinkan
aplikasi komputer beroperasi secara terintegrasi pada lebih dari satu lingkungan
yang terpisah secara fisis. Sistem informasi kesehatan yang diilustrasikan
di atas menunjukkan komponen-komponen aplikasi yang terdistribusi (di tempat
praktek dokter, di rumah sakit, di apotik, dan di perusahaan asuransi kesehatan).
Ciri khas sistem komputer terdistribusi adalah heterogenitas dalam berbagai
hal: perangkat keras, sistem operasi, dan bahasa pemrograman. Adalah tidak
mungkin untuk mengembangkan sistem terdistribusi yang homogen secara paksaan,
karena secara alamiah sistem komputer terdistribusi tumbuh dari lingkungan
yang heterogen. Kata kunci dalam menjembatani perbedaan-perbedaan yang
muncul adalah interoperabilitas (interoperability).
CORBA
Interoperabilitas adalah kemampuan saling bekerjasama antar sistem
komputer. Sebenarnya interoperabilitas bukanlah barang baru, karena protokol
komunikasi datapun (TCP/IP misalnya) pada dasarnya diciptakan untuk mewujudkan
interoperabilitas. Yang belum banyak dikenal adalah interoperabilitas pada
level perangkat lunak aplikasi.
Dalam konteks sistem komputer terdistribusi, meskipun komponen-komponen
aplikasi dibuat dengan bahasa pemrograman yang berbeda, menggunakan development
tools yang berbeda, dan beroperasi di lingkungan yang beragam, mereka tetap
harus dapat saling bekerjasama.
Interoperabilitas perangkat lunak menuntut homogenitas pada suatu level
tertentu. Untuk itu diperlukan semacam 'standarisasi'. Berawal dari keperluan
ini lahirlah CORBA (Common Object Request Broker Architecture).
CORBA adalah hasil 'kesepakatan' antara sejumlah vendor dan pengembang
perangkat lunak terkenal seperti IBM, Hewlett-Packard, dan DEC, yang tergabung
dalam sebuah konsorsium bernama OMG (Object Management Group).
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). Sebagai contoh, dalam
ilustrasi di awal tulisan ini, jika si pasien memerlukan obat tertentu,
maka obyek aplikasi di tempat praktek dokter berlaku sebagai client
dan mengirim pesan ke obyek aplikasi di apotik guna mengetahui apakah obat
yang diperlukan tersedia di sana.
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). Arsitektur CORBA dan ORBnya ditunjukkan pada gambar
1.
Tidak seperti pada lazimnya bahasa OO (C++ atau Java), proses pengiriman
pesan dari client ke implementasi obyek tidak dilakukan secara langsung.
Pertama, stub dan skeleton "mengisolasi" client dan
implementasi obyek dari tugas-tugas level rendah seperti proses marshalling
dan
unmarshalling data. Selanjutnya ORB berfungsi sebagai "pialang"
yang menjembatani heterogenitas antara kedua obyek. ORB menangani perbedaan
platform, pelacakan lokasi obyek, dan proses transfer pesan sedemikian
rupa sehingga transparan terhadap kedua obyek. Dengan demikian pemrograman
client
dan implementasi obyek bisa berkonsentrasi sepenuhnya pada aspek fungsionalitas
keduanya.
Mekanisme yang ditunjukkan pada Gambar 1 merupakan dasar operasi sistem
berbasis CORBA. Sebagai contoh, dalam kasus si A di atas, program di tempat
praktek dokter bertindak sebagai client bagi program di rumah sakit.
Bila si A perlu dirawat di rumah sakit, maka program sang dokter akan mengirimkan
pesan ke program di rumah sakit melalui ORB. Menariknya, kedua program
tersebut dapat dikembangkan tanpa perlu banyak ikatan antara keduanya,
misalnya menggunakan bahasa pemrograman apa, sistem operasi apa, dan sebagainya.
Cukup berangkat dari sebuah 'kesepakatan' yang dituangkan dalam sebuah
interface
(lihat bagian tentang Pemrograman Berbasis CORBA), maka kedua program tersebut
bisa dikembangkan secara independen.
Pemrograman Berbasis CORBA
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).
Sintaks IDL sendiri mirip dengan sintaks bahasa C++. Berikut ini contoh
sebuah spesifikasi interface untuk layanan yang disediakan oleh obyek aplikasi
di apotik. Ingat bahwa spesifikasi ini berlaku baik untuk client
maupun implementasi obyek.
interface checkObat {
float checkHarga(in string namaObat);
boolean checkTersedia(in string namaObat);
};
Sekilas definisi di atas mirip dengan definisi kelas dalam C++. Perbedaan
yang paling nyata adalah tidak ada kode program untuk fungsi checkHarga
dan checkTersedia ! Perlu diingat bahwa interface hanya
menyatakan apa yang tersedia (aspek what), tidak menyebutkan
bagaimana
menyediakannya (aspek how). Kita tidak akan membahas sintaks IDL
dalam kesempatan ini. Fokus kita adalah bagaimana menggunakan spesifikasi
interface
yang dibuat dengan IDL ini untuk membuat
client dan implementasi
obyek dalam aplikasi.
Interface yang ditulis dengan IDL hanya merupakan kerangka bagi
program client dan implementasi obyek. Pemrogram masih harus mengisi
detil-detil keduanya sehingga membentuk program yang utuh. Pada contoh
interfacecheckObat
di atas misalnya, fungsi-fungsi checkHarga dan checkTersedia
harus diimplementasikan.
Yang perlu diperhatikan dalam pemrograman client dan implementasi
obyek adalah bahasa pemrograman yang digunakan. Bahasa yang bisa digunakan
adalah yang memiliki pemetaan (mapping) dengan IDL. Pemetaan ini
menyebutkan ekuivalensi tipe data, fungsi, dan konstruksi pemrograman IDL
lainnya dalam konstruksi pemrograman bahasa yang bersangkutan. Pada umumnya
bahasa pemrograman populer seperti C, C++, Java, Smalltalk, dan COBOL telah
memiliki pemetaan ini. Seperti telah dijelaskan di depan, client
dan implementasi obyek dapat menggunakan bahasa pemrograman yang berbeda.
Langkah selanjutnya adalah kompilasi program. Program client,
implementasi obyek, dan spesifikasi interface dikompilasi. Spesifikasi
interface
dikompilasi dengan kompiler IDL, menghasilkan kode stub (untuk client)
dan skeleton (untuk implementasi obyek). Tiap bahasa yang didukung
memiliki kompiler IDL sendiri. Selanjutnya dilakukan proses linking
untuk menghasilkan program yang bisa dieksekusi. Proses ini ditunjukkan
oleh gambar 2 berikut ini.
Sampai sejauh ini kita bisa melihat bahwa IDL menyelesaikan masalah
heterogenitas dan distribusi lokasi obyek. Masih ada hal yang belum terpecahkan:
bagaimana client dapat mengakses implementasi obyek? Lazimnya dalam
bahasa-bahasa pemrograman hal ini dilakukan melalui nama (pengidentifikasi)
obyek. Tapi bagaimana jika implementasi obyek terletak di komputer yang
berbeda dan dibuat dengan bahasa yang berbeda pula? CORBA menggunakan referensi
obyek untuk tujuan ini. Tiap implementasi obyek memiliki sebuah referensi
obyek sebagai handle untuk mengakses dirinya. Referensi obyek dibuat
oleh ORB pada saat obyek tersebut diciptakan, bersifat unik, dan tetap
valid selama obyek tersebut ada. Referensi obyek juga menyembunyikan lokasi
fisis dari obyek yang bersangkutan. Dengan referensi obyek, client
dapat mengakses sebuah implementasi obyek tanpa harus mengetahui di mana
persisnya lokasi obyek tersebut. Referensi obyek dapat dikirimkan ke aplikasi
lain, disimpan dalam basis data, atau diberikan kepada seorang pelanggan
untuk digunakan dalam programnya.
Interoperabilitas ORB
Ruang lingkup komputasi berbasis CORBA tidak hanya terbatas pada satu
ORB saja. Antara satu ORB dengan ORB yang lain bisa juga berkomunikasi.
Model ini sangat bermanfaat untuk komputasi berskala
enterprise
dengan lingkup distribusi yang sangat luas. Dalam situasi seperti ini,
tidak mungkin untuk menggunakan hanya satu ORB untuk setiap program yang
ada. Pendekatan yang logis adalah dengan melakukan clustering, dan
sebuah cluster ditangani oleh sebuah ORB. Dengan mekanisme ini,
tiap ORB dituntut untuk bisa berkomunikasi dengan ORB lainnya, untuk memfasilitasi
komunikasi antar program yang berjalan di atasnya.
Interoperabilitas dapat dilakukan secara efisien dan sederhana dengan
mengharuskan dua ORB untuk "berbicara" dengan protokol yang sama. Internet
Interoperable Protocol (IIOP) adalah protokol standar yang harus dimiliki
ORB agar bisa disebut "selaras dengan CORBA" (CORBA-compliant).
Dengan kata lain, IIOP adalah "bahasa komunikasi standar" bagi ORB. Interoperabilitas
juga dapat dicapai melalui penjembatanan
(bridging). Penjembatanan
memungkinkan komunikasi dilakukan oleh ORB dengan protokol yang berbeda.
Cara ini memberikan keleluasaan kepada implementor apabila metode pertama
tidak mungkin atau sulit diterapkan, misalnya karena alasan tuntutan solusi
komputasi yang paling cost-effective. Kerugiannya, arsitektur sistem
keseluruhan menjadi lebih kompleks karena diperlukan jembatan-jembatan
antar ORB.
Sepintas model ini terlihat rumit, tapi dari sisi aplikasi tidak ada
pengaruhnya sedikitpun. Transparansi terjaga penuh, client tidak
perlu tahu sedikitpun apakah implementasi obyek terletak di lingkup ORB
yang sama atau tidak. Jika tidak, ORBnya secara otomatis akan melemparkan
pesannya ke ORB di mana implementasi obyek berada. Dalam contoh kasus kita,
jika permintaan tentang suatu obat tidak bisa dipenuhi oleh obyek di apotik
X, maka ORB di tempat itu dapat meneruskan pesan permintaan ini ke ORB
di apotik Y misalnya.
OMA
Sejauh ini, kita hanya membicarakan interoperabilitas pada level obyek.
Pada kenyataannya, interoperabilitas pada level aplikasi jauh lebih kompleks.
Keterkaitan antara satu program dengan program yang lain begitu beragam,
hal ini menyulitkan penyediaan dukungan yang lebih komprehensif secara
terstruktur. Dengan teknologi berbasis CORBA, OMG mencoba menuangkan visinya
tentang aplikasi terdistribusi dalam sebuah arsitektur yang disebut Object
Management Architecture (OMA). OMA mengelompokkan jenis-jenis interaksi
antar program untuk memudahkan penyediaan dukungan. Gambar 3 menggambarkan
konsep OMA.
OMA melakukan strukturisasi dunia aplikasi ke dalam dua kelompok besar:
kategori layanan CORBA (CORBA services) dan kategori fasilitas CORBA
(CORBA
facilities). Layanan CORBA menyediakan fungsi-fungsi dasar yang digunakan
oleh hampir setiap obyek dalam berbagai aplikasi. Fungsi-fungsi ini biasanya
bersifat generik dan tidak tergantung pada jenis domain aplikasi. Sebagai
contoh adalah layanan penamaan (naming service). Bayangkan bila
kita memerlukan sebuah layanan tapi tidak tahu ke mana harus mencari
server
yang menyediakan layanan tersebut. Layanan penamaan dapat membantu kita
layaknya sebuah "halaman kuning"
(yellow pages); dia bisa menyiarkan
direktori layanan yang terdaftar padanya. Karena sifatnya yang generik,
layanan penamaan dapat digunakan oleh aplikasi dari berbagai domain.
Fasilitas CORBA lebih tinggi levelnya. Ia menyediakan layanan pada level
aplikasi. Ada dua jenis fasilitas: horizontal, yang diperlukan oleh berbagai
jenis domain (misalnya, user-interface), dan vertikal, yang berlaku
khusus untuk domain tertentu (misalnya, dalam kasus kita, domain kesehatan).
Fasilitas horizontal fungsinya mirip dengan layanan CORBA, tetapi beroperasi
pada level yang lebih tinggi karena berhubungan langsung dengan aspek fungsional
dari aplikasi. OMG secara terus-menerus melakukan standarisasi terhadap
interface
untuk komponen-komponen di masing-masing kategori. Semakin banyak layanan
dan fasilitas yang distandarisasi, semakin mudah untuk mencapai komputasi
terdistribusi berbasis komponen dalam berbagai bidang secara
plug-and-play,
tanpa terganggu oleh masalah heterogenitas.
CORBA di Linux
Dewasa ini cukup banyak perangkat pengembangan berbasis CORBA yang dapat
dijalankan di sistem operasi Linux. Hampir semua paket hanya mendukung
satu pemetaan bahasa saja, kecuali paket Inter-Language Unification
(ILU) dari Xerox PARC yang mendukung beberapa bahasa sekaligus (ANSI C,
C++, Python, Java, dsb). Tapi konsep ILU sendiri agak berbeda dengan CORBA,
karena fokusnya adalah pada integrasi pada level bahasa pemrograman. Meskipun
demikian, pendekatannya mirip, bahkan interface pada ILU dapat pula dispesifikasikan
dengan menggunakan IDL.
Beberapa contoh perangkat pengembangan berbasis CORBA yang berjalan
di Linux antara lain: MICO dari mico.org (bahasa yang didukung:
C++), Fnorb dari DSTC, Australia (Python), JacORB oleh Gerard
Brose dari Freie Universitat, Berlin (Java), OmniORB2 dari AT&T
(C++), serta tak ketinggalan pula ORBit
keluaran laboratorium
riset RedHat (mendukung bahasa C) yang dipakai dalam proyek Gnome.
TAO (The ACE ORB) dari Washington University adalah implementasi
ORB yang dikembangkan dengan pendekatan yang berbeda. TAO tidak semata-mata
merupakan sistem ORB sederhana, tetapi ia dirancang untuk bekerja pada
lingkungan real-time dengan batasan-batasan (constraints)
yang lebih ketat dibandingkan dengan sistem terdistribusi biasa. Konsekuensinya
TAO lebih memfokuskan diri pada dukungan terhadap aspek real-time
dan koneksi berkecepatan tinggi, yang diimplementasikan ke dalam arsitektur
inti ORB dan modul-modul pendukungnya.
Jika anda memiliki lingkungan komputasi terdistribusi di rumah, di kantor,
atau di sekolah, anda bisa mencoba melakukan pemrograman sistem terdistribusi
berbasis CORBA. Yang perlu anda lakukan adalah men-download salah
satu perangkat pengembangan di atas, memasangnya di sistem anda, dan mengikuti
petunjuk/ tutorial pemrograman yang diberikan. Jika petunjuk yang ada belum
cukup memadai, anda bisa mencari tutorial pemrograman CORBA melalui Internet.
Salah satu koleksi titik akses yang cukup lengkap terdapat di situs Cetus
(titik akses diberikan di bagian pustaka).
Penutup
Komputasi terdistribusi merupakan sesuatu yang amat kompleks, apalagi
jika ruang lingkupnya sangat luas (pada level enterprise misalnya).
CORBA membantu menyederhanakan persoalan dengan menyembunyikan berbagai
detail pekerjaan pada level rendah dan heterogenitas sistem dan platform.
Lebih lanjut, arsitektur OMA menyediakan sebuah framework pengembangan
sistem terdistribusi yang konsisten, sehingga heterogenitas tetap dapat
dikelola dengan baik. Dengan semakin banyaknya pemain teknologi informatika
yang terjun ke dunia CORBA, agaknya contoh ilustrasi di awal tulisan ini
dalam waktu yang relatif tidak terlalu lama akan dapat direalisasikan.
Pustaka
Berikut ini diberikan beberapa titik akses ke situs-situs yang berkaitan
dengan CORBA.
Gambar :
- Komunikasi dari client ke implementasi obyek.
- Proses pengembangan client dan implementasi obyek.