จาก Podcast เรื่อง API Evolution without Versioning with Brandon Byars
แค่เห็นหัวข้อก็น่าสนใจแล้ว
เลยลองฟังไปขณะที่นั่ง (ยืน) รถไฟฟ้าไปทำงานหน่อย
ที่ดีอีกอย่างคือ มีการ transcript ของ Podcast ให้อ่านไปด้วย
จึงทำให้ได้ทั้งฟัง และ อ่าน ไปทั้งคู่
มาดูกันว่า มีอะไรที่น่าสนใจบ้าง ?
จาก Podcast เรื่องการจัดการ API ที่เปลี่ยนไป
โดยไม่ต้องทำ versioning นั้นทำอย่างไรบ้าง ?
โดยปกติการออกแบบ API นั้น
เมื่อมีการเปลี่ยนแบบ major change หรือเปลี่ยนแปลงมาก ๆ
มักจะมีการจัดการ versioning เพื่อให้ผู้ใช้เดิมสามารถใช้งานได้
และผู้ใช้งานใหม่ก็ไปใช้ version ใหม่
รวมทั้งผู้ใช้งานเก่าก็ค่อย ๆ เปลี่ยนไปใช้ version ใหม่
แต่ทุกอย่างไม่ใช่ได้มาแบบฟรี ๆ หรือ ง่ายเลย
ทั้งจากทางฝั่งผู้ให้บริหารและผู้ใช้
ฝั่งผู้ให้บริการต้องดูแลหลาย ๆ version ไปตลอดหรือไม่ ?
ฝั่งผู้ใช้งานจะเปลี่ยนอย่างไร ต้องใช้เวลา คน อย่างไร ?
ทั้งสองส่งผลกระทบต่อ business/product อย่างไร ?
พูดถึงเครื่องมือช่วยในการทดสอบเรื่อง API คือ Mountebank
ซึ่งมีรูปแบบของการจัดการ API ที่เปลี่ยนแปลงไป
โดยมี 6 รูปแบบที่น่าสนใจ ประกอบไปด้วย
- change by addition
- multi-typing
- upcasting
- nested upcasting
- downcasting
- hidden interfaces
แนวคิดเหล่านี้ใช้ได้ทั้ง Public และ Internal API
หัวใจหลัก ๆ คือ
สิ่งที่เรากำลังทำ คือ การแก้ไขปัญหา ไม่ใช่สร้างปัญหาใหม่ขึ้นมา
ง่ายต่อการใช้งาน
ง่ายต่อการพัฒนาหรือดูแลรักษา ในเชิง architecture ด้วย