將已移轉的 MongoDB 工作負載部署至 Oracle Autonomous Transaction Processing Serverless@Azure
使用文件和文件資料庫來發展資料綱要和應用程式的工作負載和應用程式,受開發人員的彈性影響。結構靈活性、快速開發和可擴展性可加速應用程式功能的原型設計、簡化應用程式演進,以及建立迭代較小的應用程式和功能的能力,讓開發人員可以擴展以因應大型使用者群。然而,這些類型的工作負載面臨各種挑戰,包括更弱的交易保證、資料查詢靈活性,以及無法支援文件上的其他工作負載,例如分析或機器學習。
如果這些工作負載可以受益於傳統文件資料庫的優勢,並利用關聯式資料庫的優勢,該怎麼辦?例如,擁有更強大的交易保證和新增功能 (例如分析和機器學習),而無需將資料複製到另一個資料庫或系統。
Autonomous Transaction Processing (ATP) 無伺服器是一種完全自動化的資料庫服務,已最佳化,可同時執行交易、分析和批次工作負載。為了加速效能,它會預先設定資料列格式、索引和資料快取,同時提供可擴展性、可用性、透明安全性和即時作業分析。應用程式開發人員和 DBA 可在不犧牲功能性或原子性、一致性、隔離性及持久性 (ACID) 特性的情況下,快速且符合成本效益地開發和部署應用程式。
功能架構
此架構假設具有應用程式和 MongoDB 資料庫的工作負載 (內部部署或雲端部署) 存在,並將移轉至 Azure 和 Oracle Database@Azure 。其中說明未來狀態架構及其優點、部署方式,以及擴增現有工作負載時可用的額外功能。
此架構中使用的其中一個主要功能是 Oracle Database API for MongoDB,可讓應用程式使用 MongoDB 驅動程式、工具和 SDK,與 Oracle Database 中的 JSON 文件集合互動。現有的應用程式程式碼可以使用儲存在 Oracle Autonomous Transaction Processing 無伺服器中的資料,而不需要重製程式碼。
下圖說明由資料庫、後端和前端層組成的典型應用程式。
mongodb-atp-s-azure- 邏輯 -arch-migration.zip
MEAN 堆疊是一種用來實行此樣式的常用堆疊:
- MongoDB :文件資料庫
- Express:後端架構
- 角度:前端框架
Node.js
:後端伺服器
本文件使用 MEAN 堆疊作為將移轉至 Azure 和 ATP Serverless 的現有部署範例。
將此工作負載移轉至 Azure 和 ATP Serverless 簡單明瞭,包含下列步驟的高層級:
- 部署 ATP 無伺服器執行處理,在建立時啟用 Oracle Database MongoDB API。
- 將中繼資料和資料從 MongoDB 移轉至 ATP 無伺服器。
- 將應用程式伺服器部署為使用 Azure App Service、VM、容器或 Kubernetes 執行
Node.js
和 Express,並部署至與 ATP Serverless 相同的區域和可用性網域。 - 將後端應用程式程式碼部署至應用程式伺服器。
- 使用與目前應用程式相同的 MongoDB 工具和驅動程式,將後端應用程式連線至 ATP Serverless。
- 將使用者連線至新的應用程式 URI。
請注意,此參考架構著重於移轉工作負載的部署,而非移轉處理本身。如需移轉程序的詳細資訊,請參閱瀏覽更多一節。
將工作負載移轉至 ATP 無伺服器之後,有數個功能可用來增強現有功能,無論是 1) 是否支援其他非功能需求,例如輕鬆提升擴展性、彈性或高可用性,或 2) 具備其他功能功能,例如營運報告、分析和機器學習,而無需從資料庫複製資料。
若要提升擴展性和高可用性,請使用 Autonomous Transaction Processing 無伺服器自動調整功能。只需按一下或 API 呼叫,即可讓工作負載最多使用 3 倍的基準容量,無須停機。請注意,Autonomous Transaction Processing Serverless 使用 Oracle Real Application Clusters (Oracle RAC) 技術來提供高可用性。對於後端層,請使用 Azure VM 調整集搭配自動調整設定,或使用 PaaS 服務 (例如具有自動調整功能的 App 服務) 來啟用應用程式高可用性和擴展性。
由於 ATP Serverless 是建立在多模型、多工作負載資料庫技術之上,因此您可以新增依賴關聯式、空間、圖形或向量資料類型的功能來搭配現有應用程式使用。
實體架構
實體架構包括使用兩個 Azure 區域中委派子網路部署的 Autonomous Transaction Processing Serverless,以支援高可用性。OCI 服務支援自動備份至 Oracle Cloud Infrastructure Object Storage 。
此架構支援下列項目:
- 前端層
- 應用程式使用者可以從網際網路或公司網路連線。
- 使用者連線會使用 Azure Front Door 遞送至執行應用程式的作用中區域。
- 使用 Azure Web 應用程式防火牆保護使用者連線。
- 使用 App Service 來平衡應用程式的使用者連線。
- 後端層
- 應用程式使用 Azure App Service 以高可用性方式部署。
- Azure App Service AutoScale 可用來實現水平擴展性。
- 資料庫分層
- ATP Serverless 提供高可用性,例如 Oracle Real Application Clusters (Oracle RAC) 和數個資料庫節點來支援服務執行處理。因此,依預設,資料庫層具備高可用性和彈性。
- 在 ATP Serverless 中啟用的 Oracle Database API for MongoDB 可讓您在不變更的情況下使用現有的應用程式程式碼。
- Oracle Database API for MongoDB 具有高度復原能力,並且 ATP Serverless 可在內部保證復原能力。
- 可承諾量無伺服器可使用自動調整,調整以增加及減少系統負載。
- ATP 無伺服器業務連續性是透過跨區域 Autonomous Data Guard 進行。
- 災害復原
- 第二個區域使用類似的拓樸進行部署,以減少整體復原時間目標。
- 使用暖災難復原策略來減少整體的 RTO。在暖災難復原策略中,後端層雲端資源已經與 ATP 無伺服器待命資料庫一起佈建。
- 或者,您可以在發生故障時佈建後端層資源,降低執行 DR 資源但增加整體 RTO 的成本。
- 網路
- 來自內部部署和來自網際網路的所有應用程式內送流量都會由 Azure Front Door 遞送。
- ATP Serverless 會與專用端點一起部署,以提高安全性狀態。
- Azure App Service Web App 是使用整合子網路和 VNet 來建置,以連線 ATP 無伺服器執行處理。
- 應用程式 VNet 與資料庫 VNet 對等,而流量則允許在 Web 應用程式與 ATP 無伺服器之間流動。
- 安全
- 所有資料在傳輸中和靜態都是安全的。
以下潛在的設計改良未針對簡易性驗證的部署描述:
- 使用 Azure Automation Runbook 自動執行應用程式災難復原,以切換前門端點並驗證後續容錯移轉應用程式狀況。
- 利用中樞和網輻拓樸,加強集中網路安全性。
- 利用部署在中樞 VNet 中的網路防火牆,檢查所有流量並強制執行原則,以改善整體安全狀態。
mongodb-atp-s-azure- 實體 -arch.zip
此架構具有下列 Microsoft 元件:
- Azure 防火牆管理程式
Azure Firewall Manager 是集中式安全管理服務,可簡化跨多個區域和訂閱的 Azure 防火牆部署和組態。它可以進行階層式原則管理,讓全域和本機防火牆原則能夠一致地套用。與 Azure Virtual WAN (vWAN) 和安全中樞整合時,Azure Firewall Manager 可透過自動化流量路由和篩選來增強安全性,而不需要使用者定義的路由。此整合可確保虛擬網路、分公司和網際網路之間的流量安全地管理和監控,提供強大且精簡的網路安全性解決方案。
- Azure 前門
Azure 前門是一項雲端服務,可作為 Web 應用程式的全球進入點,提供高效能內容傳遞、智慧型第 7 層負載平衡,以及 Web 應用程式防火牆 (WAF) 和 DDoS 保護等整合式安全性功能,確保使用者體驗快速、可靠且安全。
- Azure 區域
Azure 區域是位於一或多個實體 Azure 資料中心 (稱為可用性區域) 的地理區域。區域獨立於其他地區,且遠距離能夠分離它們 (跨國家,甚至是大陸)。
Azure 和 OCI 區域都是本地化的地理區域。若為 Oracle Database@Azure ,Azure 區域會連線至 OCI 區域,Azure 中的可用性區域 (AZ) 會連線至 OCI 中的可用性網域 (AD)。選取 Azure 和 OCI 區域組,將距離和延遲降到最低。
- Azure 可用性區域
Azure 可用性區域是 Azure 區域內的實體獨立位置,旨在透過提供獨立的電源、冷卻和網路,確保高可用性和彈性。
- Azure 虛擬網路 (VNet)
Azure 虛擬網路 (VNet) 是 Azure 專用網路的基礎建置區塊。VNet 可讓許多類型的 Azure 資源 (例如 Azure 虛擬機器 (VM)) 安全地相互通訊、網際網路和內部部署網路。
- Microsoft Azure App Service
Microsoft Azure App Service 可讓您建置、代管及調整 Web 應用程式、API 和行動後端,無須管理基礎基礎架構。
- Azure App Service 整合子網路
Azure 虛擬網路內的專用子網路,專門委派由應用程式服務計畫使用,讓 Web 應用程式能夠對虛擬網路或其對等互連網路內的專用資源進行輸出連線,但無法接收來自 VNet 的輸入流量。
- Azure 委派子網路
委派的子網路可讓您將受管理的服務 (特別是平台即服務 (PaaS) 服務) 直接插入您的虛擬網路中作為資源。您可完全整合管理虛擬網路內的外部 PaaS 服務。
此架構具有下列 Oracle 元件:
- OCI 地區
OCI 區域是本地化的地理區域,包含一或多個代管可用性網域的資料中心。區域獨立於其他地區,且遠距離能夠分離它們 (跨國家,甚至是大陸)。
- Oracle Autonomous Database
Oracle Autonomous Database 是完全受管理且預先設定的資料庫環境,可用於交易處理和資料倉儲工作負載。您不需要設定或管理任何硬體,或安裝任何軟體。OCI 會處理資料庫的建立、備份、修正、升級及調整。
- Oracle Autonomous Data Guard
Oracle Autonomous Data Guard 可讓待命 (對等) 資料庫為 Autonomous Database 執行處理提供資料保護和災害復原。它提供一組全方位的服務,可建立、維護、管理及監督一或多個待命資料庫,讓實際環境執行 Oracle 資料庫維持可用狀態而不中斷。Oracle Data Guard 會將這些待命資料庫保留為生產環境資料庫的複本。接著,如果生產資料庫因為計畫性或非計畫性停機而無法使用,您可以將任何待命資料庫切換為生產環境角色,將停機時間降到最低。
- OCI Object Storage
OCI Object Storage 可讓您存取任何內容類型的大量結構化和非結構化資料,包括資料庫備份、分析資料,以及豐富的內容 (例如影像和影片)。您可以直接從應用程式或雲端平台內安全地儲存資料。您可以擴展儲存,而不會發生任何效能或服務可靠性的降低情況。
針對需要快速、立即及頻繁存取的「熱」儲存使用標準儲存。將封存儲存用於保留一段很長的時間和很少或很少存取的「冷」儲存。
- 儲存 OCI 專用端點
OCI 專用端點可讓您從虛擬雲端網路 (VCN) 或內部部署網路,以免費、私密且安全的方式存取許多 OCI 服務。
架構變異
此變異的實體架構使用客戶管理的 Oracle REST Data Services 部署,在每個應用程式伺服器中執行。不過,ATP Serverless 提供的完全受管理 MongoDB API 是大部分工作負載的最佳解決方案,因為管理更容易。
如果需要手動控制 Oracle REST Data Services 的組態和管理,則可以使用客戶管理的 Oracle REST Data Services。例如,允許應用程式使用較大的連線集區。
附註:
如果有特定的工作負載需求,請使用此架構變體。只有進階使用者才能部署此架構變異。本節僅說明與先前描述的實體架構相比的差異,因此除非另有說明,否則所有實體架構設計原則都是有效的。
下列架構圖說明如何部署變體。為了簡化,只有部署在 JSON 工作負載 VCN 中的雲端資源會被描述,因為其餘部署與先前描述的實體架構相同。
mongodb-atp-s-azure-arch-variant.zip
- App 服務負載平衡器會分配內送使用者要求,因此前端層可水平擴展,而且不會發生單點故障。
- 後端應用程式會部署在 App Service Scale Unit 的 Worker 中。
- 應用程式是使用容器作為發布方法進行部署。
- 使用應用程式和 Oracle REST Data Services 建立、安裝及設定容器,讓這兩個容器都可以在相同的容器中執行。
- 每個工作者在相同的程式實際執行環境中,執行將應用程式和 Oracle REST Data Services 共置的容器映像檔。
- 客戶管理的 Oracle REST Data Services 工作程式設定為啟用 MongoDB API,讓應用程式可以使用 MongoDB 工具和驅動程式連線至資料庫。
- 客戶管理的 Oracle REST Data Services 設定為透過設定較大的連線集區或使用其他資料庫服務,根據工作負載的非功能需求進行調整。
- 後端程式碼和客戶管理的 Oracle REST Data Services 都已預先安裝並預先設定在工作者使用的容器映像檔中。當應用程式服務水平擴展時,新工作者可以在佈建後執行後端應用程式並連線至資料庫。
建議
- 應用程式部署
- 如果您需要應用程式服務中可能無法提供的進階協調、網路和安全功能,請考慮使用 Azure Kubernetes Service (AKS) 的容器型部署。
- 安全
- 請考慮使用 Oracle Data Safe 來進一步增加工作負載安全狀態和執行資料庫稽核。
- 可觀測性
- 請考慮使用 Azure Monitor,在與其他所有 Azure 服務監控資料同時監控 ATP 無伺服器度量。
- 災害復原
- 您可以考慮使用 Azure 網站復原,或利用自訂命令檔偵測失敗並起始容錯移轉處理作業,以自動化及協調堆疊所有層的災害和復原。
- 營運效率
- 如果「ATP 無伺服器」工作負載是更廣泛的資料庫機組的一部分,請考慮使用「彈性集區」來提高成本效益。
- 您可以考慮啟用 Oracle Cloud Infrastructure Database Management,此 OCI 服務可提供一組全方位的資料庫效能監控與管理功能,以簡化 ATP 無伺服器執行處理的管理。
- 應用程式演進
- 考慮使用 SQL 和 APEX 或 PowerBI 等前端 (無須將資料移出資料庫) 在 ATP Serverless 中部署作業分析和即時報告,以進行可信任和即時的資料分析
- 考慮使用 ATP Serverless 使用 Oracle Machine Learning (OML) 進行機器學習,以 JSON 資料建置和訓練模型,而無需移動資料,並將模型與現有工作負載一起部署,以提高推論效率。
- 對於應用程式核心以外的其他使用案例,請考慮使用 ATP Serverless Select AI 和資料庫檢視來查詢 JSON 和保留中繼資料,讓使用者能夠使用自然語言查詢 JSON 資料。
- 考慮使用 ATP Serverless 來儲存額外的資料類型 (關聯式、向量、空間或圖形),以增加工作負載功能和彈性。