

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 在微服務中啟用資料持久性
<a name="welcome"></a>

*Tabby Ward 和 Balaji Mohan，Amazon Web Services (AWS)*

*2025 年 4 月* ([文件歷史記錄](doc-history.md))

組織會持續尋求新的程序，以創造成長機會並縮短上市時間。您可以透過現代化應用程式、軟體和 IT 系統來提高組織的靈活性和效率。現代化也可協助您為客戶提供更快、更好的服務。

應用程式現代化是組織持續改進的閘道，從將單一應用程式重構為一組獨立開發、部署和管理的微服務開始。此程序包含下列步驟：
+ **[將整體分解為微服務](https://docs.aws.amazon.com//prescriptive-guidance/latest/modernization-decomposing-monoliths/welcome.html)** – 使用模式將整體應用程式分解為微服務。
+  **[整合微服務](https://docs.aws.amazon.com//prescriptive-guidance/latest/modernization-integrating-microservices/welcome.html)** – 使用 [Amazon Web Services (AWS) 無伺服器](https://aws.amazon.com//serverless/)服務，將新建立的微服務整合到[微服務架構](https://docs.aws.amazon.com//whitepapers/latest/microservices-on-aws/simple-microservices-architecture-on-aws.html)中。
+ **啟用微服務架構的資料持久性** – 透過分散[資料存放](https://docs.aws.amazon.com//whitepapers/latest/microservices-on-aws/data-store.html)區來提升微服務之間的[多槽持久性](https://martinfowler.com/bliki/PolyglotPersistence.html)。

雖然您可以在某些使用案例中使用單體應用程式架構，但現代應用程式功能通常無法在單體架構中運作。例如，當您升級個別元件時，整個應用程式無法保持可用，而且您無法擴展個別元件來解決瓶頸或[熱點](https://docs.aws.amazon.com//kinesisanalytics/latest/dev/app-hotspots-detection.html) （應用程式資料中相對密集的區域）。單體可能會變成大型、無法管理的應用程式，而多個團隊之間需要大量努力和協調，才能引進微小的變更。

傳統應用程式通常使用集中式單體資料庫，這使得結構描述變更變得困難，建立具有垂直擴展的技術鎖定作為回應增長的唯一方法，並強加單一失敗點。單體資料庫也可讓您建置實作微服務架構所需的分散式獨立元件。

先前，典型的架構方法是在單一關聯式資料庫中建立所有使用者需求的模型，供單體應用程式使用。此方法受到熱門關聯式資料庫架構的支援，應用程式架構師通常會在開發程序的最早階段設計關聯式結構描述、建置高度標準化的結構描述，然後將其傳送給開發人員團隊。不過，這表示資料庫驅動應用程式使用案例的資料模型，而不是反之亦然。

透過選擇分散資料存放區，您可以提升[微服務之間的多槽持久性](https://docs.aws.amazon.com//whitepapers/latest/modern-application-development-on-aws/polyglot-persistence.html)，並根據資料存取模式和微服務的其他需求來識別資料儲存技術。每個微服務都有自己的資料存放區，可以透過低影響的結構描述變更獨立擴展，並透過微服務的 API 封鎖資料。分解單體資料庫並不容易，而最大的挑戰之一是建構資料以獲得最佳效能。分散式多槽持久性通常也會導致最終的資料一致性，而需要徹底評估的其他潛在挑戰包括交易期間的資料同步、交易完整性、資料重複，以及聯結和延遲。

本指南適用於應用程式擁有者、企業擁有者、架構師、技術主管和專案經理。本指南提供以下六個模式，以啟用微服務之間的資料持久性：
+ [Database-per-service模式](database-per-service.md)
+ [API 合成模式](api-composition.md)
+ [CQRS 模式](cqrs-pattern.md)
+ [事件來源模式](service-per-team.md)
+ [Saga 模式](saga-pattern.md)
  + 如需使用 實作saga模式的步驟 AWS Step Functions，請參閱 AWS 規範指引網站上的[使用 實作無伺服器saga模式 AWS Step Functions](https://docs.aws.amazon.com//prescriptive-guidance/latest/patterns/implement-the-serverless-saga-pattern-by-using-aws-step-functions.html)。
+ [Shared-database-per-service 模式](shared-database.md)

本指南是內容系列的一部分，涵蓋 建議的應用程式現代化方法 AWS。系列也包含：
+ [AWS 雲端中應用程式現代化策略](https://docs.aws.amazon.com//prescriptive-guidance/latest/strategy-modernizing-applications/)
+  [將 AWS 雲端中的應用程式現代化的分階段方法](https://docs.aws.amazon.com//prescriptive-guidance/latest/modernization-phased-approach/)
+ [評估 AWS 雲端中應用程式的現代化準備程度](https://docs.aws.amazon.com//prescriptive-guidance/latest/modernization-assessing-applications/welcome.html) 
+  [將整體分解為微服務](https://docs.aws.amazon.com//prescriptive-guidance/latest/modernization-decomposing-monoliths/welcome.html)
+ [使用無 AWS 伺服器服務整合微服務](https://docs.aws.amazon.com//prescriptive-guidance/latest/modernization-integrating-microservices/welcome.html)

## 目標業務成果
<a name="targeted-business-outcomes"></a>

許多組織發現，創新和改善使用者體驗會受到整體應用程式、資料庫和技術的負面影響。舊版應用程式和資料庫可減少您採用現代技術架構的選項，並限制您的競爭和創新。不過，當您將應用程式及其資料存放區現代化時，它們會更容易擴展並加快開發速度。解耦資料策略可改善容錯能力和彈性，有助於加速新應用程式功能的上市時間。

您應該預期在微服務之間提升資料持久性的六個結果：
+ 從應用程式產品組合中移除舊版單體資料庫。
+ 改善應用程式的容錯能力、彈性和可用性。
+ 縮短新應用程式功能的上市時間。
+ 降低整體授權費用和營運成本。
+ 利用開放原始碼解決方案 （例如 [MySQL](https://www.mysql.com/) 或 [PostgreSQL](https://www.postgresql.org/))。
+ 在 [AWS 雲端上從超過 15 個專用資料庫引擎](https://aws.amazon.com//products/databases/)中選擇，以建置高度可擴展且分散式的應用程式。