จาก 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 ด้วย