Senin, 17 Maret 2014

Konsep RPC (Remote Procedure Call)

Pengertian RPC
Remote Procedure Call (RPC) adalah sebuah metode yang memungkinkan kita untuk mengakses sebuah prosedur yang berada di komputer lain. Untuk dapat melakukan ini sebuah server harus menyediakan layanan remote procedure. Pendekatan yang dilakuan adalah sebuah server membuka socket, lalu menunggu clientyang meminta prosedur yang disediakan oleh server. Bila client tidak tahu harus menghubungi port yang mana, client bisa me- request kepada sebuah matchmakerpada sebuah RPC port yang tetap. Matchmaker akan memberikan port apa yang digunakan oleh prosedur yang diminta client.
RPC masih menggunakan cara primitif dalam pemrograman, yaitu menggunakan paradigma procedural programming. Hal itu membuat kita sulit ketika menyediakan banyak remote procedure. RPC menggunakan socket untuk berkomunikasi dengan proses lainnya. Pada sistem seperti SUN, RPC secara default sudah ter- installkedalam sistemnya, biasanya RPC ini digunakan untuk administrasi sistem. Sehingga seorang administrator jaringan dapat mengakses sistemnya dan mengelola sistemnya dari mana saja, selama sistemnya terhubung ke jaringan.

Fitur dalam RPC
RPC memiliki fitur - fitur sebagai berikut : batching calls, broadcasting calls, callbac
procedures dan using the select subroutine.


1. Batching Calls

Fitur Batching calls mengijinkan klien untuk mengirim message calls ke server dalam jumlah besar secara sequence ( berurutan ). Batching menggunakan protokol streaming byte seperti TCP / IP sebagai mediumnya. Pada saat melakukan batching, klien tidak menunggu server untuk memberikan reply terhadap tiap messages yang dikirim, begitu pula dengan server yang tidak pernah mengirimkan messages reply. Fitur inilah yang banyak digunakan klien, karena arsitektur RPC didesain agar pada tiap call message yang dikirimkan oleh klien harus ada proses menunggu balasan dari server. Oleh karena itu maka pihak klien harus dapat mengatasi error yang kemungkinan terjadi karena pihak klien tidak akan menerima peringatan apabila terjadi error pada message yang dikirim.

2. Broadcasting Calls
Fitur Broadcasting mengijinkan klien untuk mengirimkan paket data ke jaringan dan menunggu balasan dari network. FItur ini menggunakan protokol yang berbasiskan paket data seperti UDP/IP sebagai mediumnya. Broadcast RPC membutuhkan layanan port mapper RPC untuk mengimplementasikan fungsinya.

3. Callback Procedures

Fitur Callback Procedures mengijinkan server untuk bertindak sebagai klien dan melakukan RPC callback ke proses yang dijalankan oleh klien.

4. Menggunakan select Subrutin
Fitur ini akan memeriksa deskripsi dari suatu file dan messages dalam antrian untuk melihat apakah mereka siap untuk dibaca (diterima) atau ditulis (dikirim), atau mereka dalam kondisi ditahan sementara. Prosedur ini mengijinkan server untuk menginterupsi suatu aktivitas, memeriksa datanya, dan kemudian melanjutkan proses aktivitas tersebut.


Bahasa RPC
Merupakan bahasa yang dikembangkan dari bahasa XDR dengan penambahan program definisi.
Implementasi layanan protokol dan rutin menggunakan command rpcgen, yang bekorespondensi denga bahasa C. 
Definisi dari bahasa RPC, yaitu :

Definition 

File dengan bahasa RPC memiliki beberapa definisi, diantaranya adalah : enum, struct, union, typedef, const, dan program.


Structure
Struktur pada bahasa RPC dideklarasikan seperti pada pendeklarasian struktur dalam bahasa C

Union
Union pada bahasa RPC berbeda dengan bahasa C. Kemiripan lebih ditunjukkan dengan variasi pada bahasa Pascal

Enumeration
Enumerasi pada bahasa ini memiliki syntax yang sama dengan bahasa C. 

TypeDef
Tipe Definisi ( Typedef ) pada bahasa ini memiliki syntax yang sama dengan typedef pada bahasa C.

Constant
Constant pada bahasa ini dapat digunakan jika variabel integer konstant dibutuhkan.

Programs
Program RPC dideklarasikan dengan syntax berikut secara berurutan : programdefiniton, version-list, version, procedure-list, procedure.

Declarations
 Dalam bahasa  ini, terdapat  empat  jenis  tipe deklarasi  yaitu  :  simple declarations,  fixed length array declarations,  variable- length declaration, dan pointer declaration.





sumber: 
http://tyassyiin.blogspot.com/p/remote-procedure-call-rpc.html
http://bebas.vlsm.org/v06/Kuliah/SistemOperasi/BUKU/SistemOperasi-4.X-1/ch17s06.html
http://sobatbaru.blogspot.com/2010/12/pengertian-remote-procedure-calls-rpc.html

Selasa, 11 Maret 2014

Artikel Sistem Terdistribusi CORBA

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.

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 tentanginterface. Dalam teknologi OO, interface dapat dikatakan sebagai "ikatan kontrak" antara dua obyek yang akan berkomunikasi. Bagi obyekserverinterface berfungsi sebagai "iklan" tentang apa saja yang bisa dikerjakannya. Bagi clientinterface 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 fungsicheckHarga dan checkTersedia ! Perlu diingat bahwa interface hanya menyatakan apa yang tersedia (aspek what), tidak menyebutkan bagaimanamenyediakannya (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 dancheckTersedia 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. 

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 palingcost-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.

Referensi: