哪吒:猪八戒十年DevOps演进之路
前言
時間先回退到2011年,那時候我剛加入豬八戒,加入公司之前我還不知道svn、git是什么東西,連發(fā)布代碼也是用的最傳統(tǒng)的FTP上傳方式。而早在2009年,來自Flickr員工在一場會議中所揭露了如何改善Dev和Ops的合作,達到了單日10次發(fā)布的高速度,催生了后來的DevOps運動。(題外話FTP的方式幾秒就能發(fā)一次代碼)所以DevOps到底解決了什么問題呢?接下來結(jié)合豬八戒的不同階段給大家介紹一下我們的DevOps演進之路。
豬八戒devops演進之路
1、初創(chuàng)期
雖然2009年就提出了DevOps,但國內(nèi)很少人聽說過這個名稱,但是這并不代表我們沒有去解決dev和ops的協(xié)作問題。
那一年豬八戒網(wǎng)僅有4臺物理機,托管在某IDC機房,總的工程數(shù)20左右,均為PHP工程,技術(shù)人員20左右,由于迭代的頻率很高,每天發(fā)布30+次,公司僅有2個運維人員,所以如果沒有自動化的方式是很難完成這么高頻率的發(fā)布的,所以有了公司第一版的“DevOps”。
如下圖:
上圖的流程特別簡單,使用svn管理代碼,有兩個固定的分支,一個用于發(fā)布到測試環(huán)境,一個用于發(fā)布到線上環(huán)境。研發(fā)提交代碼后,通過svn自帶的hooks功能配合rsync將代碼分發(fā)到對應(yīng)的服務(wù)器,由于當時所有應(yīng)用都是部署在一臺物理機,所以只需要全量pull即可完成發(fā)布。通過這套簡單的流程即可實現(xiàn)研發(fā)合并并提交代碼即可發(fā)布上線。解決了快速發(fā)布的問題。
?
2、業(yè)務(wù)增長期
時間到了2013年,業(yè)務(wù)也快速增長服務(wù)器、應(yīng)用、研發(fā)人員都出現(xiàn)了很大規(guī)模的增長,伴隨著很多問題也出現(xiàn)了,隨意的發(fā)布讓線上環(huán)境變得很不穩(wěn)定,配置文件變更不當導致全站500頻頻出現(xiàn)。虛擬機的引入也讓之前的發(fā)布方式變得難以支持。所以此時急需對之前的發(fā)布方式進行升級,來滿足現(xiàn)階段的需求。
如下圖:
這個階段最大的變化是大量使用虛擬化,并對應(yīng)用進行了獨立部署,同時為了控制發(fā)布取消了svn hooks引入了SYN系統(tǒng)(我們內(nèi)部取名)。
SYN主要解決以下幾個問題
1、權(quán)限控制(可以控制到工程、環(huán)境、發(fā)布時間)
2、引入exclude_list來解決配置文件變更的問題
3、工程代碼映射關(guān)系(CMDB1.0維護工程和機器的關(guān)系)
4、代碼分發(fā)
通過SYN系統(tǒng)的引入,線上的穩(wěn)定性開始變好,配置文件研發(fā)提交申請由運維人員統(tǒng)一進行維護,出現(xiàn)配置異常的情況也大幅下降,然而發(fā)布的效率也相對之前減少了很多。
3、多語言
時間到了2015年,業(yè)務(wù)規(guī)模和人員規(guī)模再次出現(xiàn)了大幅增長,開發(fā)語言也由以前的純PHP到大量引入JAVA語言,顯然之前的SYN系統(tǒng)已經(jīng)不能滿足需求。這時我們開始引入Jenkins來解決CI的事情。其他結(jié)構(gòu)基本沒有多大的變化。
如下圖:
我們繼續(xù)沿用了之前的SYN系統(tǒng)來控制權(quán)限,但是CI部分全部交給了Jenkins,這個階段我們的CMDB也完成了代碼、工程、資源的100%關(guān)聯(lián)。所以CD部分也變得非常方便,有一個短暫的階段為了解決多部門聯(lián)調(diào)的問題,出現(xiàn)了10套測試環(huán)境,得益于CMDB信息完善以及一些自動化的能力,所以在資源足夠的情況下可以很快速的完成一套環(huán)境的搭建。
4、微服務(wù)、容器
時間到了2016年,這個時候公司也引入了很多大廠的大牛,微服務(wù)、容器、DevOps也進入了我們世界,于是就有了長達2年的DevOps研發(fā)之路。
先看一個圖:
這種架構(gòu)我相信了解過DevOps的都不會陌生,這里我重點介紹3個不一樣的地方。
(1)基于JIRA的研發(fā)流程管控。通過JIRA管理研發(fā)流程,發(fā)布的時候嚴格校驗狀態(tài),確保所有發(fā)布均符合研發(fā)規(guī)范。
(2)SDL和流水線結(jié)合(DevSecOps),從創(chuàng)建工程的安全評審,到每次提交代碼的自動掃描,再到發(fā)布的安全測試,確保每一次發(fā)布的代碼都是安全的。
(3)豬八戒容器云,完美實現(xiàn)了流水線和多個K8S集群的封裝,解決了跨機房部署等問題,目前豬八戒網(wǎng)90%的工程均運行在容器中,較之前使用虛擬機部署減少資源60%以上,大幅減少了IT成本,同時服務(wù)發(fā)現(xiàn)、滾動發(fā)布、動態(tài)擴容等也讓業(yè)務(wù)更加穩(wěn)定。
附容器云項目核心組件(如果大家對容器云感興趣可以在評論區(qū)留言):
目前我們的流水線每天支持業(yè)務(wù)發(fā)布150+次,發(fā)布成功率99.8%+,完成一次從測試環(huán)境到線上發(fā)布平均耗時595s。
?
5、一站式研發(fā)平臺
DevOps只是研發(fā)過程中的一部分,所以我們需要有一套新的平臺來解決工程的全生命周期管理。去年10月份我們開始以需求為出發(fā)點,圍繞工程全生命周期管理的平臺打造。底層架構(gòu)和上面的沒有什么區(qū)別,只是對產(chǎn)品做了大量減法,讓產(chǎn)品的用戶體驗更好,下面從功能角度簡單介紹一下我們的一站式研發(fā)平臺。
(1)重新定義工程類型,對歷史所有工程進行盤點最終梳理出6大類型便于研發(fā)準確的創(chuàng)建工程。根據(jù)類型不同最小化的讓用戶輸入信息。
(2)本著誰定義,誰負責的DevOps理念,一站式研發(fā)平臺把所有權(quán)限交給了工程負責人。工程負責人可以完成配置、發(fā)布,接收告警等所有工程管理配置功能。
(3)需求發(fā)布
前面已經(jīng)提到,我們對研發(fā)流程管控是較為嚴格的,任何需求的發(fā)布都需要經(jīng)過嚴格的流程審批,每個流程可以發(fā)布的內(nèi)容也是嚴格限制的。為此我們引入需求管理,把每次交付串聯(lián)起來。
(4)技術(shù)架構(gòu)
一站式研發(fā)平臺圍繞項目全生命周期,以場景化的方式把可能用到的研發(fā)工具串聯(lián)起來,各個功能仍然由不同的子系統(tǒng)完成。整體架構(gòu)如下圖。
?
對于云原生的一些看法
我個人是比較擁抱云的,特別是云原生,我們目前業(yè)務(wù)雖然都在云上,但是全都是使用的云的基礎(chǔ)設(shè)施,其他服務(wù)全都是內(nèi)部團隊在做,從投入的角度來說確實很大,而且期間也不乏走了很多彎路,我也聽到很多關(guān)于擁抱云原生應(yīng)用后的一些擔憂,確實有利有弊,自建對于技術(shù)團隊來說更加靈活因為技術(shù)相對可控,一旦擁抱云就會有很多限制,畢竟云上都是通用能力,如果有大量定制化的需求很難得到滿足。另外如果企業(yè)已經(jīng)投入了大量的成本有一套自有的能力,上云短期也會有很大的適應(yīng)、改造和資金成本。
引用孫子兵法開篇的第一句話“兵者,國之大事,死生之地,存亡之道,不可不察也”。是否擁抱亦是如此。
本篇文章主要是整體介紹,不涉及過多技術(shù)實現(xiàn)細節(jié),如果各位對哪方面感興趣可以在文末留言,后續(xù)我們的技術(shù)大牛輸出相關(guān)技術(shù)細節(jié)文章。
?
- EOF -
想要加入中生代架構(gòu)群的小伙伴,請?zhí)砑尤汉匣锶?strong>大白的微信
申請備注(姓名+公司+技術(shù)方向)才能通過哦!
技術(shù)人成長精彩文章推薦
阿里高級技術(shù)專家宋意:平凡人在阿里十年的成長之旅
RocketMQ 大神丁威親述參與開源社區(qū)的方式
多隆:從工程師到阿里巴巴合伙人
為什么說IT科技公司應(yīng)該留住35歲員工?
工程師的基本功是什么?如何練習?聽美團技術(shù)大咖怎么說
美團技術(shù)專家云鵬:寫給工程師的十條精進原則!
找CTO杜仲:再談中年危機和應(yīng)對策略
阿里合伙人范禹:常掛在阿里技術(shù)人嘴邊的四句土話
Erik Dietrich:二十年的編程,教會我的五件事!
支付寶研究員兼OceanBase總架構(gòu)師楊傳輝:我在數(shù)據(jù)庫夢之隊的十年成長路
Mobvista首席架構(gòu)師蔡超:工作感悟之失敗與成功,我的8點總結(jié)
奈學教育CEO孫玄:成為一個有情懷的工程師,我的12點思考
Netstars CTO陳斌:架構(gòu)師的成長之路
阿里技術(shù)專家麒燁:修煉測試基本功
左耳朵耗子:程序員如何把控自己的職業(yè)?
阿里6年,我的技術(shù)蛻變之路!
程序員管理思維修煉,只需要反復閱讀本篇
“教授”洪強寧和他穿越的技術(shù)江湖
大神手把手教你投身技術(shù)18年而沒有中年危機的秘訣
阿里合伙人程立:阿里15年,我撕掉了身上兩個標簽
CTO 技術(shù)管理的“三板斧”
技術(shù)管理者必備管理模板
張一鳴:優(yōu)秀年輕人的五個特點
技術(shù)團隊的工程師文化:效率與價值
美團大咖:程序員35歲前應(yīng)做好的技術(shù)積累
史海峰:萬字長文剖析技術(shù)人如何成長
? ?END ? ?? #技術(shù)人必備#點個在看,讓更多人看見
總結(jié)
以上是生活随笔為你收集整理的哪吒:猪八戒十年DevOps演进之路的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Depth-aware CNN
- 下一篇: pytorch自定义数据集DataLod