使用 GraphQL 和 NoSQL 部署容器化視訊應用程式

例如隨選視訊串流應用程式。它串流了全球各地的客戶手錶。表演可以有幾季,而一季可以有多集。您需要現代化的永久描述資料存放區,才能追蹤此客戶活動。

一般而言,客戶有興趣追蹤其觀看的集、每集的觀看時間、觀看的季總數等等。客戶也希望串流應用程式從他們離開觀看的地方開始進行串流處理。畢竟,想要從一開始就重新開始進行串流處理?

此架構會逐步引導您使用各種 Oracle Cloud Infrastructure 服務,完成由數個微服務組成的隨選視訊串流應用程式。在此架構中,重點是活動追蹤微服務。串流應用程式的後端會收集資料以產生報表,例如最受歡迎的節目和每場表演的平均觀看時間。



架構

此應用程式使用三層架構,代表應用程式的大腦。這些服務的功能可讓您建置高可用性、可擴展且安全的無伺服器生產環境應用程式。應用程式可以使用數以千計的伺服器,不過,透過無伺服器的典範,您不需要管理單一伺服器。

最近,REST 已成為設計 Web API 的標準。REST 架構樣式允許在無狀態伺服器上執行,並提供對資源的結構化存取。然而,REST API 在跟上存取 API 的用戶端 (例如增加行動使用量、低功耗裝置和軟碟網路) 的快速變化需求時,顯得無彈性。

對於這些應用程式,我們尋找的解決方案可將透過網路傳輸的資料降到最低,並讓使用者能夠直接使用 API 輕鬆查詢資料。

GraphQL 是適用於 API 的開放原始碼資料查詢和操控語言,您可以使用多種語言撰寫程式碼。GraphQL 提供您 API 中資料的完整且易於理解的描述,同時提供執行階段功能來履行查詢現有資料。雖然 GraphQL 通常與資料庫技術混淆,但 GraphQL 並未與任何特定資料庫或儲存引擎連結,而是以您現有的資料為後盾。

現代應用程式開發人員在決定何時和如何保存資料時,有許多選擇。近年來,NoSQL 資料庫變得越來越受歡迎,現在每個應用程式開發人員都必須具備的必要工具之一。雖然「試用」和「真實」關聯式資料庫非常適合解決傳統應用程式問題,例如資料標準化、嚴格一致性和任意複雜的查詢以存取該資料,但 NoSQL 資料庫採用不同的方法。

執行容器化應用程式可能需要大量的負荷來建立虛擬機器、安裝元件以執行容器映像檔 (以及支援這些映像檔的所有相依性,包括軟體和作業系統更新),以及監督應用程式以確保它們能夠以最佳方式執行、可供使用,而且不受危害。

身為開發人員,您可以連線至 Oracle NoSQL Database Cloud Service ,並使用多種語言的 NoSQL SDK 使用 NoSQL 表格。Oracle Cloud Infrastructure Container Service 是一項完全託管的服務,適用於不需要容器協調平台 (例如 Kubernetes) 即可部署 GraphQL 應用程式的容器化工作負載。當您的開發團隊想要可靠地建置、部署及管理雲端原生應用程式時,請使用 OCI Kubernetes Engine (OKE)。

Oracle Cloud Infrastructure API Gateway 可讓您發布內含可從您網路存取之專用端點的 API,如果您想要讓 API 接受網際網路流量,可以使用公用 IP 位址公開這些 API。端點支援 API 驗證、要求和回應轉換、CORS、認證 / 授權以及要求限制。

這一切都提供了無伺服器體驗,讓客戶專注於為其應用程式增加價值,而不是部署和管理基礎架構。

以下是使用 Oracle NoSQL Database Cloud Service 的部分優點:

  • Data ModelingOracle NoSQL Database Cloud Service 支援以綱要為基礎與無綱要 (JSON) 模型製作。它提供直觀的方式來開發 GraphQL 型應用程式。GraphQL 綱要是使用巢狀資料結構所設計,符合開發人員在執行 NoSQL Data Modeling 時將使用的功能。原生選擇。
  • 開發生命週期:開發人員撰寫應用程式。Oracle 執行資料庫管理、儲存管理、高可用性和可擴展性,以協助開發人員專注於提供高效能應用程式。開發人員為其 GraphQL 微服務部署和管理表格或表格階層,而非叢集或資料庫。
  • 識別存取和管理Oracle NoSQL Database Cloud Service 使用 Oracle Cloud Infrastructure Identity and Access Management 提供對 Oracle Cloud 的安全存取。Oracle Cloud Infrastructure Identity and Access Management 可讓您建立動態群組,並授予檢查、讀取、使用或管理 Oracle NoSQL Database Cloud Service 表格的權限。
  • 冗餘中的資料安全Oracle NoSQL Database Cloud Service 將跨多個可用性網域 (AD) 或容錯域 (FD) 的資料儲存在單一 AD 區域中。如果 AD 或 FD 無法使用,使用者資料仍然可以從其他 AD 或 FD 存取。區域端點的要求不專屬於 AD/FD,因此 AD/FD 無法使用是通透的。
  • 高效能和可預測性Oracle NoSQL Database Cloud Service 透過大規模提供高效能,充分運用 Oracle Cloud Infrastructure 中的最新元件技術。開發人員知道其應用程式會以可預測的延遲傳回資料,即使其傳輸量和儲存需求增加也一樣。
  • 完全由零管理管理:開發人員不需要管理資料伺服器,也不需要管理基礎基礎架構和安全性。Oracle 保有硬體和軟體,使開發人員能夠專注於構建應用軟體。
  • 隨選傳輸量和儲存佈建Oracle NoSQL Database Cloud Service 以低延遲和可預測的延遲滿足應用程式傳輸量效能需求。隨著工作負載隨著定期業務波動而增加,應用程式可以提高其佈建的輸送量,以保持一致的使用者體驗。隨著工作負載減少,相同的應用程式可以降低其佈建的傳輸量,從而降低營運費用。使用隨選容量時,您不需要為每個表格佈建讀取或寫入容量。您只需針對實際使用的讀取和寫入單位付費。

下圖說明此參考架構。



containerized-video-app-graphql-nosql-architecture.zip

架構具有下列元件:

  • Tenancy

    租用戶是 Oracle 在您註冊 Oracle Cloud Infrastructure 時設定於 Oracle Cloud 中的安全隔離分割區。您可以在租用戶內的 Oracle Cloud 中建立、組織及管理您的資源。

    租用戶與公司或組織同義。通常,公司會擁有單一租用戶,並在該租用戶內反映其組織結構。單一租用戶通常與單一訂閱相關聯,單一訂閱通常只有一個租用戶。

  • 地區

    Oracle Cloud Infrastructure 區域是一個本地化地理區域,其中包含一或多個稱為可用性網域的資料中心。區域獨立於其他區域,而廣大的距離可以將其分開 (跨國家或大陸)。

  • 區間

    區間是 Oracle Cloud Infrastructure 租用戶內的跨區域邏輯分割區。使用區間組織 Oracle Cloud 中的資源、控制對資源的存取,以及設定使用配額。若要控制對指定區間中資源的存取,您可以定義指定可存取資源的人員及其可執行動作的原則。

  • 可用性網域

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

  • 容錯域

    容錯網域是可用性網域內的一組硬體和基礎架構。每個可用性網域都有三個具有獨立電源和硬體的容錯域。當您將資源分散到多個容錯域時,您的應用程式可以容忍容錯域內的實體伺服器故障、系統維護和電源故障。

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

    VCN 是您在 Oracle Cloud Infrastructure 區域中設定的可自訂軟體定義網路。與傳統的資料中心網路一樣,VCN 可讓您控制網路環境。VCN 可以有多個非重疊的 CIDR 區塊,您可以在建立 VCN 之後變更。您可以將 VCN 區隔成子網路,此子網路可以設定區域範圍或可用性網域。每個子網路都是由連續的位址範圍組成,這些位址不會與 VCN 中的其他子網路重疊。您可以在建立子網路後變更其大小。子網路可以是公用或專用。

  • 安全清單

    您可以為每個子網路建立安全規則,以指定必須允許進出子網路的來源、目的地和流量類型。

  • 服務閘道

    服務閘道可讓您從 VCN 存取其他服務,例如 Oracle NoSQL Database Cloud Service 。從 VCN 到 Oracle 服務的流量會透過 Oracle 網路結構傳送,而一律不會周遊網際網路。

  • 網際網路閘道

    網際網路網關允許 VCN 中公共子網路與公共網際網路之間的流量。

  • API 閘道

    Oracle API Gateway 可讓您發布內含可從您網路存取之專用端點的 API,並視需要向公用網際網路公開。端點支援 API 驗證、要求和回應轉換、CORS、驗證和授權以及要求限制。

  • 身分識別與存取管理 (IAM)

    Oracle Cloud Infrastructure Identity and Access Management (IAM) 是 Oracle Cloud Infrastructure (OCI) 和 Oracle Cloud Applications 的存取控制層。IAM API 和使用者介面可讓您管理識別網域和識別網域內的資源。每個 OCI IAM 識別網域都代表獨立的識別與存取管理解決方案,或代表不同的使用者群體。

  • 原則

    Oracle Cloud Infrastructure Identity and Access Management 原則會指定誰可以存取哪些資源及存取方式。存取權是在群組和區間層級授予,這表示您可以撰寫原則,為群組提供特定區間或租用戶的特定存取類型。

  • NoSQL 資料庫

    Oracle NoSQL Database Cloud Service 讓開發人員使用文件、分欄式和索引鍵值資料庫模型輕鬆建置應用程式,透過資料複寫提供可預測的單一毫秒回應時間,以實現高可用性。此服務針對隨選和佈建的容量模式提供 ACID 交易、無伺服器擴展、全方位的安全性,以及低使用付費價格,包括與內部部署 Oracle NoSQL Database 的 100% 相容性。

  • Oracle Cloud Infrastructure 容器服務

    Oracle Cloud Infrastructure 容器服務是無伺服器運算服務,可讓您立即執行容器,無須管理任何伺服器。

  • OCI Kubernetes 引擎

    Oracle Cloud Infrastructure Kubernetes Engine (Kubernetes 引擎確定 ) 是完全託管、可擴展且高可用性的服務,可用來將容器化應用程式部署到雲端。您可以指定應用程式所需的運算資源,而 Kubernetes 引擎則會在現有租用戶的 Oracle Cloud Infrastructure 上佈建這些資源。OKE 使用 Kubernetes 將跨主機叢集的容器化應用程式部署、調整規模及管理自動化。

建議

使用下列建議作為起點。您的需求可能與此處描述的架構不同。
  • API 閘道

    API 閘道可用於提供初始層次的篩選和使用控制,例如:

    • 服務認證和授權
    • 服務控制,例如速率限制
    • 擷取服務使用分析

    API 閘道 (不是防火牆或負載平衡器) 應執行解決方案感知路由,因此任何 GraphQL 功能不滿意的端點都可以導向到正確的位置。考慮到合理的速率限制,根據後端解決方案支援的最大效能功能以及任何一個服務使用者的尖峰權益而定。

注意事項

部署此參考架構時,請考量下列事項。

  • 安全

    您應該處理 API 閘道的應用程式層級安全性。您可以使用 GraphQL 指令 (例如 @auth),來處理微點的 GraphQL 特定安全性 (例如,屬性層級存取)。

部署

若要部署此架構,請依照此 Live Lab 中活動追蹤應用程式部署的指示進行:

探索更多

深入瞭解如何使用 GraphQL 和 Oracle NoSQL Database Cloud Service 部署容器化視訊應用程式。

複查這些額外資源:

Oracle Cloud Infrastructure 資源:

確認

認證者

  • Dario Vega
  • Michael Brey