文章來源地址http://www.zghlxwxcb.cn/news/detail-760012.html
1.?部署環(huán)節(jié)
1.1.?部署軟件是指將軟件包送到它們需要運行的地方的行為
1.2.?移動應(yīng)用的部署與核反應(yīng)堆的部署不同,但同樣的基本原則都適用
1.3.?自動部署
1.3.1.?使用腳本而不是手動步驟來部署軟件
1.3.2.?自動部署的可預(yù)測性更高,因為腳本的行為是可以重復(fù)的,并且有版本控制
1.3.3.?當事情出錯時,運維人員能夠推理出部署行為
1.3.4.?腳本比人更不容易犯錯,而且它們消除了在部署過程中去手動調(diào)整系統(tǒng)、登錄計算機或復(fù)制軟件包的誘惑
1.3.5.?高度發(fā)展的自動化催生了持續(xù)交付
1.3.5.1.?通過持續(xù)交付,人力被完全從部署環(huán)節(jié)中移除
1.3.5.2.?打包、測試、發(fā)布、部署,甚至展開環(huán)節(jié)都是自動化的
1.3.6.?建議用現(xiàn)成的工具來自動化你的部署操作
1.3.6.1.?Puppet、Salt、Ansible和Terraform等現(xiàn)成的解決方案可以與現(xiàn)有的工具集成,并且它們是專門為了自動化部署而設(shè)計的
1.3.7.?只需盡力通過自動化周圍的一切來縮小阻斷任務(wù)的邊界
1.4.?部署的原子性
1.4.1.?安裝腳本通常涉及多個步驟,不要假設(shè)每一步都能成功執(zhí)行
1.4.2.?應(yīng)使部署要么全部完成要么什么都沒做(即原子性)
1.4.3.?使部署原子化的最簡單方法之一是在與舊版本不同的位置上安裝軟件,不要覆蓋任何東西
1.4.4.?在新的位置安裝軟件包還有一個好處,那就是回滾將變得更加容易
1.4.4.1.?只需再次指向舊的版本
1.4.5.?同一軟件的不同版本可以在同一臺計算機上同時運行
1.5.?獨立地部署應(yīng)用
1.5.1.?順序部署
1.5.1.1.?一個應(yīng)用程序的部署需要先升級另一個應(yīng)用程序
1.5.1.2.?這是在有許多應(yīng)用程序或服務(wù)相互通信的軟件中常見的問題
1.5.1.3.?順序部署的需求會減慢部署速度,因為應(yīng)用程序必須相互等待
1.5.2.?務(wù)必避免順序部署的需求
1.5.3.?構(gòu)建可獨立部署的應(yīng)用程序
1.5.3.1.?不依賴順序部署的軟件必須向后和向前兼容
1.5.3.2.?通信協(xié)議必須繼續(xù)允許較新和較舊的版本相互操作
2.?展開環(huán)節(jié)
2.1.?一旦新的代碼被部署了,你就可以解開它(也就是展開)
2.2.?一下子把所有東西都換成新的代碼是有風(fēng)險的
2.2.1.?再多的測試都不會消除潛在的錯誤,而且一次性向所有的用戶展開代碼會同時對每個人造成損害
2.3.?特性開關(guān)、金絲雀部署和藍綠部署都只面向一部分用戶展開代碼,并在出現(xiàn)問題時提供緩解機制
2.4.?系統(tǒng)監(jiān)控
2.4.1.?增加或減少的決定仍然是由人們參考日志和系統(tǒng)指標而做出的
2.4.2.?當代碼被提交時,你的工作還沒有完成
2.4.3.?當代碼被展開時,它仍然沒有完成
2.5.?特性開關(guān)
2.5.1.?feature flag
2.5.2.?特性切換或代碼分割
2.5.3.?允許開發(fā)人員控制新代碼何時發(fā)布給用戶
2.5.4.?可以是“開”和“關(guān)”的布爾型的值、允許列表、基于百分比的斜坡,甚至是小型函數(shù)
2.5.5.?基于百分比的斜坡允許開發(fā)者為更大范圍的用戶慢慢打開該特性,通常從公司擁有的測試賬戶開始,然后在進行基于百分比的增量發(fā)布之前,先向單個用戶傾斜
2.5.6.?函數(shù)根據(jù)輸入的數(shù)動態(tài)地確定開關(guān),通常在用戶請求時就傳入
2.5.7.?如果可能的話,隔離與特性開關(guān)相關(guān)聯(lián)的數(shù)據(jù),在所有的開關(guān)狀態(tài)下測試你的代碼,并編寫腳本來清理回滾的特性數(shù)據(jù)
2.5.8.?請確保清理那些已經(jīng)被完全淘汰或不再使用的舊特性開關(guān)
2.5.9.?清理特性開關(guān)就像重構(gòu)一樣,應(yīng)該漸進地、適時地進行清理
2.5.10.?大多數(shù)的特性開關(guān)是由人類控制的
2.5.11.?特性開關(guān)有時被用于A/B測試,這是一種測試用戶對新特性反應(yīng)的技術(shù)
2.5.11.1.?如果以具有統(tǒng)計意義的方式對用戶進行分組,用特性開關(guān)進行A/B測試是可行的
2.5.11.2.?除非開關(guān)分發(fā)系統(tǒng)為你創(chuàng)建水桶測試用到的桶,并由數(shù)據(jù)科學(xué)家運行你的實驗,否則不要嘗試用特性開關(guān)進行A/B測試
2.6.?熔斷器
2.6.1.?是二進制的(開/關(guān))、永久性的,而且是自動化的
2.6.2.?熔斷器是一種特殊的特性開關(guān),由運維事件(如延遲的峰值或異常)控制
2.6.3.?熔斷器用來防止性能下降
2.6.3.1.?如果超過了延遲的閾值,某些特性可以被自動禁用或限制速率
2.6.3.2.?如果日志顯示出異常行為——程序異常或日志詳細程度的飆升,也可以觸發(fā)熔斷
2.6.3.3.?熔斷器還可以防止永久性損壞
2.7.?并行的服務(wù)版本梯隊
2.7.1.?將新版本的網(wǎng)絡(luò)服務(wù)與舊版本一起部署是具有可行性的
2.7.2.?平行部署可以讓你緩慢地升級,以降低風(fēng)險,并在出錯時快速回滾
2.7.3.?兩個版本的應(yīng)用程序都必須能很好地相互配合
2.7.4.?所有模式都必須貫徹向后和向前兼容
2.7.5.?金絲雀部署和藍綠部署是兩種非常常見的并行部署策略
2.7.6.?金絲雀部署用于處理高流量并會部署到大量實例的服務(wù)
2.7.6.1.?一個新的應(yīng)用程序版本被首先部署到一組受限的計算機上,全部用戶中的一個小的子集會被路由到這個金絲雀版本
2.7.7.?藍綠部署指的是運行兩個不同版本的應(yīng)用程序:一個是主動的,一個是被動的
2.7.7.1.?新版本被部署到被動環(huán)境中,當它準備好時,流量被切換到新版本,它就變成了主動的,而以前的版本則變成了被動的
2.7.7.2.?與金絲雀部署不同的是,流量的切換是原子化的,藍色和綠色環(huán)境盡可能地保持一致
2.7.7.3.?在云環(huán)境中,一旦版本被認為是穩(wěn)定的,被動環(huán)境通常會被銷毀
2.7.7.4.?當流量不容易被劃出子集或者無法并行運行不同的版本時,藍綠部署就派上了用場
2.7.7.5.?與金絲雀部署不同的是,每個環(huán)境必須能夠處理100%的用戶流量
2.8.?摸黑啟動
2.8.1.?摸黑啟動(有時被稱為影子流量)將新的代碼暴露在真實的流量中,而不使其對終端用戶可見,即使代碼是壞的,也沒有用戶受到影響
2.8.2.?摸黑啟動的軟件其實仍然啟用了,代碼也被調(diào)用了,只是結(jié)果被丟掉了
2.8.3.?摸黑啟動可幫助開發(fā)者和運維人員在生產(chǎn)環(huán)境中了解他們的軟件,對用戶的影響最小
2.8.4.?每當你發(fā)布特別復(fù)雜的變化時,就可以利用摸黑啟動的優(yōu)勢
2.8.5.?這種模式對于驗證系統(tǒng)的遷移特別有效
2.8.6.?在摸黑啟動模式下,應(yīng)用程序的代理位于實時流量和應(yīng)用程序之間
2.8.7.?某個系統(tǒng)在暗中讀取模式下運行時,可能使用與生產(chǎn)系統(tǒng)相同的數(shù)據(jù)存儲
2.8.8.?由于同一請求有兩次操作,一次在生產(chǎn)系統(tǒng),一次在影子系統(tǒng),你應(yīng)該注意避免與重復(fù)相關(guān)的錯誤
文章來源:http://www.zghlxwxcb.cn/news/detail-760012.html
到了這里,關(guān)于讀程序員的README筆記11_軟件交付(下)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!