發(fā)布于:2021-01-11 13:39:30
0
91
0
什么是基礎(chǔ)架構(gòu)即代碼(IaC)?在DevOps Con上,我們與nubeGo的Emma Button討論了IaC,需要什么敏捷方法,最好的工作工具以及她對(duì)從開發(fā)領(lǐng)域進(jìn)入基礎(chǔ)架構(gòu)的人們的建議。
基礎(chǔ)設(shè)施即代碼(IaC)是DevOps團(tuán)隊(duì)的重要概念。在2019年DevOps大會(huì)的這次采訪中,艾瑪·巴頓(Emma Button)(nubeGo)討論了不僅應(yīng)在開發(fā)中使用敏捷方法,還應(yīng)在構(gòu)建IaC系統(tǒng)中使用敏捷方法。
JAXenter:今天,我正在與nubeGO的Emma Button談?wù)摶A(chǔ)架構(gòu)即代碼(IaC)。感謝您抽出寶貴時(shí)間與我們交談Emma!讓我們從一個(gè)簡單的問題開始:什么是基礎(chǔ)架構(gòu)即代碼?
艾瑪·巴頓(Emma Button):基礎(chǔ)架構(gòu)即代碼,是您定義基礎(chǔ)架構(gòu)資產(chǎn)所需的資源時(shí)。您用代碼編寫它們,然后使用基礎(chǔ)結(jié)構(gòu)供應(yīng)引擎來創(chuàng)建和配置這些資源。
JAXenter:您能告訴我們一些與DevOps的關(guān)系嗎?
艾瑪·巴頓(Emma Button):因此,如果您自動(dòng)創(chuàng)建資源并刪除人工操作元素,則有助于減少交付流程中的摩擦。您可以將基礎(chǔ)結(jié)構(gòu)作為代碼用作持續(xù)集成和持續(xù)交付管道的一部分。
基礎(chǔ)設(shè)施即代碼就像建立資源的基礎(chǔ),然后在該資源上構(gòu)建應(yīng)用程序。
JAXenter:隨著DevOps的它總是關(guān)于怎么你這樣做和如何你進(jìn)行這項(xiàng)工作。在將基礎(chǔ)架構(gòu)作為代碼工作時(shí),您還應(yīng)該記住并采用其他敏捷原則嗎?
艾瑪·巴頓(Emma Button):我在DevOps Con上的演講是關(guān)于我通過軟件工程學(xué)到的敏捷課程,以及我現(xiàn)在如何將它們應(yīng)用于基礎(chǔ)架構(gòu)即代碼。對(duì)我而言,最引人注目的是簡單性:盡可能少地達(dá)成最終目標(biāo)并最大化您不做的事情的行為。
對(duì)于IoC,我認(rèn)為這是重用代碼庫并咨詢外部注冊表,因此,如果有人已經(jīng)完成了您想做的事情,那么您可以利用他們的專業(yè)知識(shí)。您可以通過重用代碼來減少復(fù)雜性和重復(fù)項(xiàng)。
JAXenter:您對(duì)開發(fā)人員有什么建議嗎?
艾瑪·巴頓(Emma Button):我曾在DevOps Con上與幾位來自開發(fā)背景的人交談過。我給他們的建議是睜大你的眼睛。我們在基礎(chǔ)設(shè)施領(lǐng)域面臨的挑戰(zhàn)可能與您在開發(fā)中面臨的挑戰(zhàn)截然不同。
也就是說,創(chuàng)造力,及時(shí)性和重構(gòu)能力仍然面臨著相同的挑戰(zhàn)。挑戰(zhàn)的形狀相同,但對(duì)您的壓力可能有所不同。因此,優(yōu)秀的敏捷開發(fā)人員將學(xué)會(huì)檢查和適應(yīng)。因此,我們檢查并調(diào)整了我們的工具;我們檢查并調(diào)整我們的行為。
JAXenter:關(guān)于您提到的可重用代碼,有哪些工具?您如何選擇合適的工具?
艾瑪·巴頓(Emma Button):在nubeGO,我們使用Terraform。我們使用Terraform的原因是因?yàn)樗粡V泛采用。我們傾向于發(fā)現(xiàn),如果我們的客戶從一開始就走了,那它就是最快的工具。對(duì)于我們來說,Terraform是平臺(tái)無關(guān)的,因?yàn)槲覀冊谠浦泄ぷ?,因此我們需要能夠跨多個(gè)不同的云提供商以及內(nèi)部使用Terraform。
我今天討論的工具是可以與Terraform一起使用的工具,以將質(zhì)量灌輸?shù)侥龅墓ぷ髦小R虼耍瑔卧獪y試框架使用在Terraform之上的檢查測試來驗(yàn)證服務(wù)器是否處于正確狀態(tài)。
JAXenter:單元測試是您剛才提到的一個(gè)重要關(guān)鍵字。來自不同背景的開發(fā)人員進(jìn)行測試的方式是否有所不同?
艾瑪·巴頓(Emma Button):做單元測試沒有正確或錯(cuò)誤的方法,可以說,您將要在基礎(chǔ)架構(gòu)上進(jìn)行的那種測試可能并不是嚴(yán)格的單元測試。但是挑戰(zhàn)在于確保如何知道我的系統(tǒng)處于正確的狀態(tài)以便我繼續(xù)進(jìn)行?如何確保沒有犯明顯的錯(cuò)誤?
再次,這是關(guān)于軟件開發(fā)的挑戰(zhàn)與基礎(chǔ)架構(gòu)的挑戰(zhàn)如何非常相似的。因此,我們可以從大量運(yùn)行大量單元測試中吸取教訓(xùn),以獲得快速的反饋循環(huán)。我們也可以使用基礎(chǔ)結(jié)構(gòu)代碼來做到這一點(diǎn)。
作者介紹