概念回顧:API 和API 互聯

隨著微服務架構的興起,API 的數量急遽增加,也產生了一系列的挑戰與解決方案。閱讀本文,了解與API 相關的基礎概念以及API 的使用現況。

什麼是應用程式介面(API)?

應用程式介面(簡稱API)是一組定義、規則和協議,支援使用者(人或軟體)和資訊(線上和Web 應用提供的資料資源)兩個實體之間的通訊。

如今,API 構成了現代應用的基本框架,有助於改善使用者體驗並增強業務模式。有時,API 甚至本身可以作為一種商業模式。

API 的工作原理是什麼?  

API 是應用的“門面”,展示了應用程式執行的功能及其可提供的訊息,並定義了正確的請求格式。當開發人員為一款應用程式建立API 並將其暴露後,它允許其他應用程式與該應用程式通訊。

在許多情況下,API 可協助開發人員節省寶貴時間,因為它們讓常用功能可以直接拿來使用。開發人員可透過呼叫現有應用程式的API,將所需功能整合到自己的應用中,而不必浪費時間重新開發這些功能。

75bprqqn5rhsakgxd4xjw5l7q5x3eyj2uetw0uzh

每個API 的設計、部署和運作方式都取決於其架構風格或協定。

API 架構和協定的類型  

API 架構或架構風格是指API 的頂層設計,包括API 的結構和組織方式及其請求/回應格式。API 協定不僅指定了格式,同時也描述了確切的訊息。

常見的API 架構和協定包括:

REST —— 也被稱為RESTful,這種架構風格是基於表徵狀態轉移的原則。它使用HTTP 方法(例如GET、POST、PUT 和DELETE)和抽象資訊(以資源和資源模型的形式)來創建可擴展、靈活且技術獨立的結構。如今,REST 仍然是最受歡迎的API 架構。
GraphQL —— 由Meta(原名Facebook)開發的開源查詢語言,GraphQL 架構支援透過單一API 呼叫從多個來源取得資料。由於客戶端只請求必要的數據,因此GraphQL API 往往比REST API 更有效率(但快取能力較差)。
SOAP —— 這種架構方法使用簡單物件存取協定(SOAP)。SOAP 訊息通常採用XML 格式,因此相較於REST 或GraphQL 略顯笨重。與REST API 不同,SOAP API 採用嚴格的實作準則來定義API 協定的結構。
WebSocket —— 這種API 協定為全雙工通訊協議,意味著客戶端和伺服器可以同時發送和接收訊息。此外,伺服器發送的訊息可以不是對客戶端請求的回應,而是(例如)由伺服器端的事件觸發。相較之下,REST API 遵循嚴格的「請求-回應」模式。
RPC —— 借助遠端過程調用,開發人員能夠使用相同的程式碼來調用在不同位址空間(通常是在遠端伺服器上)中運行的函數— 就像調用本地函數一樣,而不必指定遠端互動的細節。由於可以使用多種語言,因此這種協定很靈活,常用於「客戶端-伺服器」通訊。gRPC(Google 遠端過程呼叫)就是一種RPC。
 

API 使用現狀

API 是現代軟體的關鍵組成部分,如今各企業都會根據需求建立或使用許多不同類型的API。

目前企業中最常見的四種API 是公用API、私有API、合作夥伴API 和第三方API。

公共API

公共API 可供企業外部的用戶存取(無論是付費還是免費),助力您與第三方開發人員建立合作夥伴關係並擴展整個業務生態系統。

由於公共API 可被第三方開發人員用來建立新產品,因此有助於推動創新,是協助建立新合作關係的重要工具。

私有API

私有API 僅可供企業內部的團隊訪問,不僅能夠幫助您解鎖資料並促進內部協作,而且還可為企業面向公眾的應用程式(例如您的網站)提供無形的支援。

由於私有API 僅供內部使用者使用,因此企業可以在建置時充分考慮最佳化問題。私有API 也提升了現代應用的可組合性,支援企業根據目前的需求進行調整。開發人員可以在建立微服務時輕鬆整合私有API,從而減少團隊間的重複工作。

合作夥伴API

合作夥伴API 用於直接整合業務合作夥伴解決方案(例如,當航空公司與連鎖飯店合作時,您可以機票和飯店同訂)。合作夥伴API 不公開提供— 只有符合兩家企業的身份驗證(AuthN) 和授權(AuthZ) 要求的部分開發人員才可對其進行存取。

互通性加強了與合作夥伴API 的關係,因為它們打破了孤島,支援不同企業相互通訊。

第三方API

第三方API 可被企業用於存取應用程式和服務中缺少的資料或功能。這些API 在第三方伺服器上運行,通常提供廣泛需要的服務(例如許多電子商務網站使用的Stripe 付款處理API)。這些API 可供企業付費或免費使用,視API 而定。

由於第三方API 均由其他開發人員或企業建立,因此可大幅節省成本。此外,第三方API 是企業加快應用程式開發的重要途徑,因為開發人員可以立即使用所需功能,而無需自行編寫。

使用哪些應用語言來建立API?

幾乎任何現代程式語言都可以用來編碼API。在編碼API 時,許多開發人員可能會選擇使用框架。框架提供了程式碼庫等建構塊及其他必要實用程序,有助於更快速、更輕鬆地使用該語言建立應用程式。

每種程式語言一般都有一個或多個開發人員常用的框架。下表列出了幾個框架選項(其中許多為開源框架)。

04bz57pseikfoibxo3uwyka8k1hxxgvnpi1hjlnb

具體選擇哪種語言和框架通常取決於專案需求或開發人員的個人偏好。

API 範例

API 是現代軟體開發的一個基本組成部分,其範例不勝枚舉。此處,我們只舉幾例。

三個API 範例:

• Google Maps Platform —— Google 提供的一個API,支援您將Google Maps 嵌入網站或應用程式中。
AWS IoT —— AWS IoT API 支援您將物聯網上的裝置(例如智慧家庭裝置)連接到AWS 雲端。這是智慧家庭自動化系統的一種建立方式。
NGINX Unit Control API —— Unit API 使用REST 架構來設定開源NGINX Unit應用程式和Web 伺服器。
 

什麼是API 策略?

企業需要根據其業務目標來制定現代API 策略,後者為企業如何設計、開發、管理、治理和保護其API 設定了方案。

根據Gartner《適用於軟體工程領導者的五大API 經驗教訓》,現有五個最佳實踐可協助您確保實施強大的API 策略:

切勿讓API 治理造成瓶頸。需要在API 治理與開發人員敏捷性之間取得平衡,以持續推動創新。
將API 視為產品,即使您不打算從中獲利。確保每個API 都有明確的用途和受眾,與業務目標相符。
先於駭客發現自己的API。重視可發現性和定期監控有助於防範安全漏洞。
管理API 的生命週期。全面的API 生命週期管理可確保API 在適當的安全防護下持續運作。
選擇最適合的API 技術。適合其他企業的技術不一定適合您,因此您必須詳細考慮您目前和未來的特定API 需求。

無論您選擇哪種類型的API 架構或正在編寫哪種類型的API,必須從一開始就考慮API 安全防護,而不是事後彌補。

什麼是API 互聯?

「API 互聯」是指在雲端原生環境中使用模組化、可重複使用的API 來連接資料和應用程式。與專注於管理單一API 生命週期的API 管理不同,API 互聯涉及鬆散耦合的微服務環境(其中許多API 相互通訊),並支援在這些架構中大規模保護和治理API。

雖然API 曾經僅被視為開發人員的工具,但現已成為策略性業務資產,不僅有助於創收,而且還支持企業敏捷性。隨著各企業不斷創新並紛紛採用API,這對視覺化、安全防護和治理提出了新的挑戰。企業需要使用新型API 互聯解決方案,以完善傳統和微服務架構,與DevOps 實務保持一致,並支援高效能API。

API 類型和API 互聯體驗

過去,全生命週期API 管理解決方案主要用於管理內部或外部API 的南北向流量(客戶端到後端)。現在,隨著雲端原生基礎架構不斷產生更多的東西向流量(在企業應用基礎架構內的微服務之間),API 的類型也有所增加。

目前,大多數企業使用四種類型的API:

內部API — 僅暴露給企業內的其他應用程式(及其開發人員),而不暴露給外部使用者。內部API 有助於解鎖資料並促進企業內各職能部門之間的協作。
外部API — 暴露給企業外部的使用者。外部API 支援與第三方開發人員和您的整個業務生態系統建立合作夥伴關係,並可成為收入來源。
合作夥伴API — 暴露給業務合作夥伴。這些API 不會公開— 只有滿足兩家企業的身份驗證(AuthN) 和授權(AuthZ) 要求的部分開發人員才可對其進行存取。
第三方API — 由第三方暴露並位於其伺服器上。這些API 通常用於提供廣泛需要的服務(如地圖),並專門開發供其他公司使用,一般是收費的。

API 互聯的其他關鍵要素包括API 閘道(反向代理或Ingress controller)和API 開發人員入口網站。API 閘道接受來自客戶端的API 請求,將其導向對應的service,並將請求結果融入使用者的同步體驗。開發人員入口網站是一個線上平台,您可以在此發布有助於API 消費者快速入門的資源,例如外部API 的目錄、完整的文件及範例程式碼。它還允許第三方開發人員註冊其應用,並獲得API 存取憑證。

多雲的挑戰

如今,API 和微服務都將部署在多個環境中— 公有雲、私有雲、本地和邊緣。隨著微服務日益成為高流量公司擴展應用的關鍵工具,內部API 流量也大幅增加。

在複雜的多雲環境中,API 端點(endpoint)激增,因此需要採用新的API 管理、治理和安全防護方法。這些分散式環境需要低接觸的自動化方法來為開發人員賦能,並支援平台維運團隊跨不同的業務線設定安全防護和資源防護。

確保多雲架構的可靠性和安全防護為平台維運團隊帶來了嚴峻的挑戰。他們需要全面了解應用程式和API 流量,並能夠在不同環境中應用一致的安全防護和合規策略。平台原生工具的操作方式各不相同,提供了不同程度的可視性和控制力。最終,平台維運團隊需要使用其他模型來跨分散式團隊和環境創建並應用治理規則。

API 治理有兩種常見模式— 集中式和分散式。但在現代API 策略中,尤其是在API 優先模型中,「自適應治理」的新概念可為API 開發人員賦能,同時為平台維運團隊提供可靠性和安全防護控制能力。

欲了解更多信息,請閱讀我們的博文《自適應治理可為API 開發人員提供其所需的自主權》。

API 優先工具的重要性

雲端原生環境是鬆散耦合的系統,通常使用容器、service mesh(服務網格)和微服務建立而成。上述資源透過API 相互通訊,並通常透過聲明性API 進行自主管理。這些技術能夠建構容錯性好、易於管理且便於觀察的系統。  

API 互聯強調使用雲端原生技術,特別是使用API​​ 優先方法來管理基礎架構和API 生命週期。這對於使用持續整合/持續交付(CI/CD) 實踐來實現大規模自動化運作尤其重要。CI/CD 可透過自動化功能協助您在API 和應用程式的整個生命週期(編寫、交付和更新)對其進行高效管理。它還支援在早期整合並嵌入安全策略,然後將其應用於未來API,助力實現“安全左移”,讓安全防護融入整個開發流程,直至投入生產環境。

API 互聯和API 主導的互聯策略之間有何區別?

「API 主導的互聯」是實現數位轉型和企業整體API 策略的特定架構方法。它使用分層的方法按功能對企業的API 進行分類:

• 系統API用於從記錄系統中獲取原始數據,並透過可靠的方式將其暴露給上游API
• 流程API可編排多個下游系統API,以彙總資料並將業務邏輯應用於數據
• 體驗API支援面向使用者的交互,並可在行動和Web 應用中重複使用

無論您使用何種架構模式對API 進行分類,API 互聯都是一種在雲端原生環境中治理和操作API 的綜合方法。

原文出自:NGINX