<ruby id="h6500"><table id="h6500"></table></ruby>
    1. <ruby id="h6500"><video id="h6500"></video></ruby>
          1. <progress id="h6500"><u id="h6500"><form id="h6500"></form></u></progress>

            持續集成之“自動(dòng)化部署”(2)

            發(fā)表于:2012-12-21來(lái)源:InfoQ作者:?jiǎn)塘?/small>點(diǎn)擊數: 標簽:持續集成
            對環(huán)境管理進(jìn)行版本控制,杜絕對生產(chǎn)環(huán)境的手工直接修改 聽(tīng)上去,對于配置文件、腳本等進(jìn)行版本管理的確是解決了運維部署的很多問(wèn)題。但如何對環(huán)

              對環(huán)境管理進(jìn)行版本控制,杜絕對生產(chǎn)環(huán)境的手工直接修改

              “聽(tīng)上去,對于配置文件、腳本等進(jìn)行版本管理的確是解決了運維部署的很多問(wèn)題。但如何對環(huán)境管理進(jìn)行版本控制呢?”Tom問(wèn)道。

              Joe想了想,說(shuō)道:“環(huán)境管理比較復雜。一般來(lái)說(shuō),環(huán)境包括幾個(gè)層次,包括硬件及網(wǎng)絡(luò )配置、操作系統、我們的應用程序所依賴(lài)的軟件堆棧及其配置、以及我們的應用程序運行時(shí)所需的數據及其配置。目前對我們來(lái)說(shuō),對于硬件及網(wǎng)絡(luò )配置、操作系統這兩層來(lái)說(shuō),有兩種方式進(jìn)行管理。一種是利用一些專(zhuān)用軟件進(jìn)行自動(dòng)化的遠程配置,即只要給機器加電,就可以通過(guò)一些技術(shù)對一臺機器進(jìn)行系統的安裝與配置。另一種是使用虛擬化技術(shù)來(lái)進(jìn)行系統配置管理。對我們現在的游戲平臺來(lái)說(shuō), 使用后者即可。只要將基本的環(huán)境做成虛擬機鏡像文件,并將其作為環(huán)境基線(xiàn)進(jìn)行版本管理。當然,由于鏡像通常較大,所以最好不要使用常見(jiàn)的版本控制工具(如subversion,Git等)進(jìn)行,而使用某種簡(jiǎn)單的機制即可。”

              Joe停了一下,看看大家沒(méi)有提問(wèn)的意思,于是接著(zhù)說(shuō)道:“至于基于其上的軟件堆棧及堆棧中各軟件的配置管理完全可以利用類(lèi)似于CfEngine,Puppet或Chef的工具進(jìn)行。這些軟件環(huán)境管理工具都提供某種領(lǐng)域專(zhuān)屬語(yǔ)言來(lái)描述軟件堆棧配置,并保存在文本文件中。這些工具一般通過(guò)服務(wù)器/客戶(hù)端的工作方式運行,客戶(hù)端向服務(wù)器發(fā)送請求,驗證本機器節點(diǎn)的軟件配置是否與服務(wù)器中的設置相符,如果不符,就會(huì )自動(dòng)更新。尤其重要的是,這些更新操作都是冪等的,即無(wú)論這些配置在該客戶(hù)機上執行多少遍,每次的結果狀態(tài)都是相同的。另外,它們通常能與版本控制工具集成。所以,只要將我們的軟件堆棧配置管理信息放到版本控制庫中,就可以同時(shí)管理數臺機器。”

              “oh, 對不起,Joe,我想打斷一下,”Tom問(wèn)道:“你能畫(huà)一個(gè)圖來(lái)解釋一下你剛才所說(shuō)的這種軟件環(huán)境配置管理工具嗎?”

              “當然沒(méi)問(wèn)題。”Joe拿起筆在白板上畫(huà)了一個(gè)Puppet的工作示意圖,如下圖所示。

              “看上去清楚多啦。”Tom笑道,“通過(guò)這種方式,我們就只需要將版本控制庫中保存的配置信息簽出到本地,進(jìn)行相應的修改,再提交到版本控制庫中,這種工具就會(huì )自動(dòng)幫我們完成必要的配置更新了。是這樣的嗎?”

              “對,”Joe點(diǎn)了點(diǎn)頭,說(shuō)道,“如果我們的部署腳本也是通過(guò)這種方式來(lái)做的,那么我們就根本沒(méi)有必要登錄到生產(chǎn)環(huán)境的機器上,進(jìn)行手工操作了。而且,Puppet還提供一種Try Run功能,可以進(jìn)行配置變更的模擬,讓你能夠對比一下變更前后的不同之處。”

              Tom說(shuō)道:“你說(shuō)的這些聽(tīng)上去都不錯。但并不是所有人都能夠修改生產(chǎn)環(huán)境的配置信息的。所以我們還是需要一個(gè)軟件平臺來(lái)管理上線(xiàn)的申請審批流程。”

              “在任何企業(yè)中,這種申請審批流程和生產(chǎn)環(huán)境變更的授權都是必要的,但這僅僅是審核流程的操作。而真正與軟件部署相同的具體操作都不應該在這種審批流程當中。”Joe回答道。

              Tom接過(guò)話(huà)來(lái),說(shuō)道:“嗯,這樣的話(huà),我們仍舊能夠做到:有權限的人才能真正修改生產(chǎn)環(huán)境的配置文件,同時(shí)達到了無(wú)人真正直接操作生產(chǎn)環(huán)境的目的,避免了手工誤操作帶來(lái)的問(wèn)題。”

              參加本次會(huì )議的測試人員和運維人員對這種做法產(chǎn)生了濃厚的興趣,并要求開(kāi)發(fā)人員給予配合,將目前游戲平臺的部署自動(dòng)化。Tom說(shuō)道:“這就是我們運維工作的一個(gè)方向。讓枯燥易出錯的重復性手工操作變成受控的自動(dòng)化,從而解放運維人員,讓我們可以關(guān)注于更加有價(jià)值的運行監控等工作中。”

              Alice說(shuō)道:“這看上去還是有一定的工作量啊。”

              “當然,我們可能需要做一些工作,但我想這些投入是值得的。”Joe回答道。“同時(shí),還需要各種角色之間更緊密的配合,而不是像之前那樣,通過(guò)一個(gè)代表上個(gè)世紀八十年代先進(jìn)技術(shù)的辦公自動(dòng)化平臺來(lái)描述部署上線(xiàn)步驟這類(lèi)關(guān)鍵的業(yè)務(wù)操作信息。”

              Tom也點(diǎn)了點(diǎn)頭,說(shuō):“嗯,應該使用版本控制方式。但我們還是需要一個(gè)上線(xiàn)審批的流程,只不過(guò),這個(gè)流程中不再保存上線(xiàn)步驟這類(lèi)與實(shí)際部署相關(guān)的業(yè)務(wù)信息,而只是為了部署人員的資格審核與信息周知的目標。”

              經(jīng)過(guò)一番討論,開(kāi)發(fā)、測試和運維團隊在這件事情上達成了一致,并按計劃開(kāi)始實(shí)施了。

              需要注意的是,他們似乎沒(méi)有談到數據管理。他們會(huì )遇到相關(guān)的問(wèn)題嗎?

            原文轉自:http://kjueaiud.com

            老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月
              <ruby id="h6500"><table id="h6500"></table></ruby>
              1. <ruby id="h6500"><video id="h6500"></video></ruby>
                    1. <progress id="h6500"><u id="h6500"><form id="h6500"></form></u></progress>