設定基本服務

已完成

因為雲端原生應用程式不需要為其個別元件選取特定的技術,所以您可以根據自己的喜好來規劃其實作細節。 此外,許多雲端供應項目 (例如適用於 PostgreSQL 的 Azure 資料庫) 可讓您使用所熟悉技術的相同開放原始碼版本。 這些供應項目也會使用基礎平台,以盡量降低與使用量相關聯的管理負擔。

您將在建置解決方案時利用這些優點。 一開始,您將會實作以 Express.js 為基礎的 Web 服務,並使用 REST API 路由來存取新部署的 PostgreSQL 資料庫。

模組化設計有何優點?

服務模型的模組化原則可讓個別服務之間保持高度隔離。 您可以獨立升級、部署、縮放和重新啟動每個服務,而不會影響其他服務的可用性或效能。 這又會讓您在應用程式的生命週期中應用 DevOps 實務。 最終結果便是,您能夠藉由頻繁推出小型的增量變更來加速推出新的功能版本。

服務之間的結合很鬆散,因此您可以變更基礎技術,而不需要強制大量重寫整個應用程式的程式碼。 例如,Express.js 後端服務可於容器化後部署至 Kubernetes 叢集,以根據需求動態縮放。 您也可以將其部署為容器型或程式碼型的 Azure App Service Web 應用程式,這種形式也支援自動縮放。

您一樣可以修改後端服務以連線到自選的、可能依賴同一組程式庫的不同資料庫。 Node.js 所提供的最常見物件關聯式對應程式程式庫 (例如 Prisma 或 Sequelize) 會支援各種關係式資料庫產品。 其中包括 PostgreSQL、MariaDB 及 Microsoft SQL Server。

模組化設計的另一個優點是擴充性。 您可以選擇新增其他元件,例如可透過 Next.js Web 應用程式存取的管理服務,並在不需要對現有應用程式進行重大變更的情況下將其容器化。

The high-level architecture of the sample basic service.

如何實作基本服務?

常作為服務建置和最佳化基礎的兩種架構模式分別是網域導向設計 (DDD) 和命令與查詢責任隔離 (CQRS)。 這兩種模式也會影響雲端原生應用程式的建模方式。

DDD 是一種著重在應用程式功能上的軟體開發方法,可用來定義服務之間的界限。 CQRS 常會與 DDD 合併使用。 其目的是要取代傳統的「建立、讀取、更新和刪除 (CRUD)」型方法,這種方法會依靠單一介面來進行所有資料管理工作。 相反地,CQRS 則會將資料存放區的讀取和更新作業分開。 這能讓隔離機制更上層樓,以切合 DDD 背後的前提條件。

您的目標是修改現有的 Express.js 型 Web 服務,以便能存取 PostgreSQL 資料庫。 Express.js 是適用於 Node.js 的開放原始碼後端 Web 應用程式架構。 其可簡化 Web 應用程式和 API 的建置作業。 Node.js 是用於建置用戶端和伺服器應用程式的 JavaScript 執行階段引擎。 Express.js 具有模組式架構,可簡化各種工作的實作。 這些工作包括傳統的網頁程式開發和存取 MongoDB 與 PostgreSQL 等資料庫。

您可以使用多種方法從 Express.js 應用程式存取 PostgreSQL 資料庫。 最受歡迎的方式會使用到物件關聯式對應程式程式庫,以將程式設計結構對應至對應的資料庫結構描述。 這種方法有助於可攜性,能在實際資料庫物件與其所代表的服務之間提供抽象層。

Express.js 應用程式所實作的方法會透過路由來公開,以定義應用程式的端點如何回應用戶端要求。 在實作這些方法時,請考慮套用 CQRS 的原則,即使這可能會因為複雜性較高而不適用於基本服務也沒關係。