云原生時代的DevOps平臺設計之道( 二 )


云計算時代的興起以虛擬化技術為基礎 , 軟件定義基礎設施變得炙手可熱起來 。運維人員通過建設并維護一套 IaaS 云平臺,將計算資源進行池化 。開發人員按需申請自己需要的虛擬機,從而得到一個操作系統界面來進行交互 。與操作系統打交道,對開發人員依然是個巨大的挑戰,在 IT 領域,操作系統就像一座漂浮在海上的冰山 , 看似只露出冰山一角,然而其龐大的知識領域“身軀”都隱藏在海平面以下 。和裸機時代相比較,開發人員和運維人員已經是兩個完全不同的群體,開發人員已經可以將自己的大部分精力放在業務系統上了 。值得一提的是 , 對操作系統的掌控是不折不扣的運維領域技能 。
容器技術以及 Kuberentes 的橫空出世,成為了云計算時代的分水嶺 。軟件定義基礎設施的技術手段已經被發揮到了極致,并且成為了現階段運維人員的標配技能 。運維人員通過建設并維護一套 PaaS 云平臺,終于將操作系統這一座最后的“大山”從開發人員的身上搬開 。開發人員可以將更多的精力放在業務系統上了,除了他們依然需要學習容器技術和 Kubernetes  , 至少他們要學會如何面向 Kubernetes 編寫業務系統所需的聲明式配置文件 。運維人員也通過 PaaS 云平臺得到了自己想要的能力,容器技術和 Kubernetes 為他們帶來了彈性、便捷性的巨大提升 。
跟隨時代的變遷,我得出了一個結論:從開發人員與運維人員的關系上來看 , IT 領域的演變,就是運維人員通過不斷向上接手開發人員眼中“跟開發無關的雜活”,來不斷為開發人員減負 。開發人員在得到了解放后,可以將視角更多的聚焦在自己開發的業務系統上,釋放出自己的創造力 。
那么跟隨結論中的趨勢,解放開發人員負擔的腳步絕對不會停止 。DevOps 的工作,就是以開發人員為用戶群體 , 打造一套可以讓開發人員毫無障礙的使用基礎設施的“云原生平臺“ 。
云原生是一種面向云設計應用的思想理念,充分發揮云效能,組織內 IT 人員相互協作構建彈性可靠、松耦合、易管理、可觀測的云應用系統,最終目標是提升軟件交付效率,降低運維復雜度 。相比上文中提到的 PaaS 平臺 , 起碼要能夠避免開發人員去編寫復雜的 Kubernetes 聲明式配置文件 。
現有開源產品情況在云原生平臺領域,已經有不少項目在深耕 。在這里我列舉了三個各具特色的云原生領域的平臺級產品:Rancher、KubeSphere、Rainbond,后續的具體設計思路中,也會關注已有產品的實現 。
這三款開源產品中 , Rancher 是元祖級容器管理平臺 , 加入 SUSE 后,能夠明顯感覺在云原生生態領域不斷發力,Rancher 在各個層次可以集成的云原生領域工具集已經非常豐富 。Rancher 專注于幫助 DevOps 團隊面對多集群情況下的運維和安全挑戰 , 從這一點來說 , Rancher 更偏向于運維人員的使用體驗,而非面向開發人員提供更高的易用性 。
KubeSphere 是來自青云的 “面向云原生應用的 容器混合云” 。除了對 Kubernetes 集群內的各種資源的管理能力之外,Kubesphere 主打即插即用的插件式生態擴展能力 。
Rainbond 由北京好雨科技出品,從其介紹來看,它是一款主打易用性的云原生多云管理平臺 。
降低業務部署難度誠實地講,為現代開發語言開發而來的業務系統制作容器鏡像并不是什么難以掌握的技能 。但是不可否認的是,絕大多數 IT 從業人員依然會將制作鏡像這件事情歸為運維人員管理,而不是開發人員要關心的事情 。
那么 DevOps 工程師就有必要考慮 , 如何在開發人員對容器技術一無所知的情況下 , 使之可以直接從代碼開始部署業務系統 。
在這個方面,Heroku 是無可爭議的先行者 。Heroku 是一個支持多種編程語言的云平臺即服務產品 。在2010年被 Salesforce.com 收購 。Heroku 作為最元祖的云平臺之一 , 從2007年6月起開發,當時它僅支持 Ruby,但后來增加了對 Java、Node.js、Scala、Clojure、Python 以及 PHP 和 Perl 的支持 。
開發人員在使用云原生平臺時,只需要在界面中填寫代碼倉庫的地址,對應的用戶名密碼等基礎信息 , 就可以等待代碼構建成為鏡像 , 并自由的運行在 Kubernetes 云環境中去 。
現有開源產品也在這方面給予了一定的支持:
RancherKubeSphereRainbond實現方式通過集成 Epinio 項目,繼而深入集成了Paketo Buildpacks 來實現源碼構建提供定制化的基礎鏡像來結合用戶代碼構建項目基于 Heroku buildpack 定制的源碼構建能力支持語言類型Java、GraalVM、Golang、.NetCore、Nodejs、PHP、Ruby、PythonJava、Nodejs、PythonJava、Golang、.NetCore、Nodejs、PHP、Python、Html靜態使用體驗全部命令行操作,使用復雜圖形化操作,直接提供代碼地址,構建產出鏡像 , 進而部署業務圖形化操作 , 提供代碼地址即可完成構建與部署,構建參數可配置,自由度高更進一步的設計,是將代碼的提交、檢測、部署等流程都集成到 CI/CD 流水線中去,開發人員只需要進行代碼的提交,后續的流程會自動觸發完成,生成檢測報告,并完成代碼的上線部署 。而與之相關的第三方工具集,由 DevOps 團隊負責進行維護,開發人員可以充分的發揚拿來主義——拿來用就好 。

推薦閱讀