# gRPC คืออะไร? คู่มือ High-Performance Microservices ด้วย Protobuf สำหรับ SME ไทย 2026
เมื่อระบบของธุรกิจถูกแยกออกเป็น Microservices หลายสิบตัว การที่บริการแต่ละตัวคุยกันด้วย REST API + JSON เริ่มกลายเป็นปัญหาคอขวด เพราะ JSON มี Overhead สูง, ไม่มี Schema ที่บังคับใช้, และ HTTP/1.1 เปิด Connection ใหม่ทุกครั้งที่เรียก ทำให้ Latency รวมของระบบยิ่งเพิ่มขึ้นเมื่อ Microservices ขยายตัว
gRPC (gRPC Remote Procedure Call) จาก Google คือคำตอบของปัญหานี้ เป็น RPC framework ที่วิ่งบน HTTP/2 ใช้ Protocol Buffers (Protobuf) เป็น Binary serialization ทำให้ Payload เล็กลง 5-8 เท่าเมื่อเทียบกับ JSON และยังรองรับ Streaming ทั้งสองทิศทางในตัว
บทความนี้จะอธิบาย gRPC สำหรับ SME ไทยที่กำลังย้ายจาก REST มาเป็น Microservices Architecture ตั้งแต่หลักการ, Protobuf, 4 รูปแบบ Streaming, การเปรียบเทียบกับ REST/GraphQL, ไปจนถึงตัวอย่างใช้งานจริงด้วย Node.js และ Go
gRPC คืออะไร และทำงานยังไง
gRPC สร้างขึ้นบนหลักการ Contract-First คือกำหนด Interface ของ Service ในไฟล์ `.proto` ก่อน แล้วใช้ Compiler `protoc` สร้างโค้ด Stub ทั้งฝั่ง Server และ Client โดยอัตโนมัติให้รองรับ 11+ ภาษา ตั้งแต่ Go, Java, Python, Node.js, C#, ไปจนถึง Swift และ Kotlin
จุดเด่นที่ทำให้ gRPC แข็งแกร่งคือ HTTP/2 Multiplexing ที่ส่งหลายคำขอผ่าน Connection เดียว, Binary Encoding ที่ Payload เล็กกว่า JSON 5-8 เท่า, Bi-directional Streaming สำหรับ Use Case แบบ Real-time, Strong Typing ที่ป้องกัน Bug จาก Schema ไม่ตรง, และ Code Generation ที่ลดเวลาเขียน Boilerplate
| คุณสมบัติ | gRPC | REST + JSON |
|---|---|---|
| Transport | HTTP/2 | HTTP/1.1 หรือ HTTP/2 |
| Payload | Binary (Protobuf) | Text (JSON) |
| Schema | บังคับด้วย .proto | ไม่บังคับ (OpenAPI optional) |
| Streaming | 4 modes ในตัว | Server-Sent Events เท่านั้น |
| Browser support | ต้องใช้ gRPC-Web proxy | รองรับโดยตรง |
| Code Gen | อัตโนมัติ 11+ ภาษา | ต้องเขียน SDK เอง |
| Latency (p99) | 5-15 ms | 30-80 ms |
Protocol Buffers: หัวใจของ gRPC
Protobuf เป็น IDL (Interface Definition Language) ที่ใช้กำหนด Message Schema และ Service Contract ตัวอย่างไฟล์ `.proto` พื้นฐาน:
```
syntax = "proto3";
package shop;
service ProductService {
rpc GetProduct (ProductRequest) returns (Product);
rpc ListProducts (ListRequest) returns (stream Product);
rpc UploadImages (stream ImageChunk) returns (UploadResult);
rpc Chat (stream ChatMessage) returns (stream ChatMessage);
}
message Product {
string id = 1;
string name = 2;
double price = 3;
repeated string tags = 4;
}
```
ข้อดีของ Protobuf คือ Field number (เลขหลัง `=`) ทำหน้าที่เป็น "Wire Format Identifier" ทำให้สามารถเพิ่ม/ลบ Field ได้โดยไม่ทำลาย Backward Compatibility ตราบใดที่ Field number เดิมไม่ถูกนำกลับมาใช้
4 Streaming Patterns ที่ gRPC รองรับ
How-To: สร้าง gRPC Service ด้วย Node.js ใน 6 ขั้นตอน
สำหรับ Production ควรใช้ TLS แทน Insecure credentials และใช้ Connection Pool เพื่อ Reuse Connection
เปรียบเทียบ gRPC vs REST vs GraphQL
| ปัจจัย | gRPC | REST | GraphQL |
|---|---|---|---|
| Performance | สูงสุด (Binary, HTTP/2) | กลาง | กลาง |
| Browser native | ต้องใช้ gRPC-Web | รองรับเต็ม | รองรับเต็ม |
| Schema enforcement | แข็งแกร่ง (Protobuf) | Optional (OpenAPI) | แข็งแกร่ง (SDL) |
| Flexible queries | ไม่ | ไม่ | ใช่ (Client เลือก Field) |
| Streaming | 4 modes | SSE (1-way) | Subscription |
| เหมาะกับ | Service-to-service | Public API | Mobile/Frontend complex |
ในทางปฏิบัติ SME ส่วนใหญ่ใช้ทั้ง 3 ตัวร่วมกัน คือ REST/GraphQL เป็น Public Gateway ให้ Frontend และ gRPC สำหรับสื่อสารระหว่าง Microservices ภายใน
Use Cases ที่ gRPC เหมาะที่สุด
Best Practices สำหรับ Production
ข้อจำกัดที่ต้องรู้
สรุป + Call to Action
gRPC เป็นเครื่องมือที่ทรงพลังสำหรับ SME ไทยที่กำลังเปลี่ยนผ่านจาก Monolith เป็น Microservices หรือต้องการลด Latency ของระบบที่มี Service Internal เยอะ ๆ การลงทุนเรียนรู้ Protobuf และ Code generation จะให้ผลตอบแทนระยะยาวทั้งในเรื่อง Performance, Type safety, และ Developer Experience
Key Takeaways:
หากธุรกิจของคุณกำลังจะปรับสถาปัตยกรรมเป็น Microservices หรือต้องการ Audit ระบบ Backend ที่มีอยู่ว่าควรย้ายส่วนไหนเป็น gRPC [ติดต่อทีม ADS FIT](https://www.adsfit.co.th/contact) เพื่อรับคำปรึกษาออกแบบ Architecture ที่เหมาะกับขนาดธุรกิจของคุณ หรืออ่านบทความที่เกี่ยวข้องอย่าง Saga Pattern, Domain-Driven Design และ Webhooks Event-Driven Architecture เพื่อต่อยอดความเข้าใจการออกแบบระบบขนาดใหญ่