掃二維碼與項(xiàng)目經(jīng)理溝通
我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問(wèn)/技術(shù)咨詢/運(yùn)營(yíng)咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
云原生、DevOps和平臺(tái)工程都是十分繁雜的概念,其邊界不斷延伸,有許多重合的部分。三者的出發(fā)點(diǎn)卻并不相同,卻可以形成有機(jī)的整體。

創(chuàng)新互聯(lián)是專業(yè)的平潭網(wǎng)站建設(shè)公司,平潭接單;提供成都做網(wǎng)站、成都網(wǎng)站設(shè)計(jì),網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行平潭網(wǎng)站開(kāi)發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛(ài)的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!
云原生基金會(huì)關(guān)于云原生的定義如下:
云原生技術(shù)有利于各組織在公有云、私有云和混合云等新型動(dòng)態(tài)環(huán)境中,構(gòu)建和運(yùn)行可彈性擴(kuò)展的應(yīng)用。云原生的代表技術(shù)包括容器、服務(wù)網(wǎng)格、微服務(wù)、不可變基礎(chǔ)設(shè)施和聲明式API。
這些技術(shù)能夠構(gòu)建容錯(cuò)性好、易于管理和便于觀察的松耦合系統(tǒng)。結(jié)合可靠的自動(dòng)化手段,云原生技術(shù)使工程師能夠輕松地對(duì)系統(tǒng)作出頻繁和可預(yù)測(cè)的重大變更。
可以看到云原生的目的是“夠構(gòu)建容錯(cuò)性好、易于管理和便于觀察的松耦合系統(tǒng)”,而采用的方法包括“容器、服務(wù)網(wǎng)格、微服務(wù)、不可變基礎(chǔ)設(shè)施和聲明式API”,而這一些還有個(gè)前提,需要是在“在公有云、私有云和混合云等新型動(dòng)態(tài)環(huán)境中”。
這不像一個(gè)定義,倒是像一個(gè)“萬(wàn)能”盒子,似乎可以容納任何“正確的”方法。不過(guò)這個(gè)定義與實(shí)際情況匹配,開(kāi)發(fā)與運(yùn)維面對(duì)的問(wèn)題很多,并沒(méi)有單一方法來(lái)解決。人們?cè)趯?shí)踐中可能發(fā)現(xiàn)某個(gè)工具很好用,然后漸漸發(fā)現(xiàn)其背后的思想是成功的關(guān)鍵,于是這個(gè)思想被挖掘出來(lái)成為一種方法論,然后衍生出更多的工具。一個(gè)很棒的例子就是 Kubernetes 的聲明式 API,以及其實(shí)現(xiàn)方式 Operator,許許多多的工具,都借用了這個(gè)思想,實(shí)現(xiàn)了自己的 Operator,共同組成了了一個(gè)松耦合的復(fù)雜的系統(tǒng)。這些方法最后成為了云原生的一個(gè)方法。
可以看出來(lái),“云原生”只是告訴你這有一套方法很好。工具提供者可以用這個(gè)方法開(kāi)發(fā)工具,最終用戶應(yīng)該用云原生的工具。但是基于這個(gè)思想的工具太多了,該如何選擇組合成了一個(gè)大問(wèn)題,所以云原生基金會(huì)給大家展示了這樣一個(gè)圖景:
圖片
可怕,所以做好云原生的一個(gè)關(guān)鍵問(wèn)題是如何選好工具,這就要求 CTO 和架構(gòu)師需要持續(xù)關(guān)注云原生解決方案,需要更多的同行溝通,這也是為什么我們的公眾號(hào)“云云眾生s”為什么要一直給大家介紹一些工具。
不過(guò),任何事情想做好,都不僅僅是技術(shù)的問(wèn)題,許多云原生踐行者,尤其是在傳統(tǒng)企業(yè)實(shí)踐的同僚一定對(duì)此深有體會(huì)。云原生聚焦于技術(shù),并沒(méi)有太多的意識(shí)形態(tài)因素,但不知不覺(jué)中技術(shù)改變了人的協(xié)作關(guān)系,由此引發(fā)的問(wèn)題需要有別的方法來(lái)解決。
與云原生相比,DevOps 有著眾多存在差異的定義,先看看 Atlassian 的定義:
DevOps 是一套實(shí)踐、工具和文化理念,可以實(shí)現(xiàn)軟件開(kāi)發(fā)團(tuán)隊(duì)和 IT 團(tuán)隊(duì)之間的流程自動(dòng)化和集成。它強(qiáng)調(diào)團(tuán)隊(duì)賦能、跨團(tuán)隊(duì)溝通和協(xié)作以及技術(shù)自動(dòng)化。
DevOps 運(yùn)動(dòng)始于 2007 年左右,當(dāng)時(shí)軟件開(kāi)發(fā)和 IT 運(yùn)營(yíng)社區(qū)開(kāi)始擔(dān)憂傳統(tǒng)的軟件開(kāi)發(fā)模式。在此模式下,編寫(xiě)代碼的開(kāi)發(fā)人員與部署和支持代碼的運(yùn)營(yíng)人員會(huì)獨(dú)立工作。DevOps 這一術(shù)語(yǔ)由“開(kāi)發(fā)”和“運(yùn)營(yíng)”兩個(gè)詞構(gòu)成,它反映了將這些領(lǐng)域整合為一個(gè)持續(xù)流程的過(guò)程。
可以看到,相對(duì)于云原生比較關(guān)注方法和工具,DevOps 包含了“實(shí)踐、工具和文化理念”三個(gè)方面,但是其突出的價(jià)值觀是什么,可以從其起源追溯。Atlassian 在DevOps 歷史中寫(xiě)到:
盡管敏捷開(kāi)發(fā)方法已興起,但多年來(lái),開(kāi)發(fā)團(tuán)隊(duì)和運(yùn)營(yíng)團(tuán)隊(duì)仍然處于孤立狀態(tài)。DevOps 是協(xié)作工具和實(shí)踐的進(jìn)一步發(fā)展,以更快速地發(fā)布更優(yōu)質(zhì)的軟件。
關(guān)于 DevOps 的起源,馬丁·福勒的Bliki中有以下描述:
Agile software development has broken down some of the silos between requirements analysis, testing and development. Deployment, operations and maintenance are other activities which have suffered a similar separation from the rest of the software development process. The DevOps movement is aimed at removing these silos and encouraging collaboration between development and operations.
按照此文的說(shuō)法,DevOps 解決的問(wèn)題是“敏捷開(kāi)發(fā)”的不同角色的豎井問(wèn)題,而不僅僅是運(yùn)維和開(kāi)發(fā)兩個(gè)組織的溝通協(xié)調(diào)問(wèn)題。此外,”敏捷開(kāi)發(fā)“這個(gè)詞也隱含的說(shuō)明 DevOps 的前提是敏捷開(kāi)發(fā),即使不是,也可能如 ThoughtWorks 網(wǎng)站上所提到的需要考量這些因素:
而且,DevOps 并不是打從一開(kāi)始就適合每個(gè)組織——組織可能必須要做出一些改變。應(yīng)時(shí)刻將康威定律銘記于心——這是一句格言,指出組織所設(shè)計(jì)的系統(tǒng)反映了組織自身的溝通結(jié)構(gòu)。這意味著,如果您使用一個(gè)大型單體應(yīng)用程序來(lái)運(yùn)行絕大多數(shù)業(yè)務(wù)關(guān)鍵應(yīng)用程序,那么 DevOps 可能不適合您的組織。DevOps 最適合那些能夠?qū)⒐ぷ鞣纸獬梢粋€(gè)團(tuán)隊(duì)可以擁有的若干離散小塊的組織。
確實(shí)如此,并不是每個(gè)組織都能開(kāi)展 DevOps。一個(gè)組織的部門(mén)墻越高,越難以實(shí)施 DevOps。
盡管不同的組織對(duì)于 DevOps 的定義有許多差異,但從前面的描述中,我們也能發(fā)現(xiàn) DevOps 是敏捷開(kāi)發(fā)的延伸。較早采用 DevOps 的組織本身的部門(mén)墻不高,開(kāi)發(fā)人員的眼界和能力都比較好,所以能夠快速的吸收運(yùn)維方面最佳實(shí)踐,DevOps 實(shí)踐也能實(shí)現(xiàn)比較好的效果。
但是對(duì)于大多數(shù)組織來(lái)說(shuō),未必有著這樣高能的開(kāi)發(fā)人員,由”Dev“人員推動(dòng)的”O(jiān)ps“可能并不專業(yè),再加上高高的部門(mén)墻,推動(dòng) DevOps 阻力非常大。
面對(duì) DevOps 在傳統(tǒng)企業(yè)的這種不適,許多廠商也推出了改良版的 DevOps 理念?;蛘叽蛑?DevOps 的旗號(hào)推出了許多 DevOps 產(chǎn)品,這些產(chǎn)品回避了 DevOps 中”麻煩“的部分,聚焦于工具,或多或少發(fā)揮了一些作用,尤其是在開(kāi)發(fā)團(tuán)隊(duì)中,但是往往沒(méi)有把能力延伸到運(yùn)維階段。
還有許多組織,成立了一個(gè)專門(mén)的 ”DevOps 團(tuán)隊(duì)“,負(fù)責(zé)DevOps工具和實(shí)踐的開(kāi)展。這樣可以,但是這與開(kāi)發(fā)團(tuán)隊(duì)把控自己運(yùn)維的原則有一些背離。
面對(duì)企業(yè)級(jí)研發(fā)的現(xiàn)狀,需要有一個(gè)新的指導(dǎo)方法來(lái)解決 DevOps 的問(wèn)題。
DevOps 運(yùn)動(dòng)已經(jīng)有了 15 年的歷史了,但對(duì)于大多數(shù)企業(yè)來(lái)說(shuō),并沒(méi)有實(shí)現(xiàn)全面的 DevOps,也沒(méi)有享受到其好處。這種自治的 DevOps 團(tuán)隊(duì)不僅沒(méi)有改善組織的交付水平,反而帶來(lái)了許多安全問(wèn)題。
另一方面,隨著云原生技術(shù)的發(fā)展,創(chuàng)建”平臺(tái)“不再是一件難事。一個(gè)圍繞平臺(tái)的社會(huì)技術(shù)管理實(shí)踐應(yīng)運(yùn)而生,這就是平臺(tái)工程。
根據(jù) CNCF 平臺(tái)工程白皮書(shū)(翻譯)的說(shuō)法:
分布式計(jì)算中的平臺(tái)是為多種用途提供通用支持能力和服務(wù)的層。平臺(tái)為獲取、使用和管理這些功能和服務(wù)提供一致的用戶體驗(yàn),包括 Web 門(mén)戶和頁(yè)面、特定于場(chǎng)景的代碼模板、可自動(dòng)化的 API 和命令行工具。
可能用一張圖更清楚:
圖片
這里說(shuō)的平臺(tái),大家公認(rèn)的是內(nèi)部開(kāi)發(fā)者平臺(tái)(Internal Developer Platform, IDP)。
這個(gè)平臺(tái)成為平臺(tái)團(tuán)隊(duì)與應(yīng)用團(tuán)隊(duì)新的分工界面之所在。團(tuán)隊(duì)之間的協(xié)作會(huì)調(diào)整為以下結(jié)構(gòu):
圖片
運(yùn)維團(tuán)隊(duì)的專家會(huì)變成賦能團(tuán)隊(duì),主要職責(zé)是將能力集成到平臺(tái)。原來(lái)許多手工的運(yùn)維工作,已經(jīng)在平臺(tái)上實(shí)現(xiàn),而相關(guān)的人則可能要進(jìn)入平臺(tái)研發(fā)團(tuán)隊(duì),負(fù)責(zé)將運(yùn)維工作抽想到平臺(tái)。當(dāng)然,可能也需要一個(gè)平臺(tái)產(chǎn)品經(jīng)理把控平臺(tái)的方向,這可能是原來(lái)運(yùn)維經(jīng)理的角色。
平臺(tái)隱藏了包括 Kubernetes 的基礎(chǔ)設(shè)施的復(fù)雜性,也將最佳實(shí)踐封裝,因而研發(fā)團(tuán)隊(duì)可以更輕松的按照業(yè)務(wù)需求構(gòu)建自己的基礎(chǔ)設(shè)施環(huán)境,又不必?fù)?dān)心違反了安全規(guī)定,或者是沒(méi)有遵守最佳實(shí)踐。研發(fā)團(tuán)隊(duì)可以通過(guò)平臺(tái)提供自助服務(wù)完成自己的大部分任務(wù),可以為自己的應(yīng)用”負(fù)責(zé)“,這與 DevOps 的原則相符。
那平臺(tái)工程中的”平臺(tái)“與之前的平臺(tái)的區(qū)別是什么?我覺(jué)得有幾個(gè)方面。
如果說(shuō) DevOps 是從敏捷開(kāi)發(fā)向運(yùn)維的延伸,那么平臺(tái)工程則是來(lái)自管理層對(duì)于 DevOps 的回應(yīng)。就像以前的 ITIL 一樣,現(xiàn)在可以從組織架構(gòu)的角度開(kāi)始設(shè)計(jì),而不必像 DevOps 那樣倒推改革。
現(xiàn)在我們?cè)賮?lái)看一下為什么是三位一體:
如前面所述,這三個(gè)概念有著許許多多不同的演繹,但是在本文我希望大家抓住各自的重點(diǎn),能夠體會(huì)到三者對(duì)我們這個(gè)行業(yè)的意義。
平臺(tái)工程是我們期望的一種狀態(tài),云原生是我們達(dá)到這個(gè)狀態(tài)的工具,而要實(shí)現(xiàn)這個(gè)狀態(tài),需要我們每個(gè)參與者永遠(yuǎn)保持 DevOps 的協(xié)作精神,這就是三位一體。

我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問(wèn)/技術(shù)咨詢/運(yùn)營(yíng)咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流