তুমি যদি এমন একটা API চাও যেটা দ্রুত, কম ব্যান্ডউইথে চলে, এবং একসাথে অনেক সার্ভিসের মধ্যে যোগাযোগ করাতে পারে, তাহলে তোমার জন্য সবচেয়ে আধুনিক ও শক্তিশালী প্রযুক্তি হলো gRPC। এটি হচ্ছে Google-এর তৈরি এক অসাধারণ communication framework, যা high-performance, low-latency API তৈরি করার জন্য ব্যবহার করা হয়।
gRPC কী?
gRPC (g = Google, RPC = Remote Procedure Call) হলো একটি open-source framework, যেটা client-server এর মধ্যে function call-এর মাধ্যমে ডেটা আদান-প্রদান করে, REST এর মতো HTTP resource-based পদ্ধতিতে নয়।
gRPC এর মূল বৈশিষ্ট্য:
Protocol Buffers (Protobuf) নামক binary serialization format ব্যবহার করে (JSON-এর চেয়ে অনেক কম ও দ্রুত)
HTTP/2 ব্যবহার করে (একসাথে অনেক ডেটা পাঠানো যায়)
Built-in authentication, deadline, retry, এবং streaming support
Language-agnostic (Python, Go, Java, C#, Node.js, সব সাপোর্টেড)
gRPC কীভাবে কাজ করে?
Proto file (e.g.,
service.proto) লেখা হয়, যেখানে সার্ভিসের method, input/output message structure define করা হয়।
Copy
syntax = "proto3";
service StudentService {
rpc GetStudent (StudentRequest) returns (StudentResponse);
}
message StudentRequest {
int32 id = 1;
}
message StudentResponse {
string name = 1;
float cgpa = 2;
}এরপর
protoccompiler দিয়ে client ও server code auto-generate করা হয়।Server সেই method implement করে।
Client সেই method call করে ঠিক নিজের মেশিনে যেনো call করছে—কিন্তু call টা চলে যায় remote server এ।
বাস্তব উদাহরণ
ধরো তুমি call করছো:
Copy
const response = await client.GetStudent({ id: 101 });
console.log(response.name); // Output: Mominurএই call সরাসরি HTTP request না, বরং একটি প্রোটোকল বাফার মেসেজ যা অনেক ছোট, দ্রুত, এবং efficient!
⚖️ gRPC vs REST vs GraphQL
বৈশিষ্ট্য
REST
GraphQL
gRPC
Communication style
Resource-based
Query language
Function-based (RPC)
Data format
JSON
JSON
Protobuf (binary)
Speed
ধীর
মাঝারি
খুব দ্রুত
Streaming
সীমিত
সীমিত
Bi-directional, real-time
Language support
API level
Client specific
Auto-generated for many langs
Best for
Web/Mobile APIs
Dynamic frontend
Microservices, internal comm.
gRPC এর ৪ ধরণের Communication
Unary RPC
Client → Request → Response ← ServerServer Streaming RPC
Client → Request → Response1, Response2, ... ← ServerClient Streaming RPC
Request1, Request2, ... → Server → ResponseBi-directional Streaming RPC
দুই দিকেই একসাথে stream করতে পারে
Perfect for chat apps, real-time data processing, video conferencing ইত্যাদি।
Security ও Performance
TLS encryption থাকে built-in
HTTP/2 এর কারণে multiplexing ও header compression হয়
Protobuf ডেটা JSON এর থেকে প্রায় 10x ছোট
gRPC টুলস ও লাইব্রেরি
Language
gRPC Support Tool
Node.js
grpc-js
Python
grpcio, grpcio-tools
Go
Native support
Java
gRPC-Java
C#
gRPC-dotnet
কখন gRPC ব্যবহার করবেন?
Microservices architecture
Internal communication (fast & efficient)
IoT, gaming, video streaming apps
Real-time bidirectional communication
Polyglot environment (multi-language systems)
কখন REST বা GraphQL বেটার হতে পারে?
যদি Human-readable JSON দরকার হয়
Public APIs বানাচ্ছো
সহজ debug/inspect দরকার
ব্রাউজারে সরাসরি call করতে চাই (gRPC-Web ছাড়া REST ই ভালো)
gRPC এখনকার দিনে scalable, fast এবং secure communication এর জন্য আদর্শ। এটা REST এর বিকল্প না, বরং একটি High-performance Replacement, বিশেষ করে Microservices এবং Internal API এর জন্য।
If REST is a classic sedan, GraphQL is a sports car, then gRPC is a space shuttle.