Konsep RPC Client-Server dan Aplikasinya dalam Sistem Modern

Apa Itu RPC Client-Server?
RPC (Remote Procedure Call) adalah protokol komunikasi yang memungkinkan program komputer untuk memanggil fungsi atau prosedur di lokasi lain (server) seolah-olah itu adalah panggilan lokal. Dalam model client-server, klien mengirim permintaan ke server, server memprosesnya, dan mengembalikan hasil ke klien. Konsep ini menjadi dasar banyak sistem terdistribusi modern, seperti layanan cloud, microservices, dan aplikasi IoT.
Bagaimana RPC Client-Server Bekerja?
Berikut alur kerja RPC dalam model client-server:
- Klien Memanggil Prosedur: Klien memanggil fungsi/prosedur seolah-olah itu lokal.
- Stub Klien: Client stub mengemas (marshalling) parameter menjadi format yang bisa dikirim via jaringan.
- Transfer ke Server: Pesan dikirim ke server melalui protokol jaringan (misalnya TCP/IP).
- Stub Server: Server stub menerima dan membongkar (unmarshalling) parameter.
- Eksekusi di Server: Server menjalankan prosedur yang diminta.
- Pengembalian Hasil: Hasil dikirim kembali ke klien melalui proses sebaliknya.
Gambar: Alur komunikasi RPC antara klien dan server.
No | Materi | Tanggal | Waktu | Harga | Lokasi | View | Action |
---|---|---|---|---|---|---|---|
1 | IOT PLC SCADA Siemens | 7-8 Juni 2025 | 08.00 - 16.00 | 2000000 | Surabaya | Silabus | Daftar Sekarang |
2 | IOT PLC SCADA Omron | 14 - 15 Juni 2025 | 08.00 - 16.00 | 2000000 | Surabaya | Silabus | Daftar Sekarang |
3 | IOT PLC SCADA Schneider | 21-22 Juni 2025 | 08.00 -16.00 | 2000000 | Surabaya | Silabus | Daftar Sekarang |
4 | IOT PLC SCADA Allen Bradley | 28-29 Juni 2025 | 08.00-16.00 | 2000000 | Surabaya | Silabus | Daftar Sekarang |
Komponen Utama RPC
- Klien: Program yang meminta layanan.
- Server: Program yang menyediakan layanan.
- Stub: Penerjemah parameter dan hasil antara klien dan server.
- Runtime RPC: Menangani komunikasi jaringan, error handling, dan sinkronisasi.
Aplikasi RPC Client-Server di Dunia Nyata
Remote Procedure Call (RPC) adalah salah satu metode komunikasi yang sering digunakan dalam berbagai sistem teknologi modern. Dengan RPC, sebuah program bisa menjalankan fungsi di komputer lain seolah-olah fungsi tersebut ada secara lokal. Nah, berikut ini adalah beberapa contoh bagaimana RPC digunakan dalam kehidupan nyata:
1. Sistem Microservices
Dalam arsitektur microservices, setiap layanan beroperasi secara mandiri tetapi tetap perlu berkomunikasi satu sama lain. Salah satu protokol yang sering digunakan adalah gRPC (Google RPC). Dengan format data Protocol Buffers (Protobuf), gRPC memungkinkan pertukaran data yang lebih cepat dibandingkan REST API berbasis JSON.
📌 Contoh:
- Layanan pembayaran pada e-commerce berkomunikasi dengan layanan stok barang untuk memastikan ketersediaan produk sebelum transaksi.
- Aplikasi ride-sharing seperti Gojek atau Grab menggunakan microservices untuk menangani pemesanan, navigasi, dan pembayaran secara terpisah tetapi tetap sinkron.
2. Layanan Cloud Computing
Platform cloud computing seperti AWS Lambda dan Google Cloud Functions menggunakan RPC untuk menjalankan fungsi secara serverless. Dalam sistem ini, aplikasi klien (misalnya, aplikasi mobile) dapat memanggil fungsi di cloud tanpa perlu mengelola server secara manual.
📌 Contoh:
- Aplikasi pengenalan wajah yang mengunggah gambar ke cloud, lalu fungsi di server mengenali wajah menggunakan model AI dan mengembalikan hasilnya ke aplikasi pengguna.
3. Basis Data Terdistribusi
Sistem database terdistribusi seperti Apache Cassandra menggunakan RPC untuk sinkronisasi data antar node di berbagai lokasi. Dengan ini, data tetap tersedia dan up-to-date di seluruh sistem.
📌 Contoh:
- Aplikasi media sosial seperti Instagram atau TikTok menyimpan data pengguna di berbagai server untuk mengurangi latensi dan meningkatkan kecepatan akses di seluruh dunia.
4. Aplikasi IoT (Internet of Things)
Dalam ekosistem IoT, sensor-sensor yang tersebar di berbagai lokasi bertindak sebagai klien dan mengirimkan data ke server pusat untuk diproses. RPC memungkinkan komunikasi ini terjadi dengan cepat dan efisien.
📌 Contoh:
- Sensor cuaca yang mengirim data suhu, kelembaban, dan tekanan udara ke server pusat untuk analisis dan prediksi cuaca.
- Smart home, di mana aplikasi mobile bisa mengendalikan lampu atau AC melalui server yang meneruskan perintah ke perangkat IoT.
5. Game Online Multiplayer
Di game online, kecepatan dan responsivitas sangat penting. RPC memungkinkan server menerima input dari pemain secara real-time dan mengupdate status permainan dengan cepat.
📌 Contoh:
- Saat bermain game battle royale seperti PUBG atau Free Fire, setiap pergerakan dan aksi pemain dikirim ke server via RPC, lalu diperbarui untuk semua pemain di dalam game.
- Game strategi seperti Clash of Clans menggunakan RPC untuk sinkronisasi data antar pemain saat melakukan serangan atau menerima hadiah dari clan.
Keunggulan RPC Client-Server
- Efisiensi: Minim overhead karena menggunakan protokol biner (misalnya Protobuf).
- Kemudahan Pengembangan: Developer fokus pada logika bisnis, bukan komunikasi jaringan.
- Bahasa-Agnostik: Klien dan server bisa ditulis dalam bahasa berbeda (misalnya Python klien dan Go server).
- Transparansi: Prosedur remote terasa seperti lokal bagi developer.
Tantangan dan Solusi
- Latensi Jaringan: Optimasi dengan kompresi data dan koneksi persisten.
- Error Handling: Implementasi timeout dan retry mechanism.
- Keamanan: Enkripsi data (TLS/SSL) dan autentikasi (OAuth2).
A.Contoh Implementasi Sederhana
Langkah 1:Server (Python menggunakan gRPC):
# Definisi service di .proto service Calculator { rpc Add(Numbers) returns (Result) {} } # Implementasi server def add(request, context): return Result(value=request.a + request.b)
Langkah 2:Client (Java Script)
const client = new CalculatorClient('localhost:50051'); client.add({a: 5, b: 3}, (err, response) => { console.log('Hasil: ', response.value); // Output: 8 });
B.Implementasi JSON-RPC (Node.js – Server, Python – Client)
Kasus: Sistem manajemen inventaris.
Langkah 1: Implementasi Server (Node.js)
const jsonrpc = require('jsonrpc-lite'); const inventory = {}; const rpcMethods = { addItem: ({ name, quantity }) => { if (!inventory[name]) { inventory[name] = 0; } inventory[name] += quantity; return { success: true, message: `Added ${quantity} ${name}(s)` }; }, getItem: ({ name }) => { return { success: true, quantity: inventory[name] || 0 }; } }; const handleRequest = (request) => { const parsed = jsonrpc.parse(request); const method = rpcMethods[parsed.payload.method]; if (method) { return method(parsed.payload.params); } return { error: 'Method not found' }; }; // Contoh server HTTP sederhana const http = require('http'); const server = http.createServer((req, res) => { let body = ''; req.on('data', chunk => body += chunk); req.on('end', () => { const result = handleRequest(body); res.writeHead(200, { 'Content-Type': 'application/json' }); res.end(JSON.stringify(result)); }); }); server.listen(3000, () => { console.log('JSON-RPC server running on port 3000'); });
Langkah 2: Implementasi Client (Python)
import requests def add_item(name, quantity): payload = { "jsonrpc": "2.0", "method": "addItem", "params": {"name": name, "quantity": quantity}, "id": 1 } response = requests.post("http://localhost:3000", json=payload) return response.json() def get_item(name): payload = { "jsonrpc": "2.0", "method": "getItem", "params": {"name": name}, "id": 2 } response = requests.post("http://localhost:3000", json=payload) return response.json() # Contoh penggunaan print(add_item("laptop", 5)) # Output: {"success": true, "message": "Added 5 laptop(s)"} print(get_item("laptop")) # Output: {"success": true, "quantity": 5}
C.Implementasi XML-RPC (Python – Server, PHP – Client)
Kasus: Sistem pencatatan suhu IoT.
Langkah 1: Implementasi Server (Python)
from xmlrpc.server import SimpleXMLRPCServer class TemperatureLogger: def __init__(self): self.temperatures = [] def log_temperature(self, device_id, temperature): self.temperatures.append({"device_id": device_id, "temperature": temperature}) return True def get_temperatures(self): return self.temperatures server = SimpleXMLRPCServer(("localhost", 8000)) server.register_instance(TemperatureLogger()) print("Listening on port 8000...") server.serve_forever()
Langkah 2: Implementasi Client (PHP)
<?php $client = new XmlRpcClient('http://localhost:8000'); // Log suhu $request = new XmlRpcRequest('log_temperature', array('device1', 25.3)); $response = $client->send($request); var_dump($response->getValue()); // Output: bool(true) // Ambil data suhu $request = new XmlRpcRequest('get_temperatures'); $response = $client->send($request); print_r($response->getValue()); // Output: Array of temperatures ?>
Perbandingan RPC vs REST API
Aspek | RPC | REST API |
Format Data | Biner (Protobuf, Thrift) | Teks (JSON/XML) |
Performansi | Lebih cepat | Lebih lambat |
Fleksibilitas | Kaku (bergantung IDL) | Fleksibel (HTTP methods) |
Use Case | Sistem terdistribusi | Aplikasi web umum |
FAQ (Pertanyaan Umum)
Q: Apa perbedaan RPC dengan REST API?
A: RPC fokus pada eksekusi prosedur, sedangkan REST berorientasi sumber daya (resources).
Q: Apa kelemahan RPC?
A: Ketergantungan pada protokol tertentu dan kompleksitas error handling.
Q: Apakah RPC cocok untuk aplikasi web?
A: Ya, terutama untuk layanan backend yang membutuhkan kecepatan tinggi.
Kesimpulan
RPC client-server adalah tulang punggung sistem terdistribusi modern. Dengan protokol seperti gRPC dan Apache Thrift, RPC memungkinkan komunikasi efisien antar layanan, database, dan perangkat IoT. Meskipun memiliki tantangan seperti manajemen jaringan, RPC tetap menjadi pilihan utama untuk aplikasi yang memprioritaskan performa dan skalabilitas.