Pengembangan Aplikasi
Terdistribusi:
Remote Procedure Call (RPC)
M. Iqbal Ardimansyah, S.T., [Link]. (3079)
Yulia Retnowati, [Link]., M.T. (3442)
Rekayasa
RL300 Perangkat Lunak
– Pengembangan – UPITerdistribusi
Aplikasi Kampus Cibiru
Review Prinsip
Jaringan
(Arsitektur)
2
RL300 – Pengembangan Aplikasi Terdistribusi
Sistem Aplikasi Terdistribusi
• Sitem aplikasi terdistribusi adalah sekumpulan elemen aplikasi yang saling berhubungan satu
dengan yang lainnya dan juga membentuk satu kesatuan guna menyelesaikan satu tujuan yang
spesifik atau menjalangkan seperangkat fungsi.
• Terdistribusi berasal dari kata “distribusi” yang merupakan lawan kata dari “sentralisasi”. Distribusi
sendiri artinya adalah penyebaran, sirkulasi, penyerahan, pembagian menjadi bagian-bagian kecil.
3
RL300 – Pengembangan Aplikasi Terdistribusi
Arsitektur Sistem Aplikasi Terdistribusi
• Definisi: merupakan rancangan untuk penyusunan komponen-komponen suatu sistem dimana
rancangan tersebut mengindentifikasi komponen, fungsi dari setiap komponen, konektifitas antar
komponen, dan pemetaan fungsionalitas komponen.
• Definisi: istilah untuk menyatakan bagaimana mengidentifikasi komponen-komponen yang lebih
spesifik secara terstruktur dengan tujuan agar struktur yang telah dirancang dapat memenuhi
kebutuhan saat ini dan saat yang akan datang.
4
RL300 – Pengembangan Aplikasi Terdistribusi
Arsitektur Sistem Aplikasi Terdistribusi
• Sistem aplikasi terdistribusi merupakan bagian dari sistem yang kompleks yang menghubungkan
antar aplikasi dalam beberapa mesin.
• Oleh sebab itu, dibutuhkan pengorganisasian (arsitektur) sistem yang baik.
• Ada dua hal dalam melihat arsitektur sistem terdistribusi, yaitu:
o Arsitektur logis (software architecture).
o Arsitektur fisik (system architecture).
5
RL300 – Pengembangan Aplikasi Terdistribusi
Software Architecture
Arsitektur Logis (Software architecture)
• Organisasi logika dari komponen-komponen perangkat lunak
• Komponen yang dimaksud berupa unit modular berupa interface yang dapat diproses di sistem yang
berbeda
- RPC (Remote Procedure Call), message passing
• Jenis Model arsitektur logis (style)
- Layered architectures
- Object-base architectures
- Data-Center architectures
- Event-based architectures
6
RL300 – Pengembangan Aplikasi Terdistribusi
System Architecture
Arsitektur Fisik (System architecture)
• Implementasi pada jaringan hardware
• Implementasi komponen perangkat lunak pada jaringan hardware
7
RL300 – Pengembangan Aplikasi Terdistribusi
System Architecture
1. CENTRALIZED ARCHITECTURE (Client – Server)
• Application Layering
• Multi-Tiered Architectures
2. DECENTRALIZED ARCHITECTURE
• Structured P2P (Peer-to-Peer) Architectures
• Unstructured P2P Architectures
• Topology Management of Overlay Networks
• Superpeers
3. HYBRID ARCHITECTURE
• Edge-Server Systems
• Collaborative Distributed Systems
8
RL300 – Pengembangan Aplikasi Terdistribusi
Layanan Jarak
Jauh
9
RL300 – Pengembangan Aplikasi Terdistribusi
Layanan Jarak Jauh
Pengantar request atau permintaan komputer client kepada komputer server, dimana
komputer server akan mengubah permintaan menjadi pesan dan server menjawab
atau mengirim paket sebagai pesan kembali ke client.
10
RL300 – Pengembangan Aplikasi Terdistribusi
Karakteristik Terdistribusi
• Terletak secara terpisah di setiap host
• Dapat berkomunikasi satu sama lain
- Proses komunikasi (layanan jarak jauh)
§ RPC (Remote Procedure Call)
§ RMI (Remote Method Invocation)
§ CORBA (Common Object Request Broker Architecture)
§ XML RPC & Web Service
11
RL300 – Pengembangan Aplikasi Terdistribusi
Remote
Procedure Call
(RPC)
12
RL300 – Pengembangan Aplikasi Terdistribusi
Objek Terdistribusi
• Objek terdistribusi biasanya berfungsi sebagai middleware
• Middleware adalah software yang menyediakan kemampuan programming untuk berkomunikasi antar
proses dan mampu melakukan message passing
13
RL300 – Pengembangan Aplikasi Terdistribusi
Pendahuluan Remote Procedure Call (RPC)
• Remote procedure: prosedur yang dijalankan pada komputer jarak jauh (remote) namun
dapat dipanggil dari komputer lokal seolah-olah prosedur tersebut adalah prosedur lokal.
Teknik yang dilakukan disebut Remote Procedure Call (RPC).
• Prosedur: urutan langkah-langkah yang dilakukan untuk mencapai tugas tertentu.
• Definisi RPC: protokol komunikasi yang memungkinkan suatu program untuk meminta
layanan dari program lain pada komputer berbeda dalam suatu jaringan.
• Manfaat RPC: melakukan request pada sistem jarak jauh, seolah-olah sedang menggunakan
sistem lokal.
14
RL300 – Pengembangan Aplikasi Terdistribusi
Pendahuluan Remote Procedure Call (RPC)
• Pada sistem lokal yang biasanya, sebuah program dapat membuat request dalam alamat yang sama.
Request tersebut kemudian bergerak dari pemanggil ke penerima, dan hasilnya dikembalikan. RPC
memperluas fungsi tersebut dengan memfasilitasi komunikasi melalui jaringan.
• Dengan demikian, program di suatu mesin (client) dapat memanggil prosedur di komputer lain
(server) dan menerima hasilnya kembali. Untuk dapat melakukan ini, server harus menyediakan
layanan remote procedure.
• RPC adalah alat yang ampuh untuk membangun sistem terdistribusi. Hal ini memungkinkan program
untuk berkomunikasi satu sama lain melalui jaringan tanpa harus mengkhawatirkan detail
komunikasi jaringan.
15
RL300 – Pengembangan Aplikasi Terdistribusi
Pendekatan RPC
Cara kerja RPC:
• Server membuka socket, lalu menunggu client yang meminta prosedur yang disediakan oleh server.
• Bila client tidak tahu harus menghubungi port yang mana, client bisa merequest kepada sebuah
matchmaker (pencocok port) pada sebuah RPC port yang tetap. Matchmaker akan memberikan prot
apa yang digunakan oleh prosedur yang diminta client
16
RL300 – Pengembangan Aplikasi Terdistribusi
Remote Procedure Call (RPC)
17
RL300 – Pengembangan Aplikasi Terdistribusi
Kelebihan RPC
Relatif mudah digunakan:
• Prosedur non lokal dianggap sebagai prosedur lokal, sehingga programmer dapat berkonsentrasi pada
software logic.
• Tidak perlu memikirkan low level details.
Powerfull
• Dalam scalability, fault tolerance dan reliability
18
RL300 – Pengembangan Aplikasi Terdistribusi
Kekurangan RPC
• Tidak fleksibel terhadap perubahan: Static relationship between client & server at run-time.
• Ketinggalan zaman: Berdasarkan procedural/structured programming yang sudah ketinggalan zaman dibandingkan
OOP (RMI).
• Passing parameter terbatas: RPC hanya mengizinkan passing parameter berdasarkan nilai atau nilai pointer
sehingga membatasi mekanisme passing parameter yang lebih canggih.
• Peningkatan overhead: Pemanggilan prosedur jarak jauh menimbulkan overhead karena komunikasi jaringan
sehingga berpotensi menyebabkan waktu respons lebih lambat dibandingkan dengan prosedur lokal.
• Rentan terhadap kegagalan: Penggunaan banyak komponen seperti sistem komunikasi dan mesin jarak jauh
membuat RPC lebih rentan terhadap kegagalan..
• Biaya proses lebih tinggi: Penggunaan panggilan prosedur jarak jauh dapat meningkatkan biaya proses secara
keseluruhan karena biaya tambahan yang diperlukan dalam komunikasi jaringan.
19
RL300 – Pengembangan Aplikasi Terdistribusi
Mekanisme Kerja RPC (1/2)
RPC berfungsi sebagai mekanisme untuk komunikasi dan koordinasi antara proses atau program yang terletak pada
mesin yang berbeda dalam suatu jaringan. Berikut merupakan cara kerja dari RPC:
1. Client memulai panggilan: Program client memulai panggilan RPC seolah-olah meminta prosedur dalam mesin
lokal dan memanggil client stub. Client stub bertindak sebagai proxy untuk prosedur jarak jauh yang sebenarnya
dan bertanggung jawab untuk mengemas parameter prosedur ke dalam pesan yang disebut marshalling.
(Marshalling: konversi parameter prosedur dari tipe data aslinya ke dalam format yang cocok untuk transmisi
melalui jaringan).
2. Mengirim pesan: Sistem operasi lokal client mengirimkan pesan yang berisi parameter prosedur yang disusun dari
mesin client ke mesin server jarak jauh.
3. Menerima pesan: Di sisi server, sistem operasi server menerima pesan masuk dari jaringan dan meneruskannya ke
server stub.
20
RL300 – Pengembangan Aplikasi Terdistribusi
Mekanisme Kerja RPC (2/2)
4. Unmarshalling: Server stub menerima pesan dan membongkar parameter prosedur dari pesan. Pada tahap ini,
dilakukan konversi data kembali ke format aslinya sehingga cocok untuk diproses oleh prosedur lokal server.
5. Eksekusi prosedur: Server stub kemudian memanggil prosedur server yang sebenarnya untuk melakukan tugas
atau layanan yang diminta.
6. Menyusun return value: Setelah prosedur server menyelesaikan tugasnya, ia kembali ke server stub, yang
kemudian mengatur return value ke pesan lain.
7. Mengembalikan Pesan: Server stub menyerahkan pesan yang berisi return value ke transport layer, yang
menangani pengiriman pesan kembali ke transport layer client.
8. Menerima Pesan Kembali: Transport layer client mengirimkan pesan ke client stub. Client stub kemudian
membongkar return value dari pesan dan mengonversinya kembali ke tipe data aslinya.
9. Kembali ke pemanggil: Client stub mengembalikan return value tersebut ke pemanggil, dan panggilan RPC selesai.
21
RL300 – Pengembangan Aplikasi Terdistribusi
Mekanisme Kerja RPC (2/2)
22
RL300 – Pengembangan Aplikasi Terdistribusi
Definisi Stub
• Stub, dalam konteks komputasi terdistribusi, adalah sepotong kode yang digunakan untuk mengonversi
parameter selama panggilan prosedur jarak jauh (RPC).
• RPC memungkinkan komputer klien untuk memanggil prosedur jarak jauh di komputer server.
• Parameter yang digunakan dalam panggilan fungsi harus dikonversi karena komputer klien dan server
menggunakan ruang alamat yang berbeda.
• Stub melakukan konversi ini sehingga komputer server jarak jauh menganggap RPC sebagai panggilan
fungsi lokal.
23
RL300 – Pengembangan Aplikasi Terdistribusi
Masalah pada RPC
1. Performance (Kecepatan): RPC bisa lebih lambat dibandingkan local prosedur call karena adanya
overhead komunikasi jaringan.
2. Reliability (Keandalan): RPC mungkin kurang dapat diandalkan bila dibandingkan dengan local
procedure call karena adanya kemungkinan kegagalan jaringan (network failures).
3. Security (Keamanan): RPC rentan terhadap serangan keamanan seperti eavesdropping
(penyadapan) dan spoofing .
4. Complexity (Kompleksitas): RPC bisa jadi rumit untuk diimplementasidan dan debug.
24
RL300 – Pengembangan Aplikasi Terdistribusi
1 Online Banking
2 Email
Contoh
3 Social Media
Implementasi RPC
Online
4 Shopping
Online
5 Gamming
25
RL300 – Pengembangan Aplikasi Terdistribusi
Multithread
Programming
26
RL300 – Pengembangan Aplikasi Terdistribusi
Pendahuluan Thread
• Unit dasar dari pemanfaatan CPU
• Pada dasarnya satu proses terdiri atas satu thread (single-thread)
• Dalam sekali waktu hanya ada satu tugas yang bisa dikerjakan dalam satu proses
27
RL300 – Pengembangan Aplikasi Terdistribusi
Pendahuluan Multithread
• Thread: satu kumpulan instruksi yang akan dieksekusi secara independen.
• Multithread: suatu kemampuan yang memungkinkan beberapa kumpulan instruksi atau proses yang dapat
dijalankan secara bersamaan dalam sebuah program.
• Thread adalah unit dasar pemanfaatan CPU yang terdiri dari program counter, stack, dan register.
28
RL300 – Pengembangan Aplikasi Terdistribusi
Perbedaan Thread dan Proses
• Thread adalah bagian dari suatu proses.
• Tiap proses memiliki informasi status dan sumber daya sendiri, thread berbagi informasi
status dan sumber daya dengan thread yang lain dalam satu proses.
• Tiap proses memiliki alamat yang berbeda, sedangkan thread berbagi alamat yang sama.
• Pergantian antar thread lebih cepat dibandingkan dengan antar proses.
29
RL300 – Pengembangan Aplikasi Terdistribusi
Keuntungan dan Kerugian Multithread
• Keuntungan Multithreading:
§ Responsif
§ Ekonomis
§ Resource Sharing
§ Utilisasi CPU
• Kekurangan Multithreading:
§ Berdampak pada pemborosan resource dan CPU apabila digunakan secara berlebihan
§ Multithreading menghasilkan program yang lebih kompleks
§ Thread yang banyak bisa saling berinterferensi ketika saling berbagi resource hardware seperti cache.
30
RL300 – Pengembangan Aplikasi Terdistribusi
Contoh Multithreading
• Web browser: memiliki satu thread untuk display image dan thread lainnya untuk mengambil
data dari jaringan (network).
• Web server: menerima request dari client untuk halaman web, gambar, suara, video, dll. Web
server melayani client secara bersamaan (concurrent).
31
RL300 – Pengembangan Aplikasi Terdistribusi
Tugas
32
RL300 – Pengembangan Aplikasi Terdistribusi
Buatlah resume tentang:
• Pemrograman Multihread
• PemrogramanSocketMultithread
• Pemrograman Client
• Pemrograman Server
33
RL300 – Pengembangan Aplikasi Terdistribusi
Terimakasih
RL300 – Pengembangan Aplikasi Terdistribusi
34
This presentation template was created by Slidesgo