<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 193,  comments - 520,  trackbacks - 0

    一、我們要解決的問題

    無論是什么樣的解決方案,一定要牢記我們要解決的問題是什么,切不能將解決方案當(dāng)做問題本身。具體到過程改進(jìn),不管是何種方式的改進(jìn),它們所要解決的問題永遠(yuǎn)只有一個(gè):縮短從產(chǎn)品想法到可用軟件之間的時(shí)間周期。自動(dòng)化發(fā)布正是如此,如果軟件發(fā)布只做一次,我們說根本不需要自動(dòng)化,但如果三次以上,那么軟件開發(fā)的黃金法則DRY就必須遵守,讓時(shí)間真正用到開發(fā)當(dāng)中去。

     

    二、與發(fā)布相關(guān)的問題

    所謂自動(dòng)化只不過是將原先手工做的工作謙讓給機(jī)器做,所以自動(dòng)化之前一定要先清楚與發(fā)布相關(guān)的問題有哪些,即使不自動(dòng)化,這些工作也一個(gè)也不能少:

    1. 應(yīng)用程序如何打包? 發(fā)布包能否追蹤到SVN版本號(hào)?
    2. 對(duì)目標(biāo)機(jī)器環(huán)境有什么樣的要求?
    3. 配置信息是否需要根據(jù)目標(biāo)機(jī)器信息做出調(diào)整?
    4. 應(yīng)用程序如何安裝和啟動(dòng)?
    5. 應(yīng)用程序啟動(dòng)后如何切流量?
    6. 應(yīng)用程序如何升級(jí)? 舊版本程序數(shù)據(jù)如何遷移?
    7. 升級(jí)過程中和結(jié)束后如何切流量?
    8. 應(yīng)用程序如何卸載?

     

    三、我們的方案

    李安的少年Pi正在狂刷票房,我們的自動(dòng)化發(fā)布方案也要跟上潮流:Puppet+CI我們的少年Pi

    Ø 使用CI自動(dòng)化打包,追蹤每個(gè)發(fā)布包的SVN版本;

    Ø 使用Puppet管理發(fā)布包、目標(biāo)機(jī)器環(huán)境、應(yīng)用程序配置信息以及應(yīng)用程序線上生命周期;

    Ø 使用伽利略系統(tǒng)提供應(yīng)用程序的命名服務(wù)和進(jìn)行流量切換。

    現(xiàn)在應(yīng)用程序的發(fā)布需要兩步:CI一鍵打包、puppet指定應(yīng)用程序版本SVN提交。




     

    四、具體方案

    具體方案也就是如何解決與發(fā)布相關(guān)八個(gè)問題的過程。

    1.         如何安裝、升級(jí)和卸載應(yīng)用程序

    我們使用操作系統(tǒng)原生包管理系統(tǒng)來安裝、升級(jí)和卸載應(yīng)用程序,我們的應(yīng)用程序打出RPM二進(jìn)制包。免安裝,所有機(jī)器自帶,綠色的,有機(jī)的。

    打包:rpm -ba ./team_member-1.spec

    安裝:rpm –ivh team_ member-2.0.1-48.x86_64.rpm

    升級(jí):rpm –U team_ member-2.0.1-49.x86_64.rpm

    卸載:rpm –e team_ member-2.0.1-48.x86_64.rpm

    程序升級(jí)前要停舊版本服務(wù)怎么辦?舊版本數(shù)據(jù)要做處理怎么辦?RPM已經(jīng)幫我們料理好這一切,只要寫出spec文件,剩下的交給我們。盡情的插入吧:


     

    2.         如何管理目標(biāo)機(jī)器環(huán)境和應(yīng)用配置信息

    應(yīng)用程序已經(jīng)打好rpm包了,但這還不夠,應(yīng)用程序發(fā)布到哪臺(tái)機(jī)器上?應(yīng)用程序?qū)δ繕?biāo)機(jī)器有什么要求?發(fā)布時(shí)需要修改哪些配置和參數(shù)?實(shí)際發(fā)布如何執(zhí)行,難道需要登陸到每臺(tái)目標(biāo)機(jī)器運(yùn)行rpm命令嗎?

    我們使用Puppet來搞定這一切,Puppet是現(xiàn)在應(yīng)用第一的devops工具,它通過master/agent的工作模式管理機(jī)器。我們通過聲明來控制我們的機(jī)器達(dá)到目標(biāo)狀態(tài)。同時(shí),所有puppet文件全部在SVN里,所有對(duì)機(jī)器的修改全部codereview和可審計(jì)。

     


    如何管理應(yīng)用程序發(fā)布到哪臺(tái)機(jī)器上?在回答這個(gè)問題前我們必須將應(yīng)用程序在線上的生命周期再進(jìn)行一次封裝。


    應(yīng)用程序TeamMember被我們封裝成一個(gè)puppet module,配置文件和參數(shù)被封裝在對(duì)應(yīng)templatesfiles里,每次發(fā)布前都要修改配置文件和傳遞不同的參數(shù)?out了吧,puppet幫你傳參搞定:


    Teammember.conf文件內(nèi)容:


    封裝完成后的效果是這樣的:


    最后在管理部署的site.pp文件里聲明一下,應(yīng)用程序TeamMember2146版本就被自動(dòng)部署到10.128.34.141.test.back.shequ這臺(tái)機(jī)器上了,我們后續(xù)的工作也就是維護(hù)這個(gè)site.pp文件了,所有應(yīng)用程序的部署信息都在SVN被集中管理起來:


    登陸到每臺(tái)目標(biāo)機(jī)器運(yùn)行rpm命令?No!現(xiàn)在TeamMember已經(jīng)被封裝,我們修改完畢site.pp并提交后,puppet就自動(dòng)執(zhí)行命令了,要不怎么說是自動(dòng)化呢。(現(xiàn)在puppet默認(rèn)在agent每半小時(shí)同步一次,但同時(shí)支持馬上觸發(fā)執(zhí)行)。

     

    3.         如何追蹤每次發(fā)布的SVN版本號(hào)

    我們使用CI進(jìn)行應(yīng)用程序的打包,將build號(hào)作為包命名的一部分:


     

    4.         如何在發(fā)布過程中切換流量

    這是另外一個(gè)很大的話題,參見伽利略計(jì)劃。

     

    五、下一步工作

    使用CI將環(huán)境的自動(dòng)化部署與自動(dòng)化測(cè)試串聯(lián)起來,搭建起整個(gè)研發(fā)流程自動(dòng)化平臺(tái):


     

    六、小結(jié)

    沒有銀彈,自動(dòng)化所做的只是將之前手工工作交給計(jì)算機(jī)完成,需要做的工作一個(gè)都不能少,此外,我們還要多做一些封裝或腳本工作,但是,當(dāng)我們需要重復(fù)做這些事情的時(shí)候,價(jià)值就出現(xiàn)了。我們的目標(biāo)永遠(yuǎn)是縮短從產(chǎn)品想法到可用軟件之間的時(shí)間周期。讓時(shí)間真正用到開發(fā)當(dāng)中去。



    http://www.tkk7.com/ronghao 榮浩原創(chuàng),轉(zhuǎn)載請(qǐng)注明出處:)
    posted on 2012-12-14 15:54 ronghao 閱讀(2717) 評(píng)論(1)  編輯  收藏 所屬分類: 工作日志

    FeedBack:
    # re: 少年P(guān)i的奇幻漂流-我們的后臺(tái)自動(dòng)化發(fā)布方案
    2012-12-17 12:28 | 單人操作
    好吧我也在漂泊中  回復(fù)  更多評(píng)論
      
    <2012年12月>
    2526272829301
    2345678
    9101112131415
    16171819202122
    23242526272829
    303112345

    關(guān)注工作流和企業(yè)業(yè)務(wù)流程改進(jìn)。現(xiàn)就職于ThoughtWorks。新浪微博:http://weibo.com/ronghao100

    常用鏈接

    留言簿(38)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    常去的網(wǎng)站

    搜索

    •  

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 我要看免费的毛片| baoyu122.永久免费视频| 亚洲美女免费视频| 国产亚洲人成网站观看| 丰满妇女做a级毛片免费观看| 国产高清视频在线免费观看| 亚洲熟女综合色一区二区三区| **一级一级毛片免费观看| 亚洲av无码国产精品夜色午夜 | 日本最新免费不卡二区在线| 亚洲噜噜噜噜噜影院在线播放| 最近在线2018视频免费观看| 亚洲国产综合在线| 亚洲免费综合色在线视频| 国产成+人+综合+亚洲专| 在线a毛片免费视频观看| 亚洲AV日韩综合一区| 四虎永久免费观看| 黄色一级视频免费观看| 中文字幕精品亚洲无线码二区 | 青青免费在线视频| 国产精品亚洲产品一区二区三区| 国产黄片不卡免费| 久久亚洲AV成人无码电影| 国产精品免费精品自在线观看| 亚洲中文字幕久久无码| 亚洲 综合 国产 欧洲 丝袜| www一区二区www免费| 久久久久亚洲精品天堂| 女人张开腿给人桶免费视频| 噜噜综合亚洲AV中文无码| 亚洲精品无码久久久| 桃子视频在线观看高清免费视频| 亚洲乱码无限2021芒果| 免费永久看黄在线观看app| 国产日韩AV免费无码一区二区三区 | 三上悠亚电影全集免费| 亚洲美女自拍视频| 成人网站免费观看| 久久久久久av无码免费看大片| 亚洲精品电影在线|