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:

  1. Klien Memanggil Prosedur: Klien memanggil fungsi/prosedur seolah-olah itu lokal.
  2. Stub KlienClient stub mengemas (marshalling) parameter menjadi format yang bisa dikirim via jaringan.
  3. Transfer ke Server: Pesan dikirim ke server melalui protokol jaringan (misalnya TCP/IP).
  4. Stub ServerServer stub menerima dan membongkar (unmarshalling) parameter.
  5. Eksekusi di Server: Server menjalankan prosedur yang diminta.
  6. Pengembalian Hasil: Hasil dikirim kembali ke klien melalui proses sebaliknya.


Gambar: Alur komunikasi RPC antara klien dan server.

Ads Jadwal Training bisaioti Offline
NoMateriTanggalWaktuHargaLokasiViewAction
1IOT PLC SCADA Siemens7-8 Juni 202508.00 - 16.002000000SurabayaSilabusDaftar Sekarang
2IOT PLC SCADA Omron14 - 15 Juni 202508.00 - 16.002000000SurabayaSilabusDaftar Sekarang
3IOT PLC SCADA Schneider21-22 Juni 202508.00 -16.002000000SurabayaSilabusDaftar Sekarang
4IOT PLC SCADA Allen Bradley28-29 Juni 202508.00-16.002000000SurabayaSilabusDaftar Sekarang
Komponen Utama RPC
  1. Klien: Program yang meminta layanan.
  2. Server: Program yang menyediakan layanan.
  3. Stub: Penerjemah parameter dan hasil antara klien dan server.
  4. 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
  1. Efisiensi: Minim overhead karena menggunakan protokol biner (misalnya Protobuf).
  2. Kemudahan Pengembangan: Developer fokus pada logika bisnis, bukan komunikasi jaringan.
  3. Bahasa-Agnostik: Klien dan server bisa ditulis dalam bahasa berbeda (misalnya Python klien dan Go server).
  4. 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.

Related Articles

Leave a Reply

Your email address will not be published. Required fields are marked *

Daftar Sekarang