(本文是Ampere Computing“加速雲計算”系列文章的第五部分。您可以在SitePoint上閱讀所有文章。)
雲原生應用開發的最後一步是決定從哪裡開始。作為本系列的最後一期,我們將探討如何進行雲原生應用開發,在您的組織內部從哪裡開始這個過程,以及在此過程中可能遇到的各種情況。
正如本系列的其他部分所展示的那樣,雲原生平台正在迅速成為基於x86計算的強大替代方案。正如我們在第四部分中展示的那樣,在性能、可預測性和能效方面,全核Ampere vCPU和半核x86 vCPU之間存在巨大差異。
如何進行雲原生應用開發
為雲原生計算環境設計、實現和部署分佈式應用程序的自然方法是將該應用程序分解成更小的組件或微服務,每個組件負責一項特定任務。在這些微服務中,您通常會擁有多種技術元素來共同提供該功能。例如,您的訂單管理系統可能包含一個私有數據存儲(可能用於在內存中緩存訂單和客戶信息)和一個會話管理器來處理客戶的購物車,此外還有一個API管理器來使前端服務能夠與其交互。此外,它可能連接到庫存服務以確定商品可用性,可能是一個交付模塊以確定運費和交付日期,以及一個支付服務以收取付款。
雲計算的分佈式特性使應用程序能夠隨著需求而擴展,並以單體軟件無法實現的方式獨立維護應用程序組件。如果您對電子商務網站的流量很大,您可以獨立於庫存服務或支付引擎擴展前端,或添加更多工作程序來處理訂單管理。雲原生應用程序的設計目標是通過隔離一個組件中的故障來避免其他組件受到影響,而不是單個大型應用程序,其中一個故障可能導致全局系統故障。
此外,雲原生方法使軟件能夠充分利用可用的硬件功能,只需創建處理當前負載所需的服務器,並在非高峰時段關閉資源。像Ampere這樣的現代云原生CPU提供了數量非常多的快速CPU內核和快速互連,使軟件架構師能夠有效地擴展其應用程序。
在本系列的第二部分和第三部分中,我們展示了將應用程序遷移到基於ARM的雲原生平台相對簡單。在本文中,我們將描述通常需要採取的步驟才能使這種遷移成功。
在您的組織內部從哪裡開始
遷移到Ampere的雲原生Arm64處理器的第一步是選擇合適的應用程序。一些與其他CPU架構緊密耦合的應用程序可能更難以遷移,原因可能是它們對特定指令集存在源代碼依賴性,或者是因為與指令集相關的性能或功能限制。但是,Ampere處理器在設計上通常非常適合許多雲應用程序,包括:
- 微服務應用程序、無狀態服務:如果您的應用程序分解成可以根據需要獨立擴展的組件,則Ampere處理器非常適合。分解應用程序並利用雲所提供的優勢的關鍵部分是分離有狀態和無狀態服務。無狀態應用程序組件可以水平擴展,根據需要提供更高的容量,同時使用數據庫等有狀態服務來存儲非短暫數據。擴展無狀態服務很容易,因為您可以在許多服務副本之間進行負載平衡,為您的計算基礎設施添加更多內核以應對需求的增加。由於Ampere的單線程CPU設計,您可以以更高的負載運行這些內核而不會影響應用程序延遲,從而降低整體價格/性能。
- 音頻或視頻轉碼:將數據從一種編解碼器轉換為另一種編解碼器(例如,在視頻播放應用程序中或作為IP電話系統的一部分)是計算密集型的,但通常不是浮點密集型的,並且可以通過添加更多工作程序很好地擴展到許多會話。因此,這種類型的負載在Ampere平台上的性能非常好,並且可以提供比其他平台高出30%以上的價格/性能優勢。
- AI推理:雖然訓練AI模型可以受益於用於訓練的非常快速的GPU的可用性,但是當這些模型部署到生產環境中時,將模型應用於數據並不是非常浮點密集型的。事實上,可以使用精度較低的16位浮點運算來滿足AI模型推理的性能和質量SLA,並且可以在通用處理器上運行良好。此外,AI推理可以受益於添加更多工作程序和內核以響應事務量的變化。總而言之,這意味著像Ampere這樣的現代云原生平台將提供出色的價格/性能。
- 內存數據庫:因為Ampere內核的設計具有每個內核的大型L2緩存,所以它們通常在內存密集型工作負載(如對象和查詢緩存以及內存數據庫)中表現非常好。 Redis、Memcached、MongoDB和MySQL等數據庫工作負載可以利用每個內核的大型緩存來提高性能。 - 持續集成構建農場:構建軟件可能非常計算密集型且可並行化。作為持續集成實踐的一部分運行構建和集成測試,並使用持續交付實踐來驗證即將進入生產的新版本,可以受益於在Ampere CPU上運行。作為遷移到Arm64架構的一部分,在該架構上構建和測試您的軟件是先決條件,並且在原生Arm64硬件上執行這項工作將提高構建的性能並提高開發團隊的吞吐量。
分析您的應用程序依賴項
一旦您選擇了您認為適合遷移的應用程序,您的下一步就是確定更新依賴項堆棧所需的工作。依賴項堆棧將包括主機或客戶操作系統、編程語言和運行時,以及您的服務可能具有的任何應用程序依賴項。Ampere CPU中使用的Arm64指令集在最近幾年才變得突出,並且許多項目近年來都努力改進Arm64的性能。因此,本節中的一個共同主題是“較新的版本會更好”。
- 操作系統:由於Arm64架構在過去幾年取得了巨大進步,您可能希望運行更新的操作系統以利用性能改進。對於Linux發行版,任何最近的主流發行版都將為您提供原生Arm64二進制安裝介質或Docker基本映像。如果您的應用程序目前使用的是較舊的操作系統,例如Red Hat Enterprise Linux 6或7,或Ubuntu 16.04或18.04,您可能需要考慮更新基本操作系統。
- 語言運行時/編譯器:所有現代編程語言都可用於Arm64,但流行語言的最新版本可能包含額外的性能優化。值得注意的是,最新版本的Java、Go和.NET在Arm64上的性能有了顯著提高。
- 應用程序依賴項:除了操作系統和編程語言之外,您還需要考慮其他依賴項。這意味著檢查您的應用程序使用的第三方庫和模塊,驗證這些庫中的每一個都可用於Arm64並已為您的發行版打包,同時根據需要考慮外部依賴項,例如數據庫、防病毒軟件和其他應用程序。依賴項分析應包括多個因素,包括Arm64依賴項的可用性以及如果這些依賴項具有特定於平台的優化,則會產生的任何性能影響。在某些情況下,您可以在失去某些功能的情況下進行遷移,而在其他情況下,遷移可能需要工程工作才能適應Arm64架構的優化。
在Arm64上構建和測試軟件
雲服務提供商(CSP)上Arm64計算資源的可用性最近有所擴展,並且仍在不斷增長。正如您從Ampere Computing網站上的“在哪裡嘗試”和“在哪裡購買”頁面中看到的那樣,無論是在您的數據中心還是在雲平台上,Arm64硬件的可用性都不是問題。
一旦您可以訪問Ampere實例(裸機或虛擬機),您就可以開始遷移的構建和測試階段。正如我們上面所說,大多數現代語言現在都完全支持Arm64作為一級平台。對於許多項目而言,構建過程就像重新編譯您的二進製文件或將您的Java代碼部署到Arm64原生JVM一樣簡單。
但是,有時軟件開發過程中的問題可能會導致一些“技術債務”,團隊可能必須在遷移過程中償還這些債務。這可以採取多種形式。例如,開發人員可以對某些硬件功能的可用性或未在標準中定義的特定於實現的行為做出假設。例如,char數據類型可以根據實現定義為有符號字符或無符號字符,在x86上的Linux中,它是帶符號的(即,其範圍從-128到127)。但是,在使用相同編譯器的Arm64上,它是無符號的(範圍為0到255)。因此,依賴於char數據類型符號的代碼將無法正常工作。
但是,總的來說,符合標準的代碼以及不依賴於x86特定硬件功能(如SSE)的代碼可以在Ampere處理器上輕鬆構建。大多數持續集成工具(管理跨支持平台矩陣的自動化構建和測試的工具),如Jenkins、CircleCI、Travis、GitHub Actions等,都支持Arm64構建節點。
管理生產中的應用程序部署
我們現在可以看看在將您的雲原生應用程序部署到生產環境時,您的基礎設施管理將會發生什麼變化。首先要注意的是,您不必一次移動整個應用程序——您可以選擇最能從遷移到Arm64中受益的應用程序部分,並從這些部分開始。大多數託管的Kubernetes服務支持單個集群中的異構基礎設施。令人討厭的是,不同的CSP對在單個Kubernetes集群中混合不同類型計算節點的機制有不同的名稱,但所有主要的CSP現在都支持此功能。一旦您的Kubernetes集群中有了Ampere計算池,您可以使用“污點”和“容忍度”來定義容器的節點親和性——要求它們在arch=arm64的節點上運行。
如果您一直在為Arm64架構構建項目容器,則創建將是多架構容器的清單非常簡單。這本質上是一個包含指向多個容器映像的指針的清單文件,容器運行時根據主機架構選擇映像。
人們在部署階段通常遇到的主要問題再次可以歸類為“技術債務”。部署和自動化腳本可以假設某些特定於平台的路徑名,或者被硬編碼為依賴於僅限x86的二進制工件。此外,不同Linux發行版返回的架構字符串可能因發行版而異。您可能會遇到x86、x86-64、x86_64、arm64、aarch64。規範化這些平台差異可能是您過去從未做過的事情,但作為平台轉換的一部分,這將非常重要。
平台轉換的最後一個組成部分是應用程序的運行。雲原生應用程序在生產中包含大量腳手架,以確保它們能夠正常運行。這些包括日誌管理以集中事件、監控以允許管理員驗證事情是否按預期工作、警報以在發生異常情況時發出警報、入侵檢測工具、應用程序防火牆或其他安全工具以保護您的應用程序免受惡意行為者的攻擊。這些將需要一些時間投資來確保為應用程序節點激活適當的代理和基礎設施,但是由於所有主要的監控和安全平台現在都支持Arm64作為平台,因此確保您可以查看應用程序的內部工作通常不會構成大問題。事實上,許多最大的可觀察性軟件即服務平台正越來越多地將其應用程序平台遷移到Ampere和其他Arm64平台,以利用該平台提供的成本節約。
改善您的底線
向雲原生處理器的轉變可能是巨大的,使遷移投資非常值得付出努力。通過這種方法,您還能夠評估和驗證您的組織隨著時間的推移可以預期獲得的運營節省。
請注意,提高性能的最大障礙之一是慣性,以及組織傾向於繼續做他們一直在做的事情,即使它不再是最有效或最具成本效益的途徑。這就是為什麼我們建議採取第一步來證明雲原生技術對您的組織的價值。通過這種方式,您將擁有真實的成果與利益相關者分享,並向他們展示雲原生計算如何在沒有大量投資或風險的情況下提高應用程序性能和響應能力。
雲原生處理器已經出現。問題不在於是否轉向雲原生,而在於您何時進行轉換。那些更早擁抱未來的組織將從今天開始受益,這將使他們比那些受傳統束縛的競爭對手擁有巨大的優勢。
在Ampere開發者中心了解更多關於以雲的速度進行開發的信息,其中包含用於設計、構建和部署雲應用程序的資源。當您準備好親身體驗雲原生計算的好處時,請向您的CSP詢問他們基於Ampere Altra系列和AmpereOne技術的雲原生選項。
以上是加速雲:最後一步的詳細內容。更多資訊請關注PHP中文網其他相關文章!

與這些頂級開發人員新聞通訊有關最新技術趨勢的了解! 這個精選的清單為每個人提供了一些東西,從AI愛好者到經驗豐富的後端和前端開發人員。 選擇您的收藏夾並節省時間搜索REL

該教程通過使用AWS服務來指導您通過構建無服務器圖像處理管道。 我們將創建一個部署在ECS Fargate群集上的next.js前端,與API網關,Lambda函數,S3桶和DynamoDB進行交互。 Th

該試點程序是CNCF(雲本機計算基礎),安培計算,Equinix金屬和驅動的合作,簡化了CNCF GitHub項目的ARM64 CI/CD。 該計劃解決了安全問題和績效


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

SublimeText3 Linux新版
SublimeText3 Linux最新版

SublimeText3漢化版
中文版,非常好用

Dreamweaver CS6
視覺化網頁開發工具

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

WebStorm Mac版
好用的JavaScript開發工具