建置事件觸發的無伺服器應用程式

Oracle Functions 是在 Oracle Cloud Infrastructure 上建置且由 Fn 專案開源引擎提供之無伺服器、高度可擴展且完全受管理的平台。開發人員可以使用它來撰寫及建置提供商業價值的程式碼,而不用擔心啟動設定或管理基礎架構。Oracle Functions 的容器原生功能已封裝為 Docker 容器映像檔。

架構

此參照架構會使用 Oracle Cloud Infrastructure Events 服務呼叫 Oracle Functions,此服務會自動回應 Oracle Cloud Infrastructure Object Storage 所做的變更。上傳範例影像至物件儲存會觸發事件服務,而事件服務會接著呼叫 Oracle FunctionsFn 專案支援大部分的程式設計語言。此架構會在函數中使用 Java,從上傳的影像擷取描述資料,並將它儲存在 Oracle Cloud Infrastructure Object Storage 中。

下圖說明此參考架構。

serverless-oci.png 的描述如下
serverless-oci.png 圖解描述

serverless-oci-oracle.zip

Oracle Functions 架構包含下列元件:

  • 區域

    Oracle Cloud Infrastructure 區域是包含一或多個資料中心 (稱為可用性網域) 的本地化地理區域。區域與其他區域無關,而且大型距離可以區隔 (跨國家或甚至洲)。

  • 可用性網域

    可用性網域是區域內獨立的獨立資料中心。每個可用性網域中的實體資源都會與其他可用性網域中的資源隔離,以提供容錯。可用性網域不會共用基礎設施 (例如電力或散熱冷卻系統) 或內部可用性網域網路。因此,一個可用網域發生故障並不會影響該區域中的其他可用網域。

  • 虛擬雲端網路 (VCN) 和子網路

    VCN 是您在 Oracle Cloud Infrastructure 區域中設定的可自訂軟體定義網路。VCN 就像傳統資料中心網路一樣,可讓您完整控制網路環境。VCN 可以有多個非重疊的 CIDR 區塊,供您在建立 VCN 之後變更。您可以將 VCN 區隔為子網路,子網路範圍可為區域或可用性網域。每個子網路均包含一個未與 VCN 中其他子網路重疊的連續位址範圍。您可以在建立子網路之後變更子網路的大小。子網路可以是公用或專用。

    此參照架構中的函數部署在公用區域子網路中。

  • Oracle Functions

    Oracle Functions 可讓您建置程式碼、直接呼叫程式碼或觸發程式碼以回應事件。當事件服務呼叫、處理影像,並將描述資料儲存回物件儲存時,就會觸發 Oracle FunctionsOracle 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 進行部署:
    1. 一下部署至 Oracle Cloud

      如果您尚未登入,請輸入租用戶和使用者證明資料。

    2. 檢閱並接受條款與條件。
    3. 選取您要在其中部署堆疊的區域。
    4. 依照畫面上的提示和指示建立堆疊。
    5. 建立堆疊之後,請按一下 Terraform 動作,然後選取畫。
    6. 等待工作完成,然後複查計畫。

      若要進行任何變更,請返回「堆疊詳細資訊」頁面,按一下編輯堆疊,然後進行必要的變更。然後,再次執行「劃」動作。

    7. 如果不需要進一步的變更,請返回「堆疊詳細資訊」頁面,按一下 Terraform 動作,然後選取用。
  • 使用 GitHub 中的 Terraform 程式碼部署:
    1. 前往 GitHub
    2. 將儲存區域複製或下載到您的本機電腦。
    3. 依照 README 文件中的指示進行。

變更日誌

此日誌僅列出重要的變更: