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 pengurusan 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.
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).
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.
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.
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).
KELEBIHAN corba:
• Programer dapat dengan mudah menulis aplikasi yang mampu bekerja secara independent antar platform dan jaringan
• Memberikan kemampuan untuk mengintegrasi software aplikasi yang berbeda,tanpa harus tergantung pada fasilitas komunikasi tingkat bawah
• Bekerja secara baik dengan beberapa midleware-midleware yang ada,termasuk microsoft distributor sistem(DCOM) .suport penggunaan secara statis maupun dinamis
• Memberikan ekstensi optional untuk area yang tidak bisa dijamah oleh core aplikasi.
• Programer dapat dengan mudah menulis aplikasi yang mampu bekerja secara independent antar platform dan jaringan
• Memberikan kemampuan untuk mengintegrasi software aplikasi yang berbeda,tanpa harus tergantung pada fasilitas komunikasi tingkat bawah
• Bekerja secara baik dengan beberapa midleware-midleware yang ada,termasuk microsoft distributor sistem(DCOM) .suport penggunaan secara statis maupun dinamis
• Memberikan ekstensi optional untuk area yang tidak bisa dijamah oleh core aplikasi.
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.
Tidak ada komentar:
Posting Komentar