云原生集成開發(fā)環(huán)境——TitanIDE
通過網(wǎng)頁在任何地方更安全、更高效地編碼2022-07-05
613
原文譯自:Elastisys博客
DevOps 是一種文化運(yùn)動,它為軟件開發(fā)帶來了許多必需的敏捷性。但,DevOps被大多數(shù)人誤解了—— DevOps 真的意味著開發(fā)人員除了開發(fā)之外,還應(yīng)該具備管理、運(yùn)維復(fù)雜底層系統(tǒng)的能力嗎?
在本文中,我們將討論開發(fā)人員和平臺運(yùn)營之間技能組合的差異。首先,我覺得DevOps的真正意義應(yīng)該是:開發(fā)人員完全擁有軟件開發(fā)、發(fā)布和生命周期管理的所有權(quán),并去執(zhí)行應(yīng)用程序的操作,而不是管理底層IT平臺。
左邊是不切實(shí)際的期望,右邊是 DevOps 和平臺運(yùn)維的劃分
DevOps 的興起與誤解
DevOps 是軟件開發(fā)中的一種文化運(yùn)動,開發(fā)人員在其中承擔(dān)其應(yīng)用程序的運(yùn)營責(zé)任。這不僅包括像以前那樣開發(fā)代碼。它還包括操作任務(wù),例如發(fā)布新版本、管理其代碼的生命周期(升級、數(shù)據(jù)庫遷移等),以及通過監(jiān)視和日志記錄隨時(shí)間觀察其行為。
DevOps 極大地提高了應(yīng)用開發(fā)的生產(chǎn)力和敏捷性。開發(fā)人員完全掌握應(yīng)用程序的生命周期意味著他們關(guān)閉了代碼在現(xiàn)實(shí)中的行為方式的反饋循環(huán)。性能問題由負(fù)責(zé)修復(fù)它們的人員直接識別。應(yīng)用程序洞察力直接提供給開發(fā)人員和設(shè)計(jì)人員,以優(yōu)化應(yīng)用程序用戶體驗(yàn)。等等。
但DevOps經(jīng)常被誤解了。因?yàn)殚_發(fā)人員被鼓勵“bite off more than they could chew”。
促成 DevOps 運(yùn)動的技術(shù)和管理它的隱藏角色
DevOps 引發(fā)了組織演變和文化轉(zhuǎn)變。DevOps 之所以能夠以我們所看到的形式進(jìn)入這個(gè)階段,是因?yàn)橛兄С诌@種工作方式的技術(shù)。技術(shù)支持將基礎(chǔ)設(shè)施作為代碼工具使用的能力。無論是虛擬機(jī)設(shè)置中的管理程序、Kubernetes 設(shè)置中的容器,還是功能即服務(wù)設(shè)置中的語言運(yùn)行時(shí)。如果沒有這些技術(shù),我們將無法采用我們所知道的 DevOps。
但是仍然需要有人管理該底層技術(shù)。
在本文中,我們稱他們?yōu)槠脚_運(yùn)維人員。
平臺運(yùn)營商與開發(fā)者有何不同?
開發(fā)人員與平臺運(yùn)維員的技能組合
開發(fā)人員開發(fā),因此,他們最主要的能力是輸出代碼。但這不僅僅是代碼,因?yàn)殚_發(fā)人員主要專注于在高級抽象層面上解決問題,對問題進(jìn)行建模,并將這些模型和抽象轉(zhuǎn)換為代碼。
相比之下,平臺運(yùn)維人員專注于計(jì)算機(jī)系統(tǒng)的內(nèi)部運(yùn)作,并確保其高效、安全、正確地運(yùn)行,并且隨時(shí)可用。
軟件開發(fā)和平臺運(yùn)維任務(wù)所需的技能組合差異很大。
在 DevOps 中,開發(fā)人員還應(yīng)負(fù)責(zé)管理其應(yīng)用程序的生命周期并在運(yùn)行時(shí)觀察它們,這不僅意味著開發(fā)人員的責(zé)任轉(zhuǎn)移。這也意味著他們需要學(xué)習(xí)一套工具和支持技術(shù)??捎^察性堆棧,例如日志記錄和監(jiān)控系統(tǒng)。部署編排,例如用于使用云、Kubernetes 或功能即服務(wù)平臺的 API 和工具。
開發(fā)人員通常會接受這些工具和新的工作方式。因?yàn)殡S著他們工作責(zé)任的增加,他們的敏捷性也隨之提高,他們的工作效率也更高。好處是立竿見影的,可以在整個(gè)組織中感受到。
然而,關(guān)鍵是必須有人專門為這些新工具和平臺組件而工作。不僅僅是安裝一次,而是維護(hù)、升級、排除故障并保護(hù)這些工具或組件。
至關(guān)重要的是,期望開發(fā)人員也能夠管理底層系統(tǒng)是不合理的。
但,這些工作,正是平臺運(yùn)維人員所做的!
平臺操作員擁有足夠資深的技術(shù)來處理這些問題,例如,為什么網(wǎng)絡(luò)失敗、操作系統(tǒng)耗盡文件描述符或?yàn)槭裁?I/O 性能突然下降。
正確建模問題域的“人類現(xiàn)實(shí)”并將該模型轉(zhuǎn)換為代碼已經(jīng)足夠困難了。在足夠深的層次上理解操作系統(tǒng)以自信地對“計(jì)算機(jī)的現(xiàn)實(shí)”進(jìn)行故障排除,本質(zhì)上是不同的。
有些問題當(dāng)然可以通過“寵物對?!钡牟僮鞣椒▉斫鉀Q,其中運(yùn)行時(shí)(VM、容器平臺、函數(shù)運(yùn)行時(shí))被替換。但是那些根深蒂固的,那些由錯誤引起的,會導(dǎo)致錯誤反復(fù)出現(xiàn)的,必須真正得到照顧。
即使是牛生病了也需要獸醫(yī)幫助。平臺運(yùn)維人員就是那些老手。
這就是鼓勵開發(fā)人員“bite off more than they could chew”的方式: 他們被告知要同時(shí)進(jìn)行開發(fā)和所有操作。不是合理的應(yīng)用操作,而是底層平臺的管理,顯然這不合理。
僅僅因?yàn)橐粋€(gè)人擅長前端和后端的 JavaScript,并不意味著他們在系統(tǒng)管理工作方面也很出色。
這也不意味著他們能有效地完成這些任務(wù)。他們的時(shí)間可能更適合花在做他們擅長的事情上,而不是瘋狂地在谷歌上搜索系統(tǒng)管理問題的答案?;ㄙM(fèi)在這方面的任何時(shí)間都意味著他們的精力被從開發(fā)新功能中拉出來,而用于對平臺進(jìn)行故障排除。
安全風(fēng)險(xiǎn)角度
在沒有經(jīng)過適當(dāng)培訓(xùn)的情況下讓人員負(fù)責(zé)平臺安全也是一個(gè)嚴(yán)重的安全風(fēng)險(xiǎn)問題。開發(fā)人員永遠(yuǎn)不會被分配足夠的時(shí)間來處理整個(gè)事件。這就是為什么在 Datadog 的 2020 年容器報(bào)告中,最常見的 Kubernetes 發(fā)行版使用了 17 個(gè)月,因此不受支持且沒有資格進(jìn)行安全更新。除非專門為處理安全問題騰出時(shí)間和資源,否則顯然行不通。
企業(yè)積壓的無數(shù)安全任務(wù)就是其需要的證明。這些通常與應(yīng)用程序的安全性有關(guān)。如果連這些都沒有解決,誰來處理與平臺相關(guān)的問題?
那么在實(shí)踐中,真正的 DevOps 是什么樣的呢?
實(shí)踐中的真正 DevOps
讓我們再看一下這張圖,并把注意力集中在它的右側(cè)
開發(fā)人員可以通過承擔(dān)開發(fā)和應(yīng)用程序操作的職責(zé)來實(shí)踐 DevOps 的工作方式。這允許開發(fā)人員快速迭代。他們可以用敏捷的方式監(jiān)控、分析、計(jì)劃和執(zhí)行代碼更改。它使他們能夠集中精力并通過應(yīng)用程序開發(fā)為組織創(chuàng)造價(jià)值。
在技術(shù)層面上,使他們能夠做到這一點(diǎn)是平臺運(yùn)維人員的工作。該團(tuán)隊(duì)在后臺工作,并使平臺和系統(tǒng)保持良好的運(yùn)行。他們是支撐,為開發(fā)人員以 DevOps 方式履行其新職責(zé)奠定了基礎(chǔ)。
DevOps 從未打算讓開發(fā)人員同時(shí)進(jìn)行應(yīng)用程序和平臺運(yùn)維。
對開發(fā)人員提出切合實(shí)際的期望可以通過讓他們解決平臺問題來彌補(bǔ)所有時(shí)間損失。這意味著有更多時(shí)間為企業(yè)的最終用戶創(chuàng)造價(jià)值,同時(shí)提高工作效率并滿足開發(fā)人員的工作,而無需在開發(fā)和平臺運(yùn)維之間進(jìn)行思維轉(zhuǎn)換。
行云CloudOS致力于讓開發(fā)者專注于業(yè)務(wù)創(chuàng)新,與DevOps真正的理念不謀而合。
行云 CloudOS 封裝 Docker、K8S 等底層技術(shù),為用戶提供可視化操作頁面,讓傳統(tǒng)應(yīng)用研發(fā)團(tuán)隊(duì)無縫轉(zhuǎn)型為云原生數(shù)字化應(yīng)用研發(fā)團(tuán)隊(duì)。
在云原生數(shù)字化時(shí)代,應(yīng)用與云原生平臺分離,IT 團(tuán)隊(duì)中相關(guān)人員分別承擔(dān)應(yīng)用研發(fā)、應(yīng)用運(yùn)維、平臺運(yùn)維等角色。Docker、K8S 等云原生技術(shù)為底層平臺技術(shù),平臺運(yùn)維人員需要學(xué)習(xí)并掌握,應(yīng)用研發(fā)和應(yīng)用運(yùn)維人員將更聚焦于應(yīng)用本身,不需要過多關(guān)注底層云原生平臺技術(shù)。因而CloudOS 云原生平臺對底層技術(shù)進(jìn)行封裝,給應(yīng)用團(tuán)隊(duì)提供友好易使用的可視化操作頁面,讓應(yīng)用團(tuán)隊(duì)不需要學(xué)習(xí) Docker、K8S 技術(shù)也能高效進(jìn)行數(shù)字化應(yīng)用創(chuàng)新。
CloudOS 并非是傳統(tǒng)的DevOps工具
CloudOS 與典型DevOps工具對比