gRPC & High Performance APIs · บทเรียน

การกำหนดรุ่น API และความเข้ากันได้ย้อนหลัง

พัฒนา API ไมโครเซอร์วิส gRPC อย่างปลอดภัยข้ามหลายทีมด้วยกลยุทธ์การกำหนดรุ่นและกฎความเข้ากันได้ของ protobuf เพื่อไม่ให้ไคลเอนต์รุ่นเก่าใช้งานไม่ได้

บทเรียน 4 จาก 413 ขั้นตอน

การกำหนดรุ่น API และความเข้ากันได้ย้อนหลัง เป็นบทเรียน gRPC & High Performance APIs ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน gRPC & High Performance APIs และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส gRPC & High Performance APIs มีบทเรียนทั้งหมด 4 บทเรียน

บางส่วนของบทเรียนนี้ยังไม่ได้รับการแปล และแสดงเป็นภาษาอังกฤษ

The Versioning Challenge

In a microservice estate, dozens of clients depend on a service. You cannot redeploy them all at once, so the API must change without breaking existing callers.

Wire Compatibility in Protobuf

Protobuf is forgiving: unknown fields are ignored, and missing fields take defaults. This makes additive changes safe by design.

Safe vs Breaking Changes

Safe: add fields, add methods, add enum values. Breaking: remove/rename fields, change field types, reuse tag numbers, change method signatures.

Never Reuse Tag Numbers

Field tag numbers identify fields on the wire. Reusing a retired number corrupts old data. Mark removed fields reserved to lock the number.

message User {
  reserved 3, 5;
  reserved 'old_name';
}

Package-Based Versioning

For real breaking changes, version the package. Old and new live side by side so clients migrate at their own pace.

package myapp.orders.v1;
// later, breaking change:
package myapp.orders.v2;

Running v1 and v2 Together

The server registers both service versions. New clients call v2; old clients keep using v1 until they upgrade.

ordersv1.RegisterOrdersServer(s, &v1impl{})
ordersv2.RegisterOrdersServer(s, &v2impl{})

Deprecating Fields and Methods

Mark items deprecated to warn callers before removal, giving them a migration window.

string legacy_id = 2 [deprecated = true];

Enum Evolution

Always reserve enum value 0 as UNSPECIFIED. Add new values at the end; old clients map unknown values to their default safely in proto3.

enum Status {
  STATUS_UNSPECIFIED = 0;
  ACTIVE = 1;
  ARCHIVED = 2;
}

Automated Compatibility Checks

Tools like Buf lint proto changes in CI and reject breaking edits before merge, enforcing compatibility across teams automatically.

buf breaking --against '.git#branch=main'

Schema Registries

A central registry (e.g. the Buf Schema Registry) stores versioned protos so every team consumes a single source of truth and generates consistent stubs.

Migration Strategy

A clean migration: add v2 alongside v1, move clients gradually, monitor v1 usage, then retire v1 only when traffic reaches zero.

Quick Check

Test your versioning knowledge.

Recap

You learned API versioning and compatibility:

  • Additive changes are wire-safe; removals/renames/type changes break
  • Never reuse tag numbers — mark them reserved
  • Version packages (v1/v2) for breaking changes and run both
  • Reserve enum 0 as UNSPECIFIED; deprecate before removing
  • Enforce compatibility with Buf and a schema registry
เริ่มต้นได้ฟรี

เรียนรู้ gRPC & High Performance APIs ด้วย AI tutor — ฟรี

เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป

คอร์ส
12
บทเรียน
48

คำถามที่พบบ่อย

บทเรียน “การกำหนดรุ่น API และความเข้ากันได้ย้อนหลัง” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การกำหนดรุ่น API และความเข้ากันได้ย้อนหลัง” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส gRPC & High Performance APIs ให้อัปเกรดเป็น CoddyKit PRO คอร์ส gRPC & High Performance APIs มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การกำหนดรุ่น API และความเข้ากันได้ย้อนหลัง”

พัฒนา API ไมโครเซอร์วิส gRPC อย่างปลอดภัยข้ามหลายทีมด้วยกลยุทธ์การกำหนดรุ่นและกฎความเข้ากันได้ของ protobuf เพื่อไม่ให้ไคลเอนต์รุ่นเก่าใช้งานไม่ได้ คุณปฏิบัติ gRPC & High Performance APIs ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน gRPC & High Performance APIs หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน gRPC & High Performance APIs บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน

บทเรียน “การกำหนดรุ่น API และความเข้ากันได้ย้อนหลัง” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน gRPC & High Performance APIs นี้ได้ไหม

ได้ บทเรียน gRPC & High Performance APIs ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การออกแบบไมโครเซอร์วิส gRPC
  2. สถาปัตยกรรม gRPC ที่ขับเคลื่อนด้วยเหตุการณ์
  3. การทำงานร่วมกันข้ามภาษา
  4. การกำหนดรุ่น API และความเข้ากันได้ย้อนหลัง
← กลับไปที่ gRPC & High Performance APIs