API網關和微服務
企業API網關是一個成熟的中間件工具,市場上的相關成熟產品也很多。但是,在對輕量級、快速響應要求很高的微服務架構下,傳統企業級API網關作為企業的公共基礎設施,又顯得有些笨重了。在本文中,我們將討論對比兩者的不同,根據不同的業務目標(效率和管理)來實現一種完全不同的API網關。
在過去十年中,企業一直致力於通過定義良好的API來公開內部的業務系統並進行信息交互。如何管理成百上千的API,安全地支持最終內部和外部的調用用戶,這一巨大的挑戰促使了API網關的出現和發展。在數據和服務交互時,傳統企業級API網關既作為一個前端窗口,又作為各類系統的後端總入口,承載著所有服務的組合,路由,轉換等工作。除此之外,我們一般也會把安全,限流,緩存,日誌,監控,重試,熔斷等放到 API 網關來做。隨著時間的推移,API網關逐漸成為企業中間件重要的核心基礎架構之一。
隨著對雲原生和微服務的概念的不斷推廣和使用,我們開始遇到一些新的問題。區別於傳統企業級API網關,業界提出了旨在提高獨立的服務開發團隊使用的高效工作流程的微服務API網關。微服務API網關為團隊提供了獨立發布,監控和更新微服務的所有功能,通過開發,測試,部署等的自動化工作流程來提高團隊的工作效率。
微服務的組織
在實施微服務的組織中,小型開發團隊彼此獨立工作,以快速響應客戶不斷變化的需求。每個獨立工作的服務開發團隊通過API來交互服務,服務團隊需要通過高效的工作流程進行:
· 發布服務,以便提供者公開發布,其他人可以了解和使用該服務
· 測試並更新服務,幫助調用者調試和使用服務。也幫助服務提供者繼續改進服務
· 監控和保障服務,實時監控服務的運行情況,並及時採取相應措施保障服務運營
好平台幫助服務團隊獨立完成這些工作,而不是需要其他操作或平台團隊的介入和幫助,因為只要服務團隊需要另一個團隊,他們就不是所謂的獨立工作,進而導致瓶頸的出現。
對於服務發布,微服務API網關為調用者提供統一的靜態地址,並動態地將請求路由到適當的實際服務地址,這裡的服務地址一般指向服務團隊開發和維護的一個或多個服務組合。此外,平台為服務安全性提供調用身份驗證(密鑰)和TLS終止是向其他使用者公開服務的通用功能。
了解服務的最終用戶體驗對於改進服務至關重要。例如,軟體更新可能會無意中影響某些請求的延遲。微服務API網關的日誌可以很好地收集最終用戶流量的關鍵可觀察性的指標,因為它可以將流量路由到終端服務。並提供完善的分析,提高運營質量。
微服務API網關還支持「金絲雀發布」測試:系統上原有版本已經可用,網關將用戶請求動態路由到新的服務版本以進行測試。通過將一小部分最終用戶請求路由到新版本的服務,服務團隊可以安全地測試本次更新對一小部分最終用戶產生的影響,以期望在生產環境上儘早發現問題。
微服務API網關與企業API網關
乍一看,上述用例可以通過以企業為中心的API網關來實現。雖然可以實現,但企業API網關和微服務API網關的關注點不同: