拿捏這10點(diǎn),玩轉(zhuǎn)云原生應(yīng)用
Netflix、Pinterest及Uber等企業(yè)巨頭正在云原生功能掀起的這波技術(shù)浪潮下鞏固自己的統(tǒng)治地位。簡(jiǎn)單來(lái)講,云原生是指一切誕生在云端、同時(shí)運(yùn)行在云端的事物。通過(guò)提升云原生應(yīng)用程序的開(kāi)發(fā)效率、增強(qiáng)架構(gòu)可塑性并改善基礎(chǔ)設(shè)施的適應(yīng)性,企業(yè)業(yè)務(wù)將獲得源源不斷的迭代動(dòng)力。事實(shí)上,云原生應(yīng)用已經(jīng)成為幫助企業(yè)應(yīng)對(duì)種種顛覆性挑戰(zhàn)的重要力量。
首先需要明確一點(diǎn),云原生應(yīng)該成為大家的首選——它能提供快速交付、借容器化實(shí)現(xiàn)的成本削減、出色的客戶(hù)體驗(yàn)和更低的管理門(mén)檻等。本文將帶大家了解敏捷DevOps流程、輕量化容器、微服務(wù)中的松散耦合、自動(dòng)化及資源等云原生屬性如何為剛剛踏入商業(yè)世界的創(chuàng)業(yè)者帶來(lái)顯著收益。
#1 容器
云原生與容器環(huán)境緊密關(guān)聯(lián),并由此實(shí)現(xiàn)極強(qiáng)的可擴(kuò)展性與彈性。容器堪稱(chēng)云原生架構(gòu)中的支柱,以輕量化容器的形式將云原生應(yīng)用打包成眾多獨(dú)立的服務(wù)捆綁單元。這些輕量化容器能夠幫助大家輕松部署應(yīng)用程序,完全無(wú)需擔(dān)心云虛擬服務(wù)器或者云服務(wù)商計(jì)算實(shí)例等底層適配要素。而這種極高的可擴(kuò)展性本身,也成為云原生應(yīng)用推動(dòng)創(chuàng)新的重要前提。
#2 語(yǔ)言與框架
云原生應(yīng)用能夠理解多種語(yǔ)言,因此大家可以輕松根據(jù)各項(xiàng)服務(wù)的具體功能選擇不同的運(yùn)行時(shí)和語(yǔ)言框架。開(kāi)發(fā)者可以使用Node.js編寫(xiě)應(yīng)用程序UI,選擇通過(guò)MicroProfile用Java編寫(xiě)API等。對(duì)于熟悉Java的企業(yè)級(jí)開(kāi)發(fā)者,MicroProfile框架堪稱(chēng)最佳選項(xiàng);Spring開(kāi)發(fā)者最適合SpringBoot;Node.js開(kāi)發(fā)者可以選擇Express.js或者LoopBack;Swift開(kāi)發(fā)者則可以靈活使用Kitura。
#3 微服務(wù)
云原生應(yīng)用由一系列能夠無(wú)縫集成至云環(huán)境中的微服務(wù)構(gòu)建而成。這些松耦合的服務(wù)使得開(kāi)發(fā)者能夠獨(dú)立考量每項(xiàng)服務(wù),各微服務(wù)會(huì)在自己的進(jìn)程中運(yùn)行并通過(guò)HTTP API進(jìn)行通信。每項(xiàng)微服務(wù)都可以獨(dú)立部署、升級(jí)和擴(kuò)展。彈性基礎(chǔ)設(shè)施及應(yīng)用程序架構(gòu)被集成在一起,共同實(shí)現(xiàn)性能與效率的橫向擴(kuò)展。這種解耦特性也讓開(kāi)發(fā)者們能夠?qū)W⒂诜⻊?wù)的核心功能,由此著力提升實(shí)際使用體驗(yàn)。由于每項(xiàng)服務(wù)都保持著獨(dú)立維護(hù),因此這種方法也能提升應(yīng)用程序的整體生命周期管理效率。
#4 應(yīng)用程序編程接口 (API)
微服務(wù)應(yīng)用架構(gòu)的最大挑戰(zhàn),在于如何實(shí)現(xiàn)不同服務(wù)之間的無(wú)縫通信。對(duì)于“前端”面向客戶(hù)端的微服務(wù)來(lái)說(shuō),必然需要響應(yīng)來(lái)自手機(jī)、瀏覽器或者其他設(shè)備的用戶(hù)請(qǐng)求。云原生服務(wù)使用基于特定協(xié)議的各類(lèi)API實(shí)現(xiàn)這一功能,例如代表性狀態(tài)傳輸(REST)、谷歌的開(kāi)源遠(yuǎn)程過(guò)程調(diào)用(gRPC)或者NATS等。RESTful API可以無(wú)縫管理基于微服務(wù)架構(gòu)的應(yīng)用內(nèi)通信活動(dòng)。為了保障性能,服務(wù)間的內(nèi)部通信則可由gRPC負(fù)責(zé)。REST主要用于通過(guò)超文本傳輸協(xié)議(HTTP)公開(kāi)API。NATS則支持發(fā)布-訂閱功能,可在應(yīng)用程序之內(nèi)實(shí)現(xiàn)異步通信。
#5 架構(gòu)與平臺(tái)
對(duì)于云原生應(yīng)用程序的快速交付與應(yīng)用迭代等功能,速度永遠(yuǎn)是我們不懈追求的目標(biāo)。架構(gòu)也是同理,我們需要保證那些具有持久性質(zhì)的服務(wù)始終匹配高彈性、高可用性的運(yùn)行模式,無(wú)狀態(tài)服務(wù)與有狀態(tài)服務(wù)彼此獨(dú)立。在這方面,云原生架構(gòu)使開(kāi)發(fā)人員能夠?qū)崿F(xiàn)把基礎(chǔ)設(shè)施依賴(lài)項(xiàng)抽象成通用平臺(tái)來(lái)使用。以此為基礎(chǔ),團(tuán)隊(duì)就可以專(zhuān)注于軟件設(shè)計(jì)與開(kāi)發(fā),而不是操作系統(tǒng)的配置、修補(bǔ)與維護(hù)。作為一種有效的抽象方法,我們可以建立起規(guī)范化平臺(tái),并保證其能夠在AWS、微軟Azure以及Google Cloud Platform等主流云基礎(chǔ)設(shè)施上順暢運(yùn)行。
#6 操作系統(tǒng)
云原生應(yīng)用以容器化、高抽象級(jí)形式保持運(yùn)行,不再依賴(lài)或傾向于任何特定的操作系統(tǒng)或機(jī)器。事實(shí)上,云原生服務(wù)應(yīng)該獨(dú)立于服務(wù)器及操作系統(tǒng)之外。每當(dāng)有微服務(wù)需要固態(tài)硬盤(pán)(SSD)及圖形處理單元(GPU)資源時(shí),都由部分設(shè)備負(fù)責(zé)提供。
#7 基礎(chǔ)設(shè)施
云原生應(yīng)用被部署在虛擬、共享的高彈性基礎(chǔ)設(shè)施之上。云原生基礎(chǔ)設(shè)施中包含有效運(yùn)行應(yīng)用程序所需要的各類(lèi)軟件和硬件;A(chǔ)設(shè)施還囊括操作系統(tǒng)、數(shù)據(jù)中心、部署管道、配置管理以及支持應(yīng)用程序所不可或缺的其他系統(tǒng)/軟件。高效穩(wěn)定的云原生基礎(chǔ)設(shè)施能夠顯著加快企業(yè)迭代速度并改善產(chǎn)品上市時(shí)間。
#8 敏捷DevOps流程
企業(yè)需要一套平臺(tái)來(lái)構(gòu)建和運(yùn)營(yíng)云原生應(yīng)用程序,并實(shí)現(xiàn)DevOps、微服務(wù)、持續(xù)交付及容器的全面自動(dòng)化。在云原生應(yīng)用中,每項(xiàng)服務(wù)都擁有自己的獨(dú)立生命周期,通過(guò)敏捷DevOps流程加以管理。多條持續(xù)集成與持續(xù)交付(CI/CD)管道相互協(xié)作,共同維持著云原生應(yīng)用程序的正常運(yùn)轉(zhuǎn)。
#9 自動(dòng)化
自動(dòng)化在云原生的具體實(shí)現(xiàn)當(dāng)中發(fā)揮著關(guān)鍵作用。專(zhuān)門(mén)針對(duì)云端運(yùn)行及擴(kuò)展環(huán)境開(kāi)發(fā)而成的應(yīng)用程序有著自己的一系列獨(dú)特要求,自動(dòng)化正是其中之一。自動(dòng)化是管理大型復(fù)雜應(yīng)用的先決條件。而借助基礎(chǔ)設(shè)施即代碼這一重要概念,云原生應(yīng)用程序真正獲得了高度自動(dòng)化的可行空間。
#10 資源
云原生應(yīng)用與治理模型保持一致,并堅(jiān)持按照策略方針將存儲(chǔ)配額、CPU及網(wǎng)絡(luò)資源分配給具體服務(wù)。在企業(yè)當(dāng)中,中央IT部門(mén)可以為其他各部門(mén)分配資源,保證各部門(mén)下的執(zhí)行團(tuán)隊(duì)都能訪(fǎng)問(wèn)并獲取日常工作中的必要資源。
結(jié)語(yǔ)
云原生應(yīng)用專(zhuān)為云環(huán)境而生。目前,具有前瞻性的各領(lǐng)先企業(yè)已經(jīng)在運(yùn)用云原生技術(shù)、敏捷DevOps流程、容器、微服務(wù)架構(gòu)及持續(xù)交付工作流開(kāi)發(fā)應(yīng)用程序。這不僅能讓自己的應(yīng)用成果變得與眾不同,同時(shí)也更善于抵御未來(lái)一切顛覆性變化可能帶來(lái)的影響。