構(gòu)建彈性、可擴展的云原生應(yīng)用程序
云原生應(yīng)用設(shè)計使軟件工程師能夠?qū)W⒂跐M足客戶需求,這是一種解決方案,可以在使用案例層面上利用。
在1986年,我搬到科羅拉多州博爾德市去為我叔叔的初創(chuàng)公司工作。第一天到達辦公室時,他幫我找了一張附有 Compaq Portable 計算機的桌子。系統(tǒng)頂部放著一本關(guān)于使用 dBase II 的書。我的任務(wù)是為他的公司建立一個跟蹤訂單的應(yīng)用程序。我叔叔知道我對計算機很感興趣,我迫不及待地想要開始工作。這成為我學(xué)習(xí)微型計算機時代應(yīng)用程序構(gòu)建的第一次經(jīng)歷。流程非常簡單:
記錄所需的需求。
創(chuàng)建滿足定義需求的設(shè)計。
構(gòu)建和調(diào)試解決方案。
驗證解決方案是否按預(yù)期工作。
找出如何分發(fā)解決方案。
要求客戶采用并使用解決方案。
盡管我們目前在Web2和Web3世界中構(gòu)建應(yīng)用程序和服務(wù),但我通常將這個時代稱為“無 Web”應(yīng)用程序設(shè)計時代。
幾年后,我記得在軟盤上分發(fā)基于 Turbo Pascal 的應(yīng)用程序,供分布在美國各地的保險代理使用。后來,應(yīng)用程序存儲在放置在企業(yè)數(shù)據(jù)中心的文件服務(wù)器上。Web1 迭代還要幾年才出現(xiàn)。
2023年容器技術(shù)趨勢展望
DZone 的 2023 年容器技術(shù)趨勢報告將探討容器的當前狀態(tài)、全球容器化戰(zhàn)略的關(guān)鍵趨勢和進展,以及現(xiàn)代化軟件架構(gòu)的建設(shè)性內(nèi)容。
盡管大多數(shù)應(yīng)用程序開發(fā)生命周期步驟并沒有真正改變,但云服務(wù)提供商帶來了一些重要的因素:
采用集中化方法。
提高可伸縮性。
應(yīng)用程序和服務(wù)的彈性。
所有這些方面都是云原生應(yīng)用的優(yōu)勢所在。
什么是云原生?
維基百科定義云原生計算為使用云服務(wù)“在公有云、私有云和混合云等現(xiàn)代動態(tài)環(huán)境中構(gòu)建和運行可擴展的應(yīng)用程序”。隨著公司和初創(chuàng)企業(yè)渴望擺脫維護數(shù)據(jù)中心的業(yè)務(wù),轉(zhuǎn)向云端成為首要任務(wù)。
云原生應(yīng)用不僅僅是在云中運行的應(yīng)用程序。一個關(guān)鍵區(qū)別是應(yīng)用程序如何設(shè)計成在云中本地運行。采用容器、無服務(wù)器和微服務(wù)的方式提供了易于從一個環(huán)境部署到另一個環(huán)境的解決方案,同時提供了橫向擴展和多區(qū)域支持。
由于硬件層與代碼庫分離,云原生應(yīng)用可以輕松實現(xiàn)縱向擴展。
云原生方法
采用云原生方法使軟件工程師能夠?qū)?yīng)用程序拆分為多個方面,并使用通用方法來處理每個方面:
無服務(wù)器——將基于事件驅(qū)動的請求轉(zhuǎn)移到函數(shù)式 Lambda 中進行處理。
微服務(wù)——將大型應(yīng)用程序拆分為較小的處理單元。
容器——將應(yīng)用程序打包成獨立的多層容器以進行分發(fā)。
對于每個方面,云服務(wù)提供商提供可增強體驗的附加組件。一些常見的示例包括:
API 網(wǎng)關(guān)——為服務(wù)提供保護,并處理常見組件(如授權(quán)請求)。
自動擴展——根據(jù)預(yù)配置的閾值進行擴展和收縮。
緩存——將請求的信息存儲在基于內(nèi)存的緩存中,以避免較長時間運行的應(yīng)用程序請求。
故障轉(zhuǎn)移——自動將流量路由到用于處理的次要節(jié)點。
文件存儲——無限可擴展且性能卓越的對象存儲。
負載均衡——將請求分發(fā)到位于不同地理位置的實例。
編排——容器解決方案在大規(guī)模上自動化、擴展和管理。
持久化——使用基于 SQL 和 NoSQL 的數(shù)據(jù)存儲選項。
機密管理——避免高度敏感信息的泄露。
由于云原生方法可以在最小粒度上進行架構(gòu),因此得到的云原生應(yīng)用可以針對設(shè)計的每個方面提供最佳解決方案,如圖3所示:
云原生應(yīng)用由多個云服務(wù)功能構(gòu)建
云原生的好處
云原生應(yīng)用構(gòu)建方法使軟件工程師能夠根據(jù)用例級別使用最佳技術(shù)來構(gòu)建解決方案,以滿足客戶的業(yè)務(wù)需求。這意味著一個用例可以采用基于事件驅(qū)動的無服務(wù)器解決方案,而另一個用例可以利用由 SaaS 驅(qū)動的持久性層支持的微服務(wù)。
云原生應(yīng)用允許按需調(diào)整應(yīng)用程序的組件。這意味著對一個微服務(wù)的需求不需要為其他微服務(wù)分配相同水平的資源。此外,組件實例可以在相同或不同地理區(qū)域水平擴展。
由于硬件層與應(yīng)用程序?qū)臃蛛x,設(shè)計云原生應(yīng)用的人可以專注于滿足業(yè)務(wù)需求和企業(yè)目標。
與設(shè)計在本地數(shù)據(jù)中心運行的應(yīng)用程序相比,這些優(yōu)點為云原生應(yīng)用提供了強大的優(yōu)勢。當考慮到備份計劃或災(zāi)難恢復(fù)等概念時,差異只會變得更大。
云原生的挑戰(zhàn)
盡管云原生計算看起來是應(yīng)用程序設(shè)計的天堂,但也存在一些需要考慮的挑戰(zhàn)。對于云原生計算的主要批評是潛在的高成本問題。
一些常見例子包括:
無法清除的原型組件。
自動創(chuàng)建快照而沒有建立保留計劃。
在存在更便宜選擇的情況下過度分配硬件資源。
大多數(shù)云服務(wù)提供商都提供了出色的工具來預(yù)測和分析成本,但必須廣泛采用標準才能使成本控制成為優(yōu)先事項。在全球多個地區(qū)工作時,了解現(xiàn)有的法規(guī)非常重要,特別是涉及敏感數(shù)據(jù)。未能遵守可能會導(dǎo)致處罰或費用。
云提供商提供了多區(qū)域故障和災(zāi)難恢復(fù)保護的能力。然而,這些高級概念在設(shè)計和實施上可能具有挑戰(zhàn)性,既要實現(xiàn)自動的故障處理,又要保護免受意外數(shù)據(jù)問題的影響。
結(jié)論
作為軟件工程師,我們在應(yīng)用程序設(shè)計方面已經(jīng)取得了長足的進步。然而,對我來說,唯一沒有改變的方面就是當我有機會設(shè)計和構(gòu)建一個新的應(yīng)用程序時,我仍然感到非常興奮。
我一直專注于以下使命宣言,我認為適用于任何 IT 專業(yè)人員:
將時間集中在提供能夠擴展你的知識產(chǎn)權(quán)價值的功能/特性上。利用框架、產(chǎn)品和服務(wù)處理其他事項。
云原生應(yīng)用設(shè)計完全符合我的個人使命宣言,因為它使軟件工程師能夠?qū)W⒂跐M足客戶的業(yè)務(wù)需求:允許在每個用例級別使用最佳解決方案。然而,就像我們在生活中做出的每個決策一樣,我們必須始終注意相關(guān)成本。
- 上一篇
如何在數(shù)據(jù)分析中擁抱人工智能
人工智能等技術(shù)是革命性的,特別是對于數(shù)據(jù)分析等行業(yè)而言。生成式人工智能需要數(shù)據(jù)才能發(fā)揮作用;它訓(xùn)練系統(tǒng)學(xué)習(xí)數(shù)據(jù)中的模式、關(guān)系和結(jié)構(gòu)。這最終將作為模型生成新的、有意義的結(jié)論的基礎(chǔ)。因此,生成式人工智能需要數(shù)據(jù)才能發(fā)揮作用。
- 下一篇
物聯(lián)網(wǎng)行業(yè)十大新興趨勢
物聯(lián)網(wǎng)將基于機器的智能、監(jiān)控和連接納入越來越多的消費者、商業(yè)和民用產(chǎn)品和系統(tǒng),對我們的生活和工作產(chǎn)生了更大的影響,以下是物聯(lián)網(wǎng)的最新趨勢以及對物聯(lián)網(wǎng)將如何推動數(shù)字化變革的主要預(yù)測。