業務需求在改變,這通常意味著API必須隨之而改變。本文探討當API必須改變時避免悲劇的五大關鍵策略。
API版本化和遷移是不得不解決的問題,特別是在應用程序接口和不斷變化的業務優先級綁定越來越緊密的當下。但是,如果采取一些關鍵步驟,改動API就不會造成悲劇。
我們采訪了Inversoft的CEO,Brian Ponterelli,他分享了五個他所使用的最重要的策略,能夠減少API改動的風險。
1.文檔化時間線
當API開發完成時,很可能已經計劃的一些patch或者功能版本可能會破壞兼容性。要想避免你的API客戶因此而憤怒,Ponterelli建議開發人員共享一份“事件日歷”,記錄下可能會影響到用戶的任何變化。
“我們將這樣的文檔和發布摘要和文檔放在一起,受到了用戶的好評。”Ponterelli說。“有很多種方法,但是只要某個地方有“文檔”,你就可以安心。”
2.擁抱語義版本控制
語義版本控制是業界針對patch版本的事實命名慣例,并且根據Ponterelli所說,使用它對于確保API版本控制不出亂子至關重要。這種正式的標準,已經被很多大公司采用 -- Oracle,Google -- 為版本號以及哪些兼容性會被破壞或者不受影響等,提供了清晰的說明書。
對于理解語義版本控制的API客戶而言,Ponterelli說,很多客戶確實理解,持續跟蹤改動會很容易。對于不熟悉該領域的客戶,也很容易找到介紹其如何工作的文檔。
3.制定遷移策略以及向后兼容適配器
當新版本即將發布時,通常迫使開發人員打破某種兼容性。不幸的是,你的API使用者可能嚴重依賴于這些特定的兼容性,Ponterelli提醒到,當用戶升級并且發現功能被破壞時,這可不太好。
Ponterelli建議解決這樣問題的最佳辦法是和使用你API的用戶一起創建出清晰定義的遷移策略。這包括決定對于使用者的功能而言哪些兼容性必不可少,比如絕對不能失敗的某個特定的功能或服務。如果無法確定完整的遷移策略,Ponterelli建議開發人員至少創建出向后兼容適配器,來幫助恢復必要的功能。
Ponterelli還建議開發人員和他們最大并且變化緩慢的客戶一起開始API版本化之路,因為小型的,更為敏捷的公司通常更能接受API的變化。這給了你更多的時間來處理任何可能的問題,并且創建出需要的兼容性適配器。
4.抽象層次有所助益
除了創建可管理的兼容性,Ponterelli還建議開發人員添加反映API版本化頻率的抽象層。他說Amazon創建的API,被抽象成經常變更的“細粒度”API和通常不變的“粗粒度”API。
通過這樣抽象化API,你就可以幫助使用者清晰理解他們使用的API可能多久會發生變化,并且做好相應的計劃。
5.考慮混合云方案
Ponterelli還指出當通過云預配API時,實現混合方案能夠幫助用戶抵御破壞。通過在本地保留一定數量的核心資源及其依賴,那么無論依賴的API如何變化,API用戶都能夠持續提供他們自己的版本。否則,他們可能會在API版本化發生的任意時間被強制要求升級,就不得不承擔兼容性被破壞的風險。