ไฉน API Versioning จึงสำคัญ

Pattarapon Lertratananont
2 min readJul 3, 2023

--

เกริ่นเลยว่าที่ได้อ่านหัวข้อนี้ เกิดจากที่พี่เจนโยน ลิงค์ ให้สำหรับคนต่อไปที่จะมา Share Knowledge ในทีม LeSSEx ทำให้มีโอกาสได้ศึกษาเกี่ยวกับ API Versioning และได้เห็นความสำคัญของมัน ทั้งใน Context ที่ทำ Microservices หรือไม่ทำก็ดี

API Versioning คืออะไร

API Versioing เป็นวิธีการแก้ปัญหาที่เกิดขึ้นมาเพื่อแก้ปัญหาเรื่องการ Scale และ ความไม่ยืดหยุ่นของ API ในการ Provide ให้ต่าง Client และต่างสถานะการ
ทำให้ Developer ที่พัฒนา API สามารถปรับปรุงแก้ไขและพัฒนา API ให้ดียิ่งขึ้น โดยที่ไม่กระทบกับ Client ที่มีอยู่ (Backward Compatibility)

API Versioning กับ API Documentation

สิ่งที่ Developer ไม่ชอบส่วนใหญ่คือการทำ Document แต่ถ้ามองในมุมกลับกัน ถ้าเป็นเราที่ต้อง Implement Service ที่มีความซับซ้อนและหลากลาย สิ่งที่เหล่า Devleoper ต้องถามหากันคงเป็น “วิธีการใช้งาน API” เป็นแน่แท้

นั่นทำให้ API Documentation เป็นเรื่องสำคัญอย่างมากในการทำ API Versioning ไม่ใช่ในแง่ของการ Develope แต่เป็นในแง่ของการในไป Implement

ข้อดีของการทำ API Documentation ก็คงเป็นการที่ทำให้ Implement ต่อได้ง่าย ลดปัญหาการเจอ Error, Downtime หรือปัญหาอื่น ๆในตอนที่ Implement

แล้ว API Documentation ที่ดีควรประกอบไปด้วยอะไรบ้าง

  • มี Input และ Output ของ Parameters บอกอย่างชัดเจน
  • Error handling เป็นอย่างไร ถ้า Error จะ Response อะไรกลับมาบ้าง
  • Example ของการ Implement ในแต่ละเคส แจกแจงออกมาให้หมด
  • วิธีการ Upgrade API Version เก่าไป API Version ใหม่

API Versioning กับ API Gateway

ปัญหาของการทำ API Versioning ที่ตอบโจทย์ Client ที่หลากหลายคือการที่ไม่รู้ว่าจะทำให้ในแต่ละ Client นั้นใช้งาน API ต่าง version กันได้อย่างไร

API Gateway เข้ามาช่วยในการทำ API Versioning ในเรื่อง

  • Routeing — การพา Client ไปหา API Version ที่ถูกต้องตามที่ต้องการ
  • Transformation — แปลงข้อมูล Request หรือ Response ให้เข้ากันได้กับแต่ละ version ของ API
  • Backward Compatilibity — จัดการการ Mapping Client ไป API Version ที่เก่ากว่า หรือการแปลง Response ของ API ที่ใหม่กว่าไปยัง Version ที่เก่ากว่า
  • Rollback — จากความสามรถทั้งหมดทำให้สามารถพา Client กลับไปยัง Version ที่เก่ากว่าได้ ในกรณีที่ต้อง Rollback Version ใหม่ออก

API Gateway ช่วยเพิ่มความปลอดภัย

แน่นอนว่าการมี Gateway มาคั่นระหว่าง Client กับ Service นั้น จะช่วยทำให้เราสามารถตั้งค่าสิ่งต่าง ๆก่อนที่ Request จะเข้าไปถึง API ของเรา เช่น การทำ Rate Limit เพื่อป้องกันการ DDoS (Distributed Denial of Service), การทำ Authentication เพื่อระบุตัวตนของ Client ว่าเป็นใคร เป็นต้น

ที่สำคัญคือการเพิ่มความปลอดภัยที่ Gateway จะส่งผลกับทั้งระบบของเรา เพราะ Gateway เป็นทางเข้าก่อนจะไปถึง API นั่นเอง

API Gateway ช่วยในการ Scale ระบบและทำให้ระบบมีความยืดหยุ่น

แน่นอนว่าถ้าเราสามารถเพิ่มลดจำนวน Version ได้อย่างคล่องแคล่วแล้ว ผลที่ตามมาคือเราสามารถขยายความสามารถของระบบของเราให้รองรับทั้งปริมาณของผู้ใช้งานและความซันซ้อนของระบบที่เพิ่มขึ้น

ในส่วนของการ Implement จริง ก็ต้องบอกว่าเป็นอีกโลกหนึ่งเลย โดยเฉพาะ Kubernetes ที่เกิดมาเพื่อให้เราสร้างสรรค์ระบบได้อย่างหลากหลาย

ทั้งหมดนี้เป็นการอ่านและตีความตามความเข้าใจของตัวเอง ถ้าผิดพลาดตรงไหน แลกเปลี่ยนความคิดเห็นกันได้นะครับ 😘

ref: https://dzone.com/articles/the-importance-of-api-versioning-and-best-practice

--

--