建置事件觸發的無伺服器應用程式
Oracle Functions 是在 Oracle Cloud Infrastructure 上建置且由 Fn 專案開源引擎提供之無伺服器、高度可擴展且完全受管理的平台。開發人員可以使用它來撰寫及建置提供商業價值的程式碼,而不用擔心啟動設定或管理基礎架構。Oracle Functions 的容器原生功能已封裝為 Docker 容器映像檔。
架構
下圖說明此參考架構。
![serverless-oci.png 的描述如下 serverless-oci.png 的描述如下](img/serverless-oci.png)
serverless-oci.png 圖解描述
Oracle Functions 架構包含下列元件:
- 區域
Oracle Cloud Infrastructure 區域是包含一或多個資料中心 (稱為可用性網域) 的本地化地理區域。區域與其他區域無關,而且大型距離可以區隔 (跨國家或甚至洲)。
- 可用性網域
可用性網域是區域內獨立的獨立資料中心。每個可用性網域中的實體資源都會與其他可用性網域中的資源隔離,以提供容錯。可用性網域不會共用基礎設施 (例如電力或散熱冷卻系統) 或內部可用性網域網路。因此,一個可用網域發生故障並不會影響該區域中的其他可用網域。
- 虛擬雲端網路 (VCN) 和子網路
VCN 是您在 Oracle Cloud Infrastructure 區域中設定的可自訂軟體定義網路。VCN 就像傳統資料中心網路一樣,可讓您完整控制網路環境。VCN 可以有多個非重疊的 CIDR 區塊,供您在建立 VCN 之後變更。您可以將 VCN 區隔為子網路,子網路範圍可為區域或可用性網域。每個子網路均包含一個未與 VCN 中其他子網路重疊的連續位址範圍。您可以在建立子網路之後變更子網路的大小。子網路可以是公用或專用。
此參照架構中的函數部署在公用區域子網路中。
- Oracle Functions
Oracle Functions 可讓您建置程式碼、直接呼叫程式碼或觸發程式碼以回應事件。當事件服務呼叫、處理影像,並將描述資料儲存回物件儲存時,就會觸發 Oracle Functions。Oracle Functions 使用 Oracle Cloud Infrastructure Registry 上代管的 Docker 容器。
- 事件
Oracle Cloud Infrastructure 服務會發出事件,這些是表示資源變更的結構化訊息。事件包括建立、讀取、更新或刪除 (CRUD) 作業、資源週期狀態變更,以及影響資源的系統事件。當備份完成或失敗,或新增、更新或刪除物件儲存的儲存桶檔案時,可以發出事件。
- 物件儲存
Oracle Cloud Infrastructure Object Storage 是網際網路式高效能儲存平台,提供可靠且高效能的資料持久性。物件儲存可以儲存不限數量的任何內容類型的非結構化資料,包括分析資料和豐富內容 (例如影像和視訊)。兩個不同的儲存層可滿足經常存取之「熱儲存 (標準)」和較不常存取之「冷」儲存體 (存檔) 的需求。標準物件儲存適用於您需要快速、立即且經常存取的資料。封存儲存適用於您必須很少或很少存取的資料,但必須保留並保留一段時間。
建議
您的需求可能會與此處描述的架構不同。使用下列建議作為起點。
- VCN
建立 VCN 時,請根據計畫連附至 VCN 中子網路的資源數目,判斷所需的 CIDR 區塊數目和各個區塊的大小。使用標準專用 IP 位址空間內的 CIDR 區塊。
建立 VCN 之後,您可以變更、新增及移除其 CIDR 區塊。
此架構使用公用 VCN 來部署函數。此函數由 VCN 中的公用區域子網路代管。您也可以使用專用 VCN。在此情況下,您必須使用 NAT 閘道才能存取網際網路。
- Oracle Functions
在此架構中,會使用 Java 程式設計來開發函數。由於 Fn 專案支援多種程式設計語言,因此您可以使用您選擇的語言來開發及建置函數。
- 物件儲存
此架構使用標準物件儲存來上傳並儲存影像,讓事件服務在建立物件時能夠選擇它。「物件儲存」會在「函數」處理作業之後儲存物件的描述資料。
- 事件
在此架構中,Oracle Cloud Infrastructure Events 服務設定為監聽物件儲存建立中的變更。將物件上傳至物件儲存並呼叫函數進行處理之後,就會呼叫服務。
注意事項
- 使用狀態
政府雲範圍內的區域不提供事件服務。
- 可管理性
此架構使用範例 Java 應用程式來撰寫函數。不過,您可以使用您選擇的程式設計語言。
- 安全
使用原則來限制誰可以存取您公司的 Oracle Cloud Infrastructure 資源,以及如何存取。
對於物件儲存,預設會啟用加密且無法關閉。
Oracle Functions 中部署之功能的所有存取權都是透過 Oracle Cloud Infrastructure Identity and Access Management (IAM) 來控制。IAM 允許將功能管理和功能呼叫權限指派給特定使用者和使用者群組。
- 成本
您只需支付執行函數時所使用的資源。
部署
GitHub 中提供此參照架構的 Terraform 程式碼。只要按一下即可將程式碼提取至 Oracle Cloud Infrastructure Resource Manager,然後建立堆疊並加以部署。或者,您也可以使用 Terraform 命令行介面 (CLI),將程式碼從 GitHub 下載至您的電腦、自訂程式碼以及建置架構。
- 使用 Oracle Cloud Infrastructure Resource Manager 進行部署:
- 按一下
如果您尚未登入,請輸入租用戶和使用者證明資料。
- 檢閱並接受條款與條件。
- 選取您要在其中部署堆疊的區域。
- 依照畫面上的提示和指示建立堆疊。
- 建立堆疊之後,請按一下 Terraform 動作,然後選取計畫。
- 等待工作完成,然後複查計畫。
若要進行任何變更,請返回「堆疊詳細資訊」頁面,按一下編輯堆疊,然後進行必要的變更。然後,再次執行「計劃」動作。
- 如果不需要進一步的變更,請返回「堆疊詳細資訊」頁面,按一下 Terraform 動作,然後選取套用。
- 按一下
- 使用 GitHub 中的 Terraform 程式碼部署:
- 前往 GitHub。
- 將儲存區域複製或下載到您的本機電腦。
- 依照
README
文件中的指示進行。