全球資訊:toB應(yīng)用私有化交付技術(shù)發(fā)展歷程和對比
由于數(shù)據(jù)隱私和網(wǎng)絡(luò)安全的考慮,大多數(shù)toB場景的客戶需要私有化應(yīng)用交付,也就是需要交付到客戶的環(huán)境里,這樣的客戶有政府、金融、軍工、公安、大型企業(yè)、特色行業(yè)等,這些私有化場景限制很多,如何提高私有化應(yīng)用交付的效率是個難題,本文將介紹,私有化應(yīng)用交付有哪些技術(shù)?他們都各自有什么特點?私有化應(yīng)用交付的發(fā)展歷程。
ToB應(yīng)用私有化交付的困難點環(huán)境網(wǎng)絡(luò)限制,影響交付效率
(資料圖)
客戶基礎(chǔ)設(shè)施差異,需要適配過程
在私有化場景,不同客戶的安裝環(huán)境也不一樣,有些使用物理服務(wù)器,有些使用虛擬機(jī),不同的虛擬機(jī)廠商也有差異。操作系統(tǒng)也各有不同,例如常見的操作系統(tǒng)有CentOS/Debian/Ubuntu/Redhat,當(dāng)前還有很多國產(chǎn)化操作系統(tǒng)。CPU架構(gòu)也可能不同,有X86、ARM等;資源準(zhǔn)備周期長,需要審批流程;交付的應(yīng)用需要很重的適配過程,要么在公司適配,要么在客戶現(xiàn)場適配;由于環(huán)境差異很大,應(yīng)用交付完需要完整測試和驗證,需要大量的人力和時間投入;交付人員的技術(shù)門檻高
交付人員需要懂底層硬件和網(wǎng)絡(luò);交付人員需要懂操作系統(tǒng)和系統(tǒng)運維,需要懂服務(wù)治理、高可用、安全、性能分析、備份恢復(fù)、交付開發(fā)等等;交付人員要能獨立排查交付應(yīng)用的問題,需要很強(qiáng)的技術(shù)基礎(chǔ);定制化交付迭代效率低
在定制化交付場景,客戶會參與到開發(fā)過程中,客戶需要看到效果后反饋問題,再持續(xù)迭代,直到客戶滿意,過程中需要頻繁升級產(chǎn)品;如果開發(fā)人員在公司定制開發(fā),升級過程復(fù)雜,溝通低效;如果開發(fā)人員在客戶現(xiàn)場,沒有好的開發(fā)工具和環(huán)境,開發(fā)效率低,人力投入大;后期維護(hù)難度大
應(yīng)用交付完成后,后期需要保障應(yīng)用運行的穩(wěn)定性,離線環(huán)境遠(yuǎn)程沒辦法運維,報警沒辦法發(fā)出來,運維的難度大;產(chǎn)品有bug、一些預(yù)期內(nèi)的變更或產(chǎn)品升級都需要出差客戶現(xiàn)場,支持的成本比較高;傳統(tǒng)應(yīng)用交付傳統(tǒng)的應(yīng)用交付是直接交付二進(jìn)制的可執(zhí)行文件或軟件包:
二進(jìn)制的可執(zhí)行文件: java 的Jar,Linux 的可執(zhí)行文件,windows的exe等。軟件包: CentOS 使用 RPM 包,Debian 使用 DEB 包,Java Web 使用 WAR 包。安裝他們都需要先安裝依賴的環(huán)境和基礎(chǔ)軟件,YUM 和DEB 有自己的管理依賴的軟件源,但離線環(huán)境用不了,如果客戶的操作系統(tǒng)不同,還需要另外想辦法解決,運行這類服務(wù)為了解決啟動和自動重啟的問題,還需要通過 systemd 或 supervisor 的方式來管理。如果交付單體架構(gòu)的應(yīng)用傳統(tǒng)應(yīng)用交付方式還能勝任,但如果是復(fù)雜的微服務(wù)架構(gòu),傳統(tǒng)應(yīng)用交付方式將難以勝任。
在傳統(tǒng)應(yīng)用交付過程中,管理這些運行環(huán)境和操作系統(tǒng)差異是一個痛點,容器的出現(xiàn)解決了這個問題。
當(dāng)前云原生技術(shù)應(yīng)用交付云原生應(yīng)用交付主要使用的容器 和 kubernetes相關(guān)技術(shù)。
Docker 鏡像交付Docker 將業(yè)務(wù)和依賴的庫一起打包成 Docker 鏡像,在這個鏡像中包含所有環(huán)境和應(yīng)用,這樣就可以達(dá)成一處打包、到處使用,我們可以將該鏡像在任何支持 Docker 的操作系統(tǒng)上運行。Docker 的特性的確解決了很多開發(fā)、交付以及其他許多問題,因此 Docker 容器概念迅速的被普及。
在微服務(wù)架構(gòu)場景,需要多個服務(wù)或應(yīng)用一起交付,服務(wù)之間有依賴,還有復(fù)雜的配置,Docker-Compose解決了這個問題。
Docker-Compose應(yīng)用交付docker-compose 將多個服務(wù)或應(yīng)用使用 YAML 的方式管理,可以利用docker-compose命令安裝部署和管理,對于一個微服務(wù)架構(gòu)的應(yīng)用,利用docker-compose命令就可以在任何操作系統(tǒng)實現(xiàn)一鍵安裝和運行,當(dāng)然前提是需要安裝好Docker 和 docker-compose。
對于單機(jī)場景docker-compose可以適用,當(dāng)應(yīng)用需要高可用或多節(jié)點分布式部署,docker-compose就不能勝任,Kubernetes的出現(xiàn)解決了容器的高可用和分布式調(diào)度問題。
Kubernetes YAML應(yīng)用交付在 Kubernetes 中部署業(yè)務(wù)我們需要定義 Deployment Statefulset Service 等資源類型,通過調(diào)整副本的方式 Kubernetes 會自動調(diào)度到多個節(jié)點實現(xiàn)業(yè)務(wù)高可用,在交付時我們只需要將這些 YAML 資源和 Image 導(dǎo)出,在客戶的 Kubernetes 環(huán)境中部署并交付給客戶。這種交付方式需要客戶環(huán)境有Kubernetes或在客戶環(huán)境安裝Kubernetes。
當(dāng)我們將Kubernetes YAML交付很多客戶的時候,就需要參數(shù)配置、版本管理和簡單的安裝和升級,Helm在Kubernetes YAML的基礎(chǔ)上解決了上述問題。
Helm 應(yīng)用交付Helm 是 Kubernetes 資源的包管理器,它可以將一組資源定義成 Helm Chart 模版,提供了基于 Helm Chart 模塊的安裝和升級,安裝時可以配置不同的參數(shù)。Helm 同樣也是在 Kubernetes 交付中大多數(shù)人選擇的工具。
Helm最大的問題是需要開發(fā)者學(xué)習(xí)容器和Kubernetes整個技術(shù)棧,而且客戶環(huán)境必須要有Kubernetes,學(xué)習(xí)和使用的門檻太高。抽象的應(yīng)用模型是一個解決方案。
面向未來的云原生應(yīng)用模型交付應(yīng)用模型強(qiáng)調(diào)以應(yīng)用為中心的理念,讓開發(fā)者專注在業(yè)務(wù)本身,在應(yīng)用級抽象和包裝底層復(fù)雜的技術(shù),應(yīng)用模型跟底層基礎(chǔ)設(shè)施完全解耦,根據(jù)對接和交付的基礎(chǔ)設(shè)施不同,自動轉(zhuǎn)換和適配,真正實現(xiàn)一次開發(fā),處處自動化部署。
基于OAM的KubeVela應(yīng)用交付OAM(Open Application Model) 是一個描述應(yīng)用的標(biāo)準(zhǔn)規(guī)范。有了這個規(guī)范,應(yīng)用描述就可以徹底與基礎(chǔ)設(shè)施部署和管理應(yīng)用的細(xì)節(jié)分開。通過將應(yīng)用定義與集群的運維能力分離,可以讓應(yīng)用開發(fā)者更專注于應(yīng)用本身,而不是”應(yīng)用部署在哪“這樣的運維細(xì)節(jié)。KubeVela基于OAM實現(xiàn)了應(yīng)用跨云、跨環(huán)境持續(xù)交付。當(dāng)前KubeVela對離線場景的應(yīng)用交付支持較弱。
基于RAM的Rainbond應(yīng)用交付Rainbond 是一個云原生應(yīng)用多云管理平臺,Rainbond 遵循以應(yīng)用為中心的核心理念,統(tǒng)一封裝容器、Kubernetes 等復(fù)雜技術(shù),將 Kubernetes 資源統(tǒng)一抽象成 RAM(Rainbond Application Model)應(yīng)用模型,使用戶能非常簡單的使用 Kubernetes,降低用戶使用的門檻,使用戶專注于應(yīng)用開發(fā)、應(yīng)用交付和應(yīng)用運維。
在對于離線交付場景,Rainbond基于RAM可以導(dǎo)出三種離線交付包:
Rainbond應(yīng)用模版包,其中包含了復(fù)雜微服務(wù)架構(gòu)交付的所有要素,支持升級和回滾,但要求客戶環(huán)境安裝Kubernetes和Rainbond;非容器的軟件包,非容器包按照傳統(tǒng)應(yīng)用交付方式打包,但易用性更好,包中包含了環(huán)境依賴,并采用靜態(tài)編譯,適合大多數(shù)操作系統(tǒng),使用 Systemd 管理;Docker-Compose離線包,支持在標(biāo)準(zhǔn)Docker Compose 環(huán)境一鍵啟動和管理;綜合對比交付門檻 | 微服務(wù)支持 | 多節(jié)點調(diào)度自動化運維 | 離線迭代效率 | 客戶環(huán)境支持 | |
---|---|---|---|---|---|
傳統(tǒng)交付 | 高 | 不支持 | 不支持 | 低 | 服務(wù)器 |
Docker鏡像 | 中 | 不支持 | 不支持 | 高 | 容器/K8s |
Docker Compose | 中 | 支持 | 不支持 | 中 | 容器 |
K8s Yaml | 中 | 支持 | 支持 | 中 | K8s |
Helm Chart | 中 | 支持 | 支持 | 中 | K8s |
KubeVela | 中 | 支持 | 支持 | 中 | K8s |
Rainbond | 低 | 支持 | 支持 | 高 | K8s/容器/服務(wù)器 |
▲點擊上方卡片關(guān)注K8s技術(shù)圈,掌握前沿云原生技術(shù)
關(guān)鍵詞: 操作系統(tǒng) 基礎(chǔ)設(shè)施 可執(zhí)行文件
相關(guān)閱讀
-
世界熱推薦:今晚7:00直播丨下一個突破...
今晚19:00,Cocos視頻號直播馬上點擊【預(yù)約】啦↓↓↓在運營了三年... -
NFT周刊|Magic Eden宣布支持Polygon網(wǎng)...
Block-986在NFT這樣的市場,每周都會有相當(dāng)多項目起起伏伏。在過去... -
環(huán)球今亮點!頭條觀察 | DeFi的興衰與...
在比特幣得到機(jī)構(gòu)關(guān)注之后,許多財務(wù)專家預(yù)測世界將因為加密貨幣的... -
重新審視合作,體育Crypto的可靠關(guān)系才能雙贏
Block-987即使在體育Crypto領(lǐng)域,人們的目光仍然集中在FTX上。隨著... -
簡訊:前端單元測試,更進(jìn)一步
前端測試@2022如果從2014年Jest的第一個版本發(fā)布開始計算,前端開發(fā)... -
焦點熱訊:劉強(qiáng)東這波操作秀
近日,劉強(qiáng)東發(fā)布京東全員信,信中提到:自2023年1月1日起,逐步為...