企業API網關是一個成熟的中間件工具,市場上的相關成熟產品也很多。但是,在對輕量級、快速響應要求很高的微服務架構下,傳統企業級API網關作為企業的公共基礎設施,又顯得有些笨重了。在本文中,我們將討論對比兩者的不同,根據不同的業務目標(效率和管理)來實現一種完全不同的API網關。

在過去十年中,企業一直致力於通過定義良好的API來公開內部的業務系統並進行信息交互。如何管理成百上千的API,安全地支持最終內部和外部的調用用戶,這一巨大的挑戰促使了API網關的出現和發展。在數據和服務交互時,傳統企業級API網關既作為一個前端窗口,又作為各類系統的後端總入口,承載著所有服務的組合,路由,轉換等工作。除此之外,我們一般也會把安全,限流,緩存,日誌,監控,重試,熔斷等放到 API 網關來做。隨著時間的推移,API網關逐漸成為企業中間件重要的核心基礎架構之一。

隨著對雲原生和微服務的概念的不斷推廣和使用,我們開始遇到一些新的問題區別於傳統企業級API網關,業界提出了旨在提高獨立的服務開發團隊使用的高效工作流程的微服務API網關。微服務API網關為團隊提供了獨立發布,監控和更新微服務的所有功能,通過開發,測試,部署等的自動化工作流程來提高團隊的工作效率。

微服務的組織

在實施微服務的組織中,小型開發團隊彼此獨立工作,以快速響應客戶不斷變化的需求。每個獨立工作的服務開發團隊通過API來交互服務,服務團隊需要通過高效的工作流程進行:

· 發布服務,以便提供者公開發布,其他人可以了解和使用該服務

· 測試並更新服務,幫助調用者調試和使用服務。也幫助服務提供者繼續改進服務

· 監控和保障服務,實時監控服務的運行情況,並及時採取相應措施保障服務運營

好平台幫助服務團隊獨立完成這些工作,而不是需要其他操作或平台團隊的介入和幫助,因為只要服務團隊需要另一個團隊,他們就不是所謂的獨立工作,進而導致瓶頸的出現。

對於服務發布,微服務API網關為調用者提供統一的靜態地址,並動態地將請求路由到適當的實際服務地址,這裡的服務地址一般指向服務團隊開發和維護的一個或多個服務組合。此外,平台為服務安全性提供調用身份驗證(密鑰)和TLS終止是向其他使用者公開服務的通用功能。

了解服務的最終用戶體驗對於改進服務至關重要。例如,軟體更新可能會無意中影響某些請求的延遲。微服務API網關的日誌可以很好地收集最終用戶流量的關鍵可觀察性的指標,因為它可以將流量路由到終端服務。並提供完善的分析,提高運營質量。

微服務API網關還支持「金絲雀發布」測試:系統上原有版本已經可用,網關將用戶請求動態路由到新的服務版本以進行測試。通過將一小部分最終用戶請求路由到新版本的服務,服務團隊可以安全地測試本次更新對一小部分最終用戶產生的影響,以期望在生產環境上儘早發現問題。

微服務API網關與企業API網關

乍一看,上述用例可以通過以企業為中心的API網關來實現。雖然可以實現,但企業API網關和微服務API網關的關注點不同:

自服務發布

開發團隊需要能夠自主發布新服務,而無需通過運營或API管理團隊。這種部署和發布自助服務的能力使團隊能夠保持較高的發布速度和頻率。雖然傳統的企業API網關可以提供用於發布新服務的簡單機制(例如,REST API),但實際上只限於負責網關運維的團隊使用。限制單個開發團隊自主發布API,主要原因是為了安全考慮:錯誤的API調用可能會對生產環境造成災難性影響。

微服務API網關允許服務團隊輕鬆和安全地發布新的服務,是因為在微服務場景下,我們默認服務團隊對微服務有清楚的了解並承擔全部的責任。一旦有問題出現可以快速解決。而且微服務網關可以提供可配置的監控以方便發現問題,並提供在線調試環境,流量監控或流量轉移/複製。優秀的微服務API網關更提供一體化的開發,調試,發布流程環境和一系列自動化工具,方便開發者高效開發運維。

監控和速率限制

API的常見商業模式是計量,其中根據API使用情況向消費者收取不同的費用。傳統的企業API網關在這一點上一般做的比較好:它們提供了監控每個客戶端API使用的功能,並且具備當客戶端超出配額時限制其使用的能力。

微服務網關也需要監控和速率限制,但原因有所不同。監控用戶可見的指標(如吞吐量,延遲和可用性)非常重要,它可以確保微服務的更新不會影響到最終用戶。穩定可靠的監控指標對於實現快速增量更新至關重要。速率限制則用於提高服務的整體響應彈性。當服務未按預期響應時,API網關可以限制傳入請求以允許服務恢復並防止級聯故障,也即微服務設計中經常使用的熔斷、降級等模式。

測試和更新

微服務應用程序具有多個服務,每個服務都是獨立更新的。上生產環境之前的自動化測試是必要的,但對於微服務來說還是不夠。金絲雀部署將一小部分生產流量路由到新服務版本,是幫助測試更新的重要工具。通過將新服務版本限制為一小部分用戶,即便出現問題,服務故障的影響是有限的。當測試穩定以後逐步替換舊版本,最終實現所有服務實例的版本更新。

在傳統的企業API網關中,路由用於隔離或組合/聚合變化的API版本。上生產環境前的自動化測試,上生產環境後的手動驗證和檢查,二者都是必須的。

總結

傳統的企業API網關旨在解決API管理的挑戰。雖然它們似乎可以解決微服務架構下的一些挑戰,但實際情況是微服務工作流提出了一組不同的需求。將微服務API網關集成到微服務的開發工作流程中,使服務團隊能夠快速,安全地自行發布,監控和更新其服務。這將使我們能夠以更快的速度發布軟體,並且具有前所未有的可靠性。優秀的微服務API網關更像傳統API網關和企業級應用伺服器的有機結合。靈長科技 WWW.APEMESH.COM 的企業級API管理系統正是這樣一個集成系統,提供了豐富的API管理功能,一體化的在線開發環境,一系列自動化開發工具,完善的自動化應用運維監控和管理。該系統將為您的微服務部署提供強大框架保障。


推薦閱讀:
相关文章