DevOps和左移的三個小貼士
如果將DevOps應用在的應用程序生命周期中,它解決的問題很少。它用于自動化應用程序裝配線,是實現數字化轉型的強大工具。
用查爾斯?狄更斯的話說,“這是最好的想法,也是最壞的想法。”這指的是什么?DevOps以及它是如何被解釋的。
DevOps的最佳理念是基礎架構即代碼,即IaC。與手動構建應用程序環境不同,這是一個漫長且容易出錯的過程,IaC定義了在模板中構建環境的“方式”,然后使用模板定義自動構建該環境。
這以計算機速度而不是人類速度發生,而且同樣重要的是,每次都始終如一地完成,從而大大提高了應用程序質量。做得好,DevOps可以極大地提高應用程序的速度。
這種應用程序開發和部署的方法被稱為“左移”,因為它在應用程序生命周期的早期移動了后期開發任務。
然而,DevOps挑戰比比皆是
然而,雖然DevOps的基礎設施即代碼是它的最佳理念,但它也是——正如它通常被實施——是最糟糕的理念之一。
開發人員經常被告知他們應該負責創建IaC模板。這有一些邏輯。畢竟,應用程序的開發人員應該最了解其基礎設施需求,對吧?
另一方面,這也使開發人員負責了解生產網絡要求、大規模存儲配置和彈性資源管理。由于這種繁重的需求,可以公平地說,根據應用程序生產環境的復雜性,DevOps并不是靈丹妙藥。
然而,受左移口號的啟發,許多IT組織認為在應用程序生命周期的早期移動其他任務是有意義的。因此,開發人員開始負責測試。和安全。和補丁管理。
不幸的是,正如通常所追求的那樣,這些任務并未被視為“代碼”。也就是說,以前負責他們的小組將責任連同通常用于執行小組任務的手動清單一起傳遞給了開發人員。因此,開發人員在他們沒有特別專業知識的領域進行了大量的手動工作。
你猜怎么著?做某事的開發人員不會更快地完成任務,尤其是在主題專業知識較低的情況下。因此,DevOps方法的潛在速度通常仍然遠低于預期。
右移左移
那么,左移“作為代碼”方法的前進道路是什么?應用程序是否注定要陷入由不堪重負的開發人員執行的手動流程中?
一句話,沒有。但組織需要以正確的方式左移。以下是有關如何做到這一點的三個提示。
(1) 自動化所有任務
如果將基礎設施作為代碼進行是有意義的,那么將測試作為代碼進行、將安全作為代碼進行、將補丁管理作為代碼進行也是有意義的。換句話說,將DevOps的邏輯應用于生產路徑中的所有步驟。
當然,這意味著將開發技能應用于這些任務,這需要開發人員。期望主題專家(例如,QA工作人員)的個人資料發生變化,以納入編程經驗。這也意味著將每個任務自動化管理為自己的應用程序,并具有自己的生命周期管理。
(2) 將生產路徑視為自動化產品
擁有最快生產路徑的技術組織將整個過程視為一個集成產品,在其各個子步驟中實現自動化。這意味著中間步驟之間的自動切換和消除手動批準。我在看著你,變更控制委員會。
在現實世界中,大多數手動批準步驟都是自動勾選審查框的正式儀式。如果從一個步驟到另一個步驟的切換可以簡化為自動點頭,那么它也可以簡化為自動切換,并具有明確定義的異常處理。
這也意味著生產路徑需要將整體作為產品本身進行管理,并進行架構審查以確保所有自動化子系統相互配合。
如果這聽起來像是工作和投資,那你是對的。然而,如果沒有這個,生產路徑將保持緩慢,兩端的速度(通過Dev和Ops)在中間預訂相同的舊緩慢手動步驟。
(3) 更左移
雖然自動化所有任務(以及自動化整個流程)是很好的步驟,但如果易受攻擊或過時的代碼構成應用程序的基礎,那么確保良好的安全性仍然是一個挑戰。俗話說,垃圾進,垃圾出。
當已知漏洞或有人對其進行攻擊時,這些類型的安全漏洞會變得更加糟糕。隨之而來的是更新代碼庫并將更新投入生產的瘋狂爭奪。
當開發人員從一張白紙開始,直接從Internet下載庫和組件時,這個問題就很普遍。令人震驚的是,有多少基于容器的應用程序是使用從DockerHub下載的圖像構建的,盡管眾所周知,許多最流行的應用程序都包含過時和/或易受攻擊的代碼。
更好的方法是為開發人員提供準備好的代碼庫,這些代碼庫已知是最新的,并且評估為沒有漏洞。這方面的機制稱為模板、框架或加速器。本質上,開發人員將模板下載到首選IDE中,并從包含應用程序功能的安全代碼基礎開始。
應用程序更新完成后,將進入上述自動化過程。創建應用程序工件并在生命周期的不同階段移動,直到最終部署。
這種代碼衛生方法可以擴展到生命周期的其余部分,方法是讓一個進程位于特定應用程序管道之外以監控已公布的漏洞。如果發布了漏洞并提供了補丁,則會啟動應用程序構建和部署過程,該過程會自動更新相關工件并將其投入生產。
這避免了手動跟蹤每個應用程序包含哪些庫和組件。它還避免了與嘗試確保更新每個相關應用程序相關的危機管理,這不可避免地會遺漏一些并導致易受攻擊的應用程序永遠無法修復。
這種“進一步左移”的新興行業術語是安全軟件供應鏈,這種方法將在未來變得更加普遍,尤其是隨著越來越多的業務流程轉向數字機制。
事實上,DevOps既是一個好主意,也是一個壞主意,這取決于應用的方式。在應用程序生命周期上,它解決的問題很少。作為應用程序裝配線的一部分的自動化概念,它是實現數字化轉型的強大工具。