Containerize .NET 應用程式 - AWS 規範指引

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

Containerize .NET 應用程式

概觀

容器是一種輕量且有效的方法,以一致且可複製的方式包裝和部署應用程式。本節說明如何使用 無 AWS Fargate伺服器容器服務來降低 .NET 應用程式的成本,同時提供可擴展且可靠的基礎設施。

成本影響

影響使用容器節省成本效率的一些因素包括應用程式的大小和複雜性、需要部署的應用程式數量,以及應用程式流量和需求的層級。對於小型或簡單應用程式,與傳統基礎設施方法相比,容器可能無法大幅節省成本,因為管理容器和相關服務的負荷實際上可能會增加成本。不過,對於更大或更複雜的應用程式,使用容器可以改善資源使用率並減少所需的執行個體數量,進而節省成本。

建議您在使用容器節省成本時,記住下列事項:

  • 應用程式大小和複雜性 – 更大和更複雜的應用程式更適合容器化,因為它們往往需要更多資源,並且可以從提高的資源使用率中獲益更多。

  • 應用程式數量 – 您的組織必須部署的應用程式越多,可透過容器化節省的成本就越多。

  • 流量和需求 – 遇到高流量和需求的應用程式可以受益於容器提供的可擴展性和彈性。這可以節省成本。

不同的架構和作業系統會影響容器成本。如果您使用 Windows 容器,由於授權考量,成本可能不會降低。Linux 容器的授權成本較低或不存在。下列圖表在美國東部 (俄亥俄) 區域 AWS Fargate 使用 的基本組態,設定如下:每月 30 個任務,每個任務執行 12 小時,分配 4 vCPUs 和 8 GB 記憶體。

您可以從兩個主要運算平台中選擇在 上執行容器 AWS:EC2以 為基礎的容器主機和無伺服器AWS Fargate。如果您使用 Amazon Elastic Container Service (Amazon ECS) 而非 Fargate,則必須維持執行中的運算 (執行個體),以便在需要時讓置放引擎具現化容器。如果您改為使用 Fargate,則只會佈建所需的運算容量。

下圖顯示使用 Fargate 與 Amazon 的同等容器的差異EC2。由於 Fargate 的彈性,應用程式的任務每天可以執行 12 小時,在非上班時間不會使用。不過,對於 Amazon ECS,您必須使用 Auto Scaling 執行個體群組來控制運算容量。 EC2這可能會導致 24 小時執行的容量,最終可能會增加成本。

Fargate 每月成本與EC2每月成本的比較

成本最佳化建議

使用 Linux 容器而非 Windows

如果您使用 Linux 容器而非 Windows 容器,則可以大幅節省成本。例如,如果您執行 ,可以節省約 45% 的運算成本。NET EC2 Linux 上的核心,而不是執行 。NET EC2 Windows 上的架構。如果您使用 ARM 架構 (AWS Graviton) 而非 x86,則可以額外節省 40%。

如果您計劃為現有 執行 Linux 型容器。NET 架構應用程式,您必須將這些應用程式移植到 的現代跨平台版本。NET (例如 。NET 6.0) 以便使用 Linux 容器。一個主要考量是權衡重構的成本,與透過降低 Linux 容器成本而節省的成本相比。如需將應用程式移植到現代 . 的詳細資訊NET,請參閱 AWS 文件中的 . 的移植助理NET

移至現代 NET的另一個優點。 (即遠離 。NET 架構) 是額外的現代化機會可用。例如,您可以考慮將應用程式重新同步到以微服務為基礎的架構,該架構更具可擴展性、敏捷性和成本效益。

下圖說明探索現代化機會的決策程序。

複寫決策樹

利用 Savings Plans

容器可協助您利用 Compute Savings Plans 來降低 Fargate 成本。彈性折扣模型提供與可轉換預留執行個體相同的折扣。Fargate 定價是以您開始下載容器映像時所使用的 vCPU 和記憶體資源為基礎,直到 Amazon ECS任務終止 (四捨五入至最接近的秒數)。Fargate 的 Savings Plans 提供 Fargate 用量最多 50% 的節省,以換取承諾在一年或三年期間內使用特定數量的運算用量 (以每小時美元為單位)。您可以使用 AWS Cost Explorer 來協助您選擇 Savings Plan 。

請務必了解 Compute Savings Plans 會套用至讓您最先節省成本的用量。例如,如果您在 中執行 t3.medium Linux 執行個體us-east-2和相同的 Windows t3.medium 執行個體,則 Linux 執行個體會先收到 Savings Plan 利益。這是因為 Linux 執行個體具有 50% 的節省潛力,而相同的 Windows 執行個體具有 35% 的節省潛力。如果您的 中有其他符合條件的 Savings Plan 資源, AWS 帳戶例如 Amazon EC2或 Lambda,則不需要先將 Savings Plan 套用至 Fargate。如需詳細資訊,請參閱本指南的 Savings Plans 文件和 Windows on Amazon 最佳化支出一節中的了解 Savings Plans 如何套用至您的 AWS 用量。 Savings Plans EC2

正確大小的 Fargate 任務

請務必確保 Fargate 任務的大小正確,以達到最高程度的成本最佳化。通常,開發人員在最初判斷其應用程式中使用的 Fargate 任務組態時,不會擁有所有必要的使用資訊。這可能會導致任務過度佈建,然後導致不必要的支出。為了避免這種情況,我們建議您載入在 Fargate 上執行的測試應用程式,以了解特定任務組態在不同使用情況下如何執行。您可以使用負載測試結果、v CPU、任務的記憶體配置,以及自動擴展政策來尋找效能與成本之間的適當平衡。

下圖顯示 Compute Optimizer 如何產生最佳任務和容器大小的建議。

任務和容器大小的 Compute Optimizer 建議

其中一種方法是使用負載測試工具,例如 上的分散式負載測試中所述的工具 AWS,來建立 vCPU 和記憶體使用率的基準。執行負載測試以模擬典型應用程式負載之後,您可以微調任務的 vCPU 和記憶體組態,直到達到基準使用率為止。

其他資源