文章摘要: 這就是為什麼手動測試在DevOps流程中會不可避免地成為瓶頸所在雲環境讓DevOps團隊能夠為分配基礎設施建立自助服務方法——這意味著他們不需要等待分配資源
DevOps是近年來推動技術進步的動力。DevOps為我們提供了一個進入未來的通道,在那裏,軟件技術始終保持最新,一切都可以在眨眼之間完成載入,你再也不會遇到另一個應用程式故障。這怎麼可能?密切的團隊溝通、快速反饋和關鍵流程的自動化讓DevOps團隊能夠不斷創新,導致傳統IT看起來極其笨重而繁瑣。今天的軟體公司已經到了做出抉擇的時候:「採用DevOps,或慢慢死去。」
在進一步討論這個話題之前,先讓我們澄清一下DevOps的概念。DevOps是一種軟體交付的整體方法,它統一了軟件開發(Dev)和軟體運營(Ops)。它涉及軟體工程各階段的自動化和更短的開發週期。Netflix是成功應用DevOps的最著名的公司之一——它能夠通過無處不在的自動化來支援公司的快速增長,包括故障自動化(一種名為「Chaos Monkey」的工具通過定期隨機關閉伺服器例項來測試Netflix應用程式的穩定性)。
話雖如此,DevOps仍然存在一些問題——主要與自動化流程、基礎設施不足以及計算能力不足有關。所幸的是,在標記化的基礎設施市場、自動化GRID和人工智慧的幫助下,有很多專案可用於解決某些DevOps所面臨的挑戰。在本文中,我們將詳細描述它們並將它們與非區塊鏈解決方案進行比較。
DevOps與傳統IT:感受差異
採用DevOps的好處包括:處理安全問題所花費的時間將減少50%、故障恢復速度將提高24倍、變更故障率將降低3倍。此外,當今最具適應性和發展最快的科技公司正在使用DevOps來達到接近「隨需速度(speed of need)」的目標。他們可以快速獲得產品反饋,並以最小的延遲滿足新出現的需求。
DevOps究竟與用於建立大多數現有網站的傳統IT模型有何不同?
專注的跨職能團隊
任何一家採用DevOps的公司都由專門的跨職能團隊而不是以技能為中心的孤島(獨立部門,它們之間沒有進行充分的溝通)組成。在傳統的IT環境中,由三四個孤島輪流開發新功能,有時候出現返工,需要將功能回退給上一個孤島。但DevOps團隊是自給自足的,它們由專注於一個應用程式的開發人員、測試人員、運營人員和業務分析人員組成。這樣一個跨職能的團隊可以在不向其他人推卸責任的情況下處理新功能。在準備好進入部署階段時,工作就算完成了,因此不會在交接上浪費時間。根據1/4-2-20法則(每四分之一的完成時間,可以讓生產效率提升2倍,並減少20%的成本),週期時間每減少25%,生產力就會翻倍,並減少20%的運營費用。
頻繁的小批量交付
DevOps適用於頻繁的小批量交付,而不是每年進行幾次大型的釋出。從DevOps的角度來看,大批量風險太大、太複雜、難以協調,而小批量可以進行必要的全面測試。如果出現任何問題,可以迅速解決。除此之外,頻繁釋出小版本可以更好地響應客戶的需求。
自動化
DevOps文化傾向於提倡自動化,因為這樣可以讓團隊處理創造性任務而不只是常規任務。系統自動構建和測試程式碼,並通過管道傳遞給消費者(已經通過測試)。不過需要注意的是,完全自動化不是必需的。自動化水平取決於每個團隊的流程和痛點,過度自動化可能導致不理想的結果。爲了達到完美的平衡,每個團隊應評估自己的需求,找出瓶頸,並確定優先順序——遺憾的是,並不存在適合所有需求的通用方案。
採用DevOps將會面臨的挑戰
如果DevOps是一種可以帶來競爭優勢的方法,為什麼不是所有人都採用它?它已經存在好幾年了,首次出現在2010年,而2018年的情況如下:只有30%的軟體公司宣佈完全(17%)或幾乎完全(13%)引入DevOps,僅22%剛剛開始向這種方法過渡。
當然,最關鍵的是整個公司的大規模心態轉變——從管理層到入門級員工。這就是為什麼剛開始引入DevOps會很難以及成功完成實施會更難。大多數企業的開發和運營團隊都試圖實現相反的目標:鼓勵前者進行創新,鼓勵後者保持正常執行時間和連續性。要消除二者之間的摩擦並讓他們組合在一起並非易事。這就是為什麼公司管理層應該通過引入面向協作的目標和促進跨職能培訓來轉向DevOps。它將幫助Dev和Ops超越他們通常的職責範圍,並意識到他們都處在同一個團隊中。
是什麼阻止DevOps滲透到整個行業?
除了企業文化的轉變,DevOps的採用受到了一些不可避免的功利問題的阻礙,這些問題與基礎設施、同步和自動化流程有關。沙盒專家Quali進行的調查表明,阻礙引入DevOps的主要障礙是公司文化(14%)、測試自動化挑戰(13%)、遺留基礎設施(12%)、應用程式複雜性(11%),以及預算限額(11%)。
自動化挑戰
測試自動化是DevOps的基石之一:它讓持續整合成為可能,並節省了團隊的時間,讓他們可以專注於更具創造性的工作。測試旨在檢查一段程式碼是否按預期工作,以及它是否滿足所有的技術或業務要求。有各種各樣的測試型別,這就是為什麼手動測試在DevOps流程中會不可避免地成為瓶頸所在。雖然測試自動化需要額外的努力,但絕對是值得的。對於FinTech之類的解決方案或電子商務網站等應用程式來說尤其如此——即使最小的停機時間也會導致重大的利益損失。
自動化測試的一個常見問題是,在資源有限的本地基礎設施上執行時,可能會過於耗時。有時候,你甚至可能需要在晚上進行自動化測試,以便在第二天獲得結果,甚至等到週末。如此低的速度對於DevOps流程來說是不可接受的,但很少有公司能夠負擔得起構建強大的本地基礎設施的成本。
基礎設施挑戰
遺留基礎設施是很多公司抵制採用DevOps的另一個原因。快速開發(DevOps的特徵之一)主要基於微服務架構,與傳統架構完全不同。遷移到微服務將大幅增加工作量,在大多數情況下,傳統的基礎設施需要進行昂貴的升級。
另一個與基礎設施有關的問題是DevOps工具與現有IT系統的整合——整合過程很少能夠順利進行,因為涉及的變化太多。例如,Dev和Ops團隊通常使用不同的工具和指標,但爲了實現真正的DevOps效率,他們必須進行整合和統一——他們需要組成一個跨職能團隊。
應用程式的複雜性
DevOps的最佳環境是雲,原因很明顯:雲提供了必要的規模、最佳的速度和最大的靈活性,所有這些通常都無法在有限的本地部署上實現。雲環境讓開發人員可以更好地控制組件並減少等待時間。除此之外,雲環境讓DevOps團隊能夠為分配基礎設施建立自助服務方法——這意味著他們不需要等待分配資源。但是,向雲遷移並非總是可行的:據調查,44%在內部部署環境中執行的應用程式因為太過複雜而無法遷移到雲環境中。
基於區塊鏈的DevOps平臺
現在已經出現了很多數字加密專案,以滿足該行業對計算資源和基礎設施日益增長的需求。它們使用了不同的技術,但都有一個共同點:激勵社區發展並作為使用資源獎勵的代幣。
Buddy
作為最有前途的去中心化DevOps平臺之一,Buddy通過提供對兩個自動化網格的訪問來解決基礎設施問題。受信任的高可用私有自動化網格和共享自動化網格可以執行時間密集型和計算密集型自動化操作,甚至整個管道。因此,DevOps團隊可以以最高的效率完成他們的工作(並且無需擔心基礎設施可用性問題)。最重要的是,Buddy支援複雜的企業級應用程式、多雲工作流和混合環境。
Buddy使用者可以通過受支援的自動化操作來建立管道。目前有80個操作,不過很快會出現更多的操作,這要歸功於Buddy市場。這個市場是爲了鼓勵社區發展和支援有才華的開發者而推出的。第三方開發人員可以向Buddy的生態系統提交自己的自動化操作,可以是有償的,也可以是免費的。
私有自動化網格是由Buddy例項組成的網路,為DevOps流程的自動化提供按需自動伸縮的基礎設施。使用者可以在他們認為合適的地方執行Buddy例項:在他們自己的物理基礎設施上、私有云或IaaS伺服器上。Buddy還可以使用由合作伙伴或SaaS整合(如Google Cloud、Amazon Web Services等)提供的受信任網格。根據不同的負載,Buddy會自動建立新例項,並在不再需要它們時將它們移除。
共享自動化GRID在不需要受信任基礎設施的情況下使用。可以向具有可用資源的Buddy例項網路分配時間密集型和計算密集型的任務。執行這些例項的使用者將獲得每個計算單元的BUD代幣。該網格不能用於核心開發,但可用於測試(由數百個Buddy例項來執行測試將花費更少的時間)或其他不需要高度信任級別的任務——例如效能監控或可用性監控。
DevOps工程師還可以在Buddy沙箱的幫助下消除開發瓶頸,他們可以直接在一次性執行環境中從Git倉庫執行應用程式或網站。沙箱不需要任何物理伺服器或虛擬機器。
Buddy支援與以下生態系統整合:Github、Bitbucket、GitLab、Slack、DigitalOcean、Vultr、AWS、Google Cloud、Microsoft Azure等。它還有一個內建的Git,使用者可以選擇使用它來託管專案。
基於以太坊的BUD代幣旨在作為去中心化經濟的基礎,並在Buddy生態系統中建立積極的反饋迴圈。如果沒有代幣,平臺就缺乏對參與網格計算進行激勵的經濟因素,因為法定支付太慢而且效率太低,不足以推動社羣的發展。
Fetch.ai
Fetch.ai是一個基於區塊鏈的智慧賬本(Smart Ledger,下一代分散式賬本技術)專案。它為數字世界提供動力,在這個世界中,自主軟體代理可以通過出售資料或空閒資源來獲得Fetch代幣。DevOps團隊顯然可以從這個市場中受益:這是一種購買計算資源以進行測試、監控或執行其他DevOps時間密集型任務的便利方式。從DevOps的角度來看,它有點類似於上面提到的Buddy共享自動化網格,只是人為干預較少。
這項技術還可以怎麼用?簡而言之,就是可以在Fetch數字世界中出售資料。物聯網裝置可以出售對於其他代理來說有用的資訊:例如,軟體代理可以將車輛擋風玻璃刮水器的使用資訊作為氣候資訊的來源。空閒計算機可以為遠端客戶執行測試任務或執行其他計算。除此之外,還可以將舊資料接入Fetch並使其成為可銷售的資產。
隨著時間的推移,Fetch網路可能會擴充套件並獲得巨大的計算能力,因此代理將獲得新的資料洞察力。得益於整合到Fetch系統中的機器學習技術,網路能夠自己建立寶貴的知識。最終,受信任的數字代理將能夠取代人類中間人,並建立全新的行業。資料和基礎設施不會像現在這樣依賴人類——它們將創造新市場並進行自主銷售。
Fetch代幣將用作網路中所有交易和操作的內部貨幣,它們還將作為某些行為的可退還押金,以確保安全以及防止不良行為。
Golem
Golem專案釋放了閒置計算機資源的潛力,建立了另一個帶有基於以太坊的代幣的去中心化市場。Golem網路是一個結合了使用者可用資源的全域性超級計算機,DevOps團隊顯然可以有效地使用它來執行密集的自動化任務。然而,這些資源的可靠性和可用性存在疑點:家用計算機(即使放在一起數量很大)是否與Buddy的受信任雲基礎設施一樣可靠?
Golem網路的參與者——包括人類和應用程式——可以請求或銷售機器週期。那些共享資源個人電腦或大型資料中心,都可以從Golem網路代幣(縮寫為GNT)的請求者那裏立即獲得報酬。沙箱環境提供了必要的安全級別,其中計算與主機系統是完全隔離的。
除此之外,軟件開發人員還可以使用Golem生態系統來建立、部署、發行和貨幣化應用程式。Golem為這些活動提供了應用程式登錄檔和事務框架。
目前,Golem仍然處於測試階段,因為它的建立者專注於讓它變得更加強大和靈活。他們還計劃為開發人員和軟體公司新增各種工具,讓Golem成為雲提供商的可行替代方案。
結論
本文中提到的基於區塊鏈的平臺解決了對計算資源的迫切需求,計算資源在未來幾年必然會變得更加嚴峻。雖然傳統雲提供商在提供基礎設施和計算能力方面似乎非常有效,但在社羣參與和獨立性方面,去中心化解決方案更具前景。一旦它們獲得足夠的動力,就會開始以自己的方式發展和成長,吸引有才華的開發者,這些開發者將帶來新的功能和可能性。人工智慧、機器學習和其他尖端技術將推動它們進一步發展——有一天,我們會驚訝地發現,未來已經到來。
基於區塊鏈的平臺幾乎允許所有人都來參與這個市場,並通過銷售閒置資源來賺取代幣。這意味著,如果有必要,去中心化平臺有可能可以利用全世界所有的計算能力。