Protocol Buffers
ภาษาที่ใช้เขียน API ของคุณ
หัวข้อที่มีชื่อว่า “ภาษาที่ใช้เขียน API ของคุณ”ทุกอย่างใน gRPC เริ่มจากไฟล์ .proto และไฟล์นั้นเขียนด้วย Protocol Buffers ก่อนที่จะออกแบบ service และ RPC method ได้ คุณต้องคล่องกับหน่วยพื้นฐานที่ใช้ก่อน นั่นคือ message
โมดูลนี้ว่าด้วย protobuf ในฐานะ schema language — วิธี model ข้อมูลให้แม่นยำ และวิธีออกแบบให้ schema เติบโตได้เป็นปี ๆ โดยไม่ทำให้ client ที่ปล่อยไปแล้วพัง
โมดูลนี้ครอบคลุมอะไรบ้าง
หัวข้อที่มีชื่อว่า “โมดูลนี้ครอบคลุมอะไรบ้าง”| บทเรียน | สิ่งที่คุณจะได้เรียนรู้ |
|---|---|
| Messages & Fields | syntax ของ message และทำไมทุก field ต้องมี number ไม่ใช่แค่ชื่อ |
| Scalar Types & Defaults | type พื้นฐาน, default value ของ proto3 และกับดักเรื่อง presence ของ optional |
| Enums, Nested & oneof | enum (พร้อมกฎ zero value), การ nest และ field ที่เลือกได้อย่างเดียว |
| Repeated, Maps & Well-Known | list, map แบบ key/value และ standard library ของ google.protobuf |
| Evolving Schemas | กฎที่ทำให้ schema เปลี่ยนได้อย่างปลอดภัย — และกฎที่ทำให้ client พัง |
ทำไม schema ถึงควรมีโมดูลของตัวเอง
หัวข้อที่มีชื่อว่า “ทำไม schema ถึงควรมีโมดูลของตัวเอง”message ของ protobuf ดูเรียบง่ายจนหลอกตา — แค่ field ที่มี type และ number ไม่กี่ตัว แต่ number, default และกฎการ evolve เหล่านั้นแหละคือจุดที่ระบบจริงมักเจอปัญหา
flowchart TB msg["ออกแบบ message (field + number)"] --> types["เลือก type & default"] types --> evolve["evolve schema (add / reserve / ห้าม reuse)"] evolve --> safe["client ทำงานต่อได้ ข้าม version"]
ถ้าวาง field number และกฎการ evolve ให้ถูกตั้งแต่แรก API ของคุณจะเพิ่ม feature ได้เป็นปี ๆ โดยไม่มี breaking change แต่ถ้าวางผิด คุณจะติดกับปัญหา versioning ตั้งแต่ครั้งแรกที่ message ต้องโตขึ้น