本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Containerize .NET 應用程式
概觀
容器是一種輕量且有效的方法,以一致且可複製的方式包裝和部署應用程式。本節說明如何使用 無 AWS Fargate伺服器容器服務來降低 .NET 應用程式的成本,同時提供可擴展且可靠的基礎設施。
成本影響
影響使用容器節省成本效率的一些因素包括應用程式的大小和複雜性、需要部署的應用程式數量,以及應用程式流量和需求的層級。對於小型或簡單應用程式,與傳統基礎設施方法相比,容器可能無法大幅節省成本,因為管理容器和相關服務的負荷實際上可能會增加成本。不過,對於更大或更複雜的應用程式,使用容器可以改善資源使用率並減少所需的執行個體數量,進而節省成本。
建議您在使用容器節省成本時,記住下列事項:
-
應用程式大小和複雜性 – 更大和更複雜的應用程式更適合容器化,因為它們往往需要更多資源,並且可以從提高的資源使用率中獲益更多。
-
應用程式數量 – 您的組織必須部署的應用程式越多,可透過容器化節省的成本就越多。
-
流量和需求 – 遇到高流量和需求的應用程式可以受益於容器提供的可擴展性和彈性。這可以節省成本。
不同的架構和作業系統會影響容器成本。如果您使用 Windows 容器,由於授權考量,成本可能不會降低。Linux 容器的授權成本較低或不存在。下列圖表在美國東部 (俄亥俄) 區域 AWS Fargate 使用 的基本組態,設定如下:每月 30 個任務,每個任務執行 12 小時,分配 4 vCPUs 和 8 GB 記憶體。
您可以從兩個主要運算平台中選擇在 上執行容器 AWS:EC2以 為基礎的容器主機和無伺服器
下圖顯示使用 Fargate 與 Amazon 的同等容器的差異EC2。由於 Fargate 的彈性,應用程式的任務每天可以執行 12 小時,在非上班時間不會使用。不過,對於 Amazon ECS,您必須使用 Auto Scaling 執行個體群組來控制運算容量。 EC2這可能會導致 24 小時執行的容量,最終可能會增加成本。
成本最佳化建議
使用 Linux 容器而非 Windows
如果您使用 Linux 容器而非 Windows 容器,則可以大幅節省成本。例如,如果您執行 ,可以節省約 45% 的運算成本。NET EC2 Linux 上的核心,而不是執行 。NET EC2 Windows 上的架構。如果您使用 ARM 架構 (AWS Graviton) 而非 x86,則可以額外節省 40%。
如果您計劃為現有 執行 Linux 型容器。NET 架構應用程式,您必須將這些應用程式移植到 的現代跨平台版本。NET (例如 。NET 6.0
移至現代 NET的另一個優點。 (即遠離 。NET 架構) 是額外的現代化機會可用。例如,您可以考慮將應用程式重新同步到以微服務為基礎的架構,該架構更具可擴展性、敏捷性和成本效益。
下圖說明探索現代化機會的決策程序。
利用 Savings Plans
容器可協助您利用 Compute Savings Plans
請務必了解 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 如何產生最佳任務和容器大小的建議。
其中一種方法是使用負載測試工具,例如 上的分散式負載測試中所述的工具 AWS