gRPC Foundations
แนวคิดในประโยคเดียว
หัวข้อที่มีชื่อว่า “แนวคิดในประโยคเดียว”gRPC ทำให้โปรแกรมหนึ่งเรียก function ในอีกโปรแกรมหนึ่ง — ที่รันอยู่บนอีกเครื่องหนึ่ง — เหมือนเรียก function ในเครื่องตัวเอง คุณนิยาม function และข้อมูลของตัวเองครั้งเดียวในไฟล์ .proto แล้ว gRPC จะ generate code ฝั่ง client และ server ที่ทำให้ network หายไปจากสายตา
นี่คือทั้งหมดที่ gRPC สัญญาไว้: คุณเขียน stub.GetUser(id) แล้ว request จะวิ่งข้าม network ไปรันบน server และคืนผลลัพธ์แบบมี type กลับมา — ไม่มี URL, ไม่ต้อง parse JSON, ไม่ต้องเขียน HTTP เอง
โมดูลนี้ครอบคลุมอะไรบ้าง
หัวข้อที่มีชื่อว่า “โมดูลนี้ครอบคลุมอะไรบ้าง”| บทเรียน | สิ่งที่คุณจะได้เรียนรู้ |
|---|---|
| What is gRPC? | RPC model, .proto contract และ workflow แบบ generate-แล้ว-call |
| gRPC vs REST | แต่ละแบบเหมาะกับอะไร, trade-off จริง ๆ และคำแนะนำตรง ๆ ในการเลือก |
| HTTP/2 & gRPC | ทำไม gRPC ต้องใช้ HTTP/2 — multiplexing, stream และ binary framing |
| Protocol Buffers intro | แนวคิด contract-first และทำไม binary schema ดีกว่า JSON แบบตามใจ |
ทำไมต้องเริ่มที่นี่
หัวข้อที่มีชื่อว่า “ทำไมต้องเริ่มที่นี่”ทุกหัวข้อที่ตามมา — streaming, deadline, interceptor, load balancing — ล้วนเป็นผลจากการตัดสินใจออกแบบ 2 อย่างที่ gRPC เลือกไว้ตั้งแต่ต้น:
flowchart TB proto["Protocol Buffers (contract-first schema)"] --> gen["Generated stubs (typed client + server)"] http2["HTTP/2 (multiplexed, streaming, binary)"] --> transport["หนึ่ง connection, หลาย call พร้อมกัน"] gen --> grpc["gRPC"] transport --> grpc grpc --> features["streaming · deadlines · interceptors · load balancing"]
เข้าใจสองอย่างนี้ — binary contract และ multiplexed transport — แล้วส่วนที่เหลือของ gRPC จะเลิกดูเหมือนเวทมนตร์ และกลายเป็นผลลัพธ์ที่เห็นแล้วรู้เลยว่าทำไมต้องเป็นแบบนั้น