

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

# 現代應用程式開發
<a name="modern-apps"></a>

**建置架構良好的雲端原生應用程式。**

[現代應用程式](https://aws.amazon.com/modern-apps/)開發實務對於組織建置架構良好的雲端原生應用程式並保持競爭至關重要*。*企業可以使用[容器](https://aws.amazon.com/containers/)和[無伺服器](https://aws.amazon.com/serverless/)運算等雲端原生技術來建立可擴展且靈活的應用程式，以適應不斷變化的市場需求。這些技術可讓組織最佳化資源使用率、降低成本，並改善其應用程式的效能。

當您設計現代應用程式時，請為操作和開發開發開發靈活的解決方案。現代應用程式會自動回應客戶需求的變化，並對故障具有彈性。工程師可以快速開發和部署變更，並監控應用程式效能。現代應用程式旨在自我修復，並且能夠視需要擴展至大型或小型流量，包括無成本的流量。

建置架構良好的雲端原生應用程式需要深入了解基礎技術及其最佳實務。組織應採用微服務架構，並將其應用程式設計為模組化且鬆散耦合，允許獨立部署和可擴展性。這種方法可讓組織將其應用程式分解為更小型、更易於管理的元件，這些元件可快速獨立開發、測試和部署。

## Start
<a name="modern-apps-start"></a>

### 探索現代方法
<a name="modern-apps-approaches"></a>

首先，請調查容器、無伺服器技術，以及其他可開發[微服務](https://aws.amazon.com/microservices/)的方法，以增強資源效率、協助改善安全性，並將基礎設施費用降至最低。選擇修改[現有的差異化](https://docs.aws.amazon.com/prescriptive-guidance/latest/strategy-modernizing-applications/welcome.html)和企業應用程式，以提高效率並最大化現有投資的價值。考慮[轉換](https://docs.aws.amazon.com/prescriptive-guidance/latest/migration-replatforming-cots-applications/welcome.html) （將您的自我管理容器、資料庫或訊息代理程式轉換為受管雲端服務），並根據價值導向的決策[重構](https://docs.aws.amazon.com/prescriptive-guidance/latest/modernization-decomposing-monoliths/welcome.html) （重新開發您的應用程式以採用雲端原生架構）。 

當您更新現有的雲端型應用程式時，成功的方法涉及使用 [strangler fig 模式](https://aws.amazon.com/blogs/architecture/seamlessly-migrate-on-premises-legacy-workloads-using-a-strangler-pattern/)，逐步將您的架構分解為微服務。此程序有助於採用現代應用程式方法，因此您可以實現固有的優勢，並向大型組織展示其價值。考慮將您的應用程式建構為不同的微服務，在適用的情況下利用[事件驅動的架構](https://aws.amazon.com/event-driven-architecture/)。確保您的架構將不可變更[的服務配額](https://docs.aws.amazon.com/wellarchitected/latest/reliability-pillar/manage-service-quotas-and-constraints.html)和實體資源納入考量，以避免影響工作負載效能或可靠性。 

### 採用雲端原生運算功能
<a name="modern-apps-compute"></a>

雲端原生運算功能是現代應用程式開發的關鍵。這種方法需要組織考慮如何託管其運算單位，並識別每個使用案例或服務的最佳選項。例如， [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html)提供無伺服器機制來執行您的應用程式程式碼，並在事件驅動的架構中扮演關鍵角色。Lambda 函數會隨需啟動，並平行執行至定義的並行上限，因此可以擴展以執行各種任務。   

### 使用容器化
<a name="modern-apps-containers"></a>

在現代軟體開發中，管理應用程式及其相依性已成為越來越複雜的任務，尤其是當您認為需要維持各種環境的一致性時。為了解決這些挑戰，Docker 等容器化技術已成為封裝應用程式及其相依性的有效解決方案。無論您應用程式的執行時間環境為何，容器都能確保一致且可重現的部署，因此在本機環境中的開發與雲端環境中的生產開發運作方式相同。此方法可減少因環境或其組態不相符而造成的錯誤。 

### 使用現代資料庫
<a name="modern-apps-dbs"></a>

當您使用現代資料庫時，應用程式內的每個微服務都可以使用符合其需求的正確專用資料庫，這可提高敏捷性和效能，同時降低成本。例如，一個微服務可能會在儲存工作階段資料時使用 NoSQL 資料庫來達到高輸送量，另一個微服務可能會使用關聯式資料庫來執行複雜的資料表聯結，而另一個微服務可能會使用量子分類帳資料庫來追蹤區塊鏈的變更。 

現代資料庫提供可擴展性和彈性。它們也有助於提供比傳統資料庫更好的安全性、合規性和可靠性。它們可讓組織更有效率地存放和管理資料，並確保應用程式可以在正確的時間存取正確的資料，進而獲得更好的效能和使用者體驗。 

遷移至現代資料庫是現代應用程式開發的關鍵元件。透過使用正確的資料儲存解決方案，組織可以最佳化其資料管理功能，並提供更有效率且可靠的應用程式。透過讓每個微服務獨立，並為每個微服務選擇正確的技術，組織可以進一步最佳化其資料功能，以實現最高效率和可擴展性，同時最大限度地降低成本。 

## 進階
<a name="modern-apps-advance"></a>

### 最佳化您的現代架構
<a name="modern-apps-arch"></a>

若要進一步最佳化，請精簡無伺服器技術的實作，並開發可以使用 [Amazon API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/welcome.html) 和 等 AWS 服務獨立擴展和部署的架構[AWS Lambda。](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html)使用 [Amazon Route 53](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/Welcome.html) 和 實作服務探索[AWS Cloud Map](https://docs.aws.amazon.com/cloud-map/latest/dg/what-is-cloud-map.html)，以確保元件之間的無縫通訊。

採用 API 版本控制、快取和速率限制，以維持不同應用程式版本的相容性和效能。使用 [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) 和資源政策增強安全性。這些有助於確保您的基礎設施受到保護，並且只會將存取權授予授權的實體。

如果可能，請使用無伺服器服務來執行容器，而不必管理基礎基礎設施。這可讓您專注於開發核心應用程式，並實現更好的資源管理和效能。它還可協助您充分利用可擴展性、靈活性和成本效益的優勢。

透過深入了解無伺服器架構的複雜性並整合這些進階實務，組織可以發現改進和微調的機會，最終最大限度地發揮雲端原生應用程式的潛力。此追求有助於採用更複雜的應用程式模式，進一步提升整體使用者體驗。它還讓組織在其軟體開發過程中變得更加靈活和有效率。

### 使用服務網格技術
<a name="modern-apps-mesh"></a>

隨著組織越來越採用微服務架構來建置和部署應用程式，管理這些服務之間的複雜性、安全性和通訊變得至關重要。Istio、Linkerd 或 Consul 等服務網格技術在協助增強微服務的安全性、可觀測性和可靠性方面扮演關鍵角色。

### 確保可見性和可追蹤性
<a name="modern-apps-visibility"></a>

現代實務在開發過程中提供更高的可見性和可追蹤性，並可讓您更輕鬆地遵守產業標準和最佳實務。可見性和監控對於現代應用程式開發至關重要。實作監控和記錄解決方案，以提供對應用程式效能的寶貴洞見，可讓組織識別需要改進的領域並最佳化其應用程式。我們建議您與平台工程團隊合作，確保工具可用於提供end-to-end可見性和監控，以便您可以快速偵測、診斷和解決問題。 

## Excel
<a name="modern-apps-excel"></a>

### 接受微服務
<a name="modern-apps-microservices"></a>

對於許多組織而言，現代應用程式開發是業務成功的同義詞。微服務是此轉型的核心，組織可以從採用這些強大的架構模式中受益。

微服務提供高度可擴展性、彈性和敏捷的應用程式架構。透過將應用程式分成小型、可獨立部署的服務，組織可以選擇在特定元件上快速迭代，而不會影響應用程式的其他部分。進階彈性模式，例如*斷路器*和*隔板*，在確保這些應用程式的高可用性方面扮演重要角色。

[斷路器](https://docs.aws.amazon.com/prescriptive-guidance/latest/cloud-design-patterns/circuit-breaker.html)可做為安全機制，透過暫時停止或從運作狀態不佳的服務轉移通訊來防止串聯失敗，以便復原。[大量](https://docs.aws.amazon.com/wellarchitected/latest/reliability-pillar/rel_fault_isolation_use_bulkhead.html)隔離資源並限制潛在故障的影響範圍。這些模式共同建立強大的架構，可承受不可預見的中斷並維持最佳效能。

實作微服務的另一個關鍵層面是採用網域驅動型設計 (DDD) 原則。DDD 專注於建立對商業網域的共同理解，並將其轉換為結構良好的軟體設計。此方法可帶來更具凝聚力且可維護的微服務，並確保應用程式隨著組織需求逐步演進。

在微服務型應用程式中，最佳化服務間通訊也很重要。透過實作 gRPC 或 GraphQL 等進階通訊協定，組織可以大幅提升服務之間的通訊效率。這些通訊協定提供類型安全、低延遲和彈性等功能，有助於改善應用程式的整體效能和可維護性。

採用微服務的組織提供一個促進創新、敏捷性和協作的環境。開發團隊通常會根據業務能力進行組織，並高度專注於持續整合和持續交付 (CI/CD) 實務。他們有權快速做出決策、實驗和反覆運算，並且接受共同責任和責任的文化。