(本文是Ampere Computing“加速雲計算”系列文章的第五部分。您可以在SitePoint上閱讀所有文章。)
雲原生應用開發的最後一步是決定從哪裡開始。作為本系列的最後一期,我們將探討如何進行雲原生應用開發,在您的組織內部從哪裡開始這個過程,以及在此過程中可能遇到的各種情況。
正如本系列的其他部分所展示的那樣,雲原生平台正在迅速成為基於x86計算的強大替代方案。正如我們在第四部分中展示的那樣,在性能、可預測性和能效方面,全核Ampere vCPU和半核x86 vCPU之間存在巨大差異。
為雲原生計算環境設計、實現和部署分佈式應用程序的自然方法是將該應用程序分解成更小的組件或微服務,每個組件負責一項特定任務。在這些微服務中,您通常會擁有多種技術元素來共同提供該功能。例如,您的訂單管理系統可能包含一個私有數據存儲(可能用於在內存中緩存訂單和客戶信息)和一個會話管理器來處理客戶的購物車,此外還有一個API管理器來使前端服務能夠與其交互。此外,它可能連接到庫存服務以確定商品可用性,可能是一個交付模塊以確定運費和交付日期,以及一個支付服務以收取付款。
雲計算的分佈式特性使應用程序能夠隨著需求而擴展,並以單體軟件無法實現的方式獨立維護應用程序組件。如果您對電子商務網站的流量很大,您可以獨立於庫存服務或支付引擎擴展前端,或添加更多工作程序來處理訂單管理。雲原生應用程序的設計目標是通過隔離一個組件中的故障來避免其他組件受到影響,而不是單個大型應用程序,其中一個故障可能導致全局系統故障。
此外,雲原生方法使軟件能夠充分利用可用的硬件功能,只需創建處理當前負載所需的服務器,並在非高峰時段關閉資源。像Ampere這樣的現代云原生CPU提供了數量非常多的快速CPU內核和快速互連,使軟件架構師能夠有效地擴展其應用程序。
在本系列的第二部分和第三部分中,我們展示了將應用程序遷移到基於ARM的雲原生平台相對簡單。在本文中,我們將描述通常需要採取的步驟才能使這種遷移成功。
遷移到Ampere的雲原生Arm64處理器的第一步是選擇合適的應用程序。一些與其他CPU架構緊密耦合的應用程序可能更難以遷移,原因可能是它們對特定指令集存在源代碼依賴性,或者是因為與指令集相關的性能或功能限制。但是,Ampere處理器在設計上通常非常適合許多雲應用程序,包括:
一旦您選擇了您認為適合遷移的應用程序,您的下一步就是確定更新依賴項堆棧所需的工作。依賴項堆棧將包括主機或客戶操作系統、編程語言和運行時,以及您的服務可能具有的任何應用程序依賴項。Ampere CPU中使用的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中文網其他相關文章!