gRPC
Published on: 10 September 2025
Tags: #grpc #rpc #remote-procedure-call
Local Procedure Call vs. Remote Procedure Call (RPC)
%%{init: {'theme': 'dark'}}%%
graph LR
%% Define the Remote System on the left
subgraph "Remote System"
direction LR
subgraph Server A
B1[Order Service]
end
subgraph Server B
C1[Payment Service]
end
B1 -- RPC Call --> C1
end
%% Define the Local Process on the right
subgraph "Local Process"
direction LR
A1[Order Management] -->|Local Call| A2[Payment]
end
%% Style Definitions to match the image colors
style B1 fill:#e2f0d9,color:#333
style C1 fill:#e2f0d9,color:#333
style A1 fill:#fbe4d5,color:#333
style A2 fill:#fbe4d5,color:#333
linkStyle 0 stroke:#ff0000,stroke-width:2px;
High-Level gRPC Communication Flow
%%{init: {'theme': 'dark'}}%%
sequenceDiagram
participant ClientApp as Client Application
participant ClientRuntime as gRPC Client Runtime
participant ServerRuntime as gRPC Server Runtime
participant ServerApp as Server Application
ClientApp->>ClientRuntime: 1. Initiate RPC call
note right of ClientRuntime: Use Client Stub to encode data
ClientRuntime->>ServerRuntime: 2. Send over HTTP/2 Transport
note left of ServerRuntime: Receive request from network
ServerRuntime->>ServerApp: 3. Decode stub & make local call
ServerApp-->>ServerRuntime: 4. Return result
note left of ServerRuntime: Encode response
ServerRuntime-->>ClientRuntime: 5. Send response over HTTP/2
note right of ClientRuntime: Receive and decode response
ClientRuntime-->>ClientApp: 6. Deliver final result
Use Cases for gRPC
%%{init: {'theme': 'dark'}}%%
graph TD
%% Node Definitions
A(((gRPC Use Cases)))
B[Microservices]
C[Polyglot Environments]
D[Live Updates & Streaming]
E[IoT]
%% Connections from the center
A --- B
A --- C
A --- D
A --- E
%% Style Definitions to match the image
style A fill:#777,stroke:#999,color:#fff
style B fill:#1C1C1C,stroke:#333,color:#fff
style C fill:#6b442b,stroke:#553622,color:#fff
style D fill:#5a1846,stroke:#481338,color:#fff
style E fill:#495e63,stroke:#3a4b4f,color:#fff
Pros and Cons of gRPC
%%{init: {'theme': 'dark'}}%%
graph TD
subgraph Cons
direction LR
C1["Complexity &
Learning Curve"]
C2["Smaller Community
than REST"]
C3["Firewall & Proxy
Limitations"]
C4["Limited Human
Readability"]
end
subgraph Pros
direction LR
P1["High Performance"]
P2["Language Agnostic"]
P3["Strongly Typed
Interfaces"]
P4["Streaming Support"]
P5["Efficient Data
Serialization"]
end
%% Style Definitions
style Cons fill:#f8d7da,stroke:#721c24,color:#444
style Pros fill:#d4edda,stroke:#155724,color:#444
classDef innerNode fill:#2b2b2b,stroke:#555,color:#fff
class P1,P2,P3,P4,P5,C1,C2,C3,C4 innerNode;