盤點云原生的五大特征
文末本文轉載自微信公眾號「大數據DT」,作者劉文懋 江國龍 等 。轉載本文請聯系大數據DT公眾號。
近年來,云計算模式逐漸被業界認可和接受。在國內,包括政府、金融、通信、能源在內的眾多領域的大型機構和企業,以及中小企業,均對其托管業務的基礎設施進行了不同程度的云化。
但它們大多數利用開源或商業的IaaS系統構建云計算平臺,只是簡單地將傳統物理主機、平臺或應用轉為虛擬化形態。這種方式所帶來的好處是整體資源的利用更加合理,且集約式的運營會降低成本,提升整體運營效率和成熟度。但總體而言,這樣的上云實踐只是“形”上的改變,還遠沒有達到“神”上的變化。
在云計算的下半場,應該充分利用云計算彈性、敏捷、資源池和服務化等特性,解決業務在開發、運行整個生命周期中遇到的問題。畢竟,業務中出現的問題才是真正的問題。
比如,傳統應用有升級緩慢、架構臃腫、無法快速迭代等問題,于是云原生的概念應運而生。筆者認為云原生就是云計算的下半場,誰贏得云原生的賽道,誰才真正贏得了云計算。
談到云原生,不能不提始終推動云原生發展的CNCF(Cloud Native Computing Foundation,云原生計算基金會)。CNCF是一個孵化、運營云原生生態的中立組織。截止到2020年,CNCF共有371個開源項目、1402個項目和組織,可以說是一個覆蓋面相當廣的云計算組織。
CNCF對云原生的見解是:
云原生技術有利于各組織在公有云、私有云和混合云等新型動態環境中,構建和運行可彈性擴展的應用。云原生的代表技術包括容器、服務網格、微服務、不可變基礎設施和聲明式API。這些技術能夠構建容錯性好、易于管理和便于觀察的松耦合系統。結合可靠的自動化手段,云原生技術使工程師能夠輕松地對系統做出頻繁和可預測的重大變更。
云原生提倡應用的敏捷、可靠、高彈性、易擴展以及持續更新。在云原生應用和服務平臺的構建過程中,近年興起的容器技術憑借其高彈性、敏捷的特性以及活躍、強大的社區支持,成為云原生等應用場景下的重要支撐技術。無服務、服務網格等服務新型部署形態也在改變云端應用的設計、開發和運行,從而重構云上業務模式。
不同于以虛擬化為基礎的傳統云計算系統,云原生系統一般有如下特征。
01 輕、快、不變的基礎設施
在云原生環境中,支撐基礎設施通常是容器技術。容器生命周期極短,大部分是以秒或分鐘為單位,占用的資源也比虛擬化小得多,所以容器的最大特點就是輕和快。
而正是因為容器有輕和快的特點,在實踐中通常不會在容器中安裝或更新應用,而是更新更為持久化的鏡像,通過編排系統下載新鏡像并啟動相應的容器,并將舊的容器刪除。這種只更新鏡像而不改變容器運行時的模式稱為不變的基礎設施(immutable infrastructure)。從不變的基礎設施就能看出,云原生的運營與傳統虛擬機運營方式截然不同。
02 彈性服務編排
云原生的焦點是業務,而非基礎設施,而業務的最核心之處是業務管理和控制,如服務暴露、負載均衡、應用更新、應用擴容、灰度發布等。服務編排(orchestration)提供了分布式的計算、存儲和網絡資源管理功能,可以按需、彈性地控制服務的位置、容量、版本,監控并保證業務的可訪問性。
服務編排對應用層隱藏了底層基礎設施的細節,但又提供了強大的業務支撐能力,以及讓業務正常運行的容錯、擴容、升級的能力,使開發者可以聚焦業務本身的邏輯。
03 開發運營一體化
開發運營一體化(DevOps)是一組將軟件開發和IT運營相結合的實踐,目標在于縮短軟件開發周期,并提供高質量軟件的持續交付。雖然DevOps不等同于敏捷開發,但它是敏捷開發的有益補充,很多DevOps的開發理念(如自動化構建和測試、持續集成和持續交付等)來自敏捷開發。
與敏捷開發不同的是,DevOps更多的是在消除開發和運營側的隔閡,聚焦于加速軟件部署。
當前,很多云原生應用的業務邏輯需要及時調整,功能需要快速豐富和完善,云端軟件快速迭代,云應用開發后需要快速交付部署,因而開發運營一體化深深地融入云原生應用整個生命周期中。
04 微服務架構
傳統Web應用通常為單體應用系統,如使用WebSphere、WebLogic或.Net Framework等,從前端到中間件再到后端,各個組件一般集中式地部署在服務器上。
后來隨著Web Service標準的推出,應用以標準的服務交付,應用間通過遠程服務調用(RPC)進行交互,形成了面向服務的架構(Service-Oriented Architecture,SOA),極大提升了應用組件的標準化程度和系統集成效率。
在云原生應用設計中,應用體量更小,因而傳統單體應用的功能被拆解成大量獨立、細粒度的服務。
微服務架構使得每個服務聚焦在自己的功能上,做到小而精,然后通過應用編排組裝,進而實現等價于傳統單體應用的復雜功能。其優點是后續業務修改時可復用現有的微服務,而不需要關心其內部實現,可最大限度地減少重構開銷。
05 無服務模型
無服務(Serverless)是一種基于代碼和計算任務執行的云計算抽象模型,與之相對的是基于服務器(虛擬機、容器)的計算模式。
無服務在公有云和私有云上都有相應的服務,如AWS Lambda、阿里云的函數計算、Kubernetes的Kubeless、Apache OpenWhisk等。無服務聚焦在函數計算,隱藏了底層復雜的實現方式,使開發者能夠聚焦于業務本身。
總體而言,云原生真正以云的模式管理和部署資源,用戶看到的將不是一個個IT系統/虛擬主機,而是一個個業務單元,開發者只需要聚焦于業務本身。可以說微服務的設計、無服務的功能是云原生理念的核心體現,而容器、編排、服務網格均是實現云原生的支撐技術。
關于作者:劉文懋,綠盟科技集團首席安全專家、創新中心與星云實驗室負責人,計算機學會(CCF)理事,中國網絡空間安全人才教育論壇人才標準認證工作組專家,中國網絡空間新興技術安全創新論壇理事,云安全聯盟(CSA)云安全服務管理工作組聯合主席。曾發表著作《軟件定義安全:SDN/NFV新型網絡的安全揭秘》。
江國龍,資深研究員和架構師,主要研究方向包括虛擬化網絡安全、云計算系統安全、云原生安全、5G/邊緣計算安全等。作為核心人員,參與編寫了多份云安全相關白皮書、技術報告、技術標準。積極活躍于云原生安全社區,熱衷于技術探索和分享。
浦明,綠盟科技集團星云實驗室資深安全研究員,在云原生應用安全及安全創新領域有豐富的實戰經驗,長期從事Kubernetes、微服務、服務網格安全的研究。在綠盟科技任職期間,參與過安全應用商店、安全編排與自動化響應(SOAR)平臺、容器安全、安全產品云原生化的架構設計和研發工作。
阮博男,綠盟科技集團星云實驗室安全研究員,主要研究方向為云和虛擬化安全,積極探索Linux、云、虛擬化及前沿安全攻防技術。曾作為核心人員參與綠盟科技的SOAR、容器安全、云原生入侵檢測等項目和產品。
葉曉虎,綠盟科技集團首席技術官,先后擔任國家火炬計劃課題負責人、北京市下一代網絡安全軟件與系統工程技術研究中心主任、海淀區重大科技成果產業化負責人等。在信息安全管理、安全架構和技術方面有將近20年的經驗,并且作為安全專家多次參與國家級重大事件網絡安全保障工作。
本文摘編自《云原生安全:攻防實踐與體系構建》,經出版方授權發布。(ISBN:9787111691839)