跳至主要内容

如何選擇基礎設施?

提示

Recorder.moe 需要一個容器執行平台以動態的部署錄影容器,目前我們支援的容器執行平台有 Azure Container Instance 和 Kubernetes。
所謂的地端部署,指的是在地端建立 Kubernetes 叢集,並在叢集上部署 Recorder.moe 系統。
當然,你完全可以將此 Kubernetes 叢集部署在雲端,Kubernetes 的廣泛支援性使得 Recorder.moe 的基礎設施選擇更有彈性。

首先,你需要先決定你希望系統在哪裡運行。您可以選擇在 Azure 雲端或在 Kubernetes 部署。

我們選擇微軟 Azure 雲端服務做為雲端基礎架構的服務提供商,因為它提供高度彈性的雲端運算服務和平台即服務,可以有效降低維運成本。此外,Azure 提供了高度可用性,可靠性和安全性,這是地端部署時無法提供的。例如說我們的網頁後端使用 Azure Functions,其免費授權每個月一百萬次請求,400000 GB-s 執行時間,基本上你不用為網頁後端的運算成本擔心。我們的錄影容器動態部署在 Azure Container Instance,不管同時錄製多少個頻道都沒問題。資料庫選用 Azure Cosmos DB,在世界各地都具有即時且無限的彈性、可以快速讀取和寫入資料,特別的是它可以直接從網頁前端訪問資料庫,而不需要經過網頁後端,這大大的降低了網頁讀取延遲和後端維運成本。

雲端部署能帶來非常多的好處,但其缺點也很明顯,要錢 😉。我們在設計雲端架構時已經盡可能的壓低了成本,但即使如此,還是會在容器個體和物件儲存體上花費不少成本。這兩樣東西都是按照使用量計費,所以如果你的系統使用量很大,那麼維運成本也會提高。在錢的考量下,你可以選擇在地端以 Kubernetes 部署系統。

Kubernetes 是一個開源的容器管理平台,它可以自動化地部署、擴展和管理容器化的應用程式。當你在地端運行自己的 Kubernetes 主機,你的金錢成本就只有主機的維運成本,而不是按照使用量計費的雲端服務。但是,你需要自己管理 Kubernetes 主機,自己設定資料庫、物件儲存體、共用磁碟區,這要求維運人員具有相當的技術能力。此外,你也需要自己處理網路路由、防火牆、安全性等等。這些都是雲端服務提供商幫你做好的,但在地端你需要自己做。如果你有足夠的技術能力,那麼在地端部署系統是一個不錯的選擇。

Recorder.moe 在核心設計即考慮到雲端和地端運行,你一定能依照個人需求,在成本、規模和可靠度之間取得平衡。

雲端部署

這是我們推薦的雲端部署架構圖

基礎設施
監控服務DigitalOcean Droplet
網頁前端Azure Static Web Apps
網頁後端Azure Functions
資料庫Azure Cosmos DB
物件儲存體Azure Blob Storage
容器執行平台Azure Container Instance
共用磁碟區Azure Files

地端部署

圖待補

import OnPremiseProjectInfrastructureDiagram from './_On-Premise-Project-Infrastructure-Diagram.md';

基礎設施
監控服務Kubernetes
網頁前端Kubernetes
網頁後端Kubernetes
資料庫Apache Couch DB
物件儲存體MinIO (Amazon S3-Compatible Storage)
容器執行平台Kubernetes
共用磁碟區Kubernetes Persistent Volume