云計算時代,你所不了解的DevOps

2022-10-13    分類: 網(wǎng)站建設

在本文中,我們討論如何快速地從更高的層面理解DevOps,介紹準備改變文化的實踐。我們將討論DevOps的目標以及從組織管理層得到支持的方法,為DevOps的概念打下基礎。我們將試著從根本上介紹使應用程序生命期管理簡單、高效的DevOps實踐。

云計算時代,你所不了解的 DevOps

DevOps不是一種框架、工具或者技術(shù),理解這一點非常重要。它更多的是與組織的文化有關(guān)。DevOps還是人們在組織中使用預先定義的過程、利用自動化工具,使日常工作更加高效、手工工作更少的一種方法。

為了理解DevOps的重要性,我們在本文中將包含如下主題:

DevOps的必要性;

如何發(fā)展DevOps文化;

PPT(人、過程和技術(shù))的重要性;

為什么DevOps不全和工具有關(guān);

DevOps評估問題。

1.1 DevOps的必要性

每個偉大的夢想都源于夢想家。永遠銘記,你擁有的力量、耐心和熱情,可以令你摘星攬月、改變世界。

改變是生命的法則,也適用于組織機構(gòu)。如果任何組織或者個人只盯著過去或者現(xiàn)有的模式、文化或?qū)嵺`,他們就肯定會錯失未來的好實踐。在動態(tài)的IT世界中,我們必須趕上技術(shù)革新的步伐。

我們可以參考喬治•蕭伯納的名言:

不改變就不可能進步,無法改變自己的想法,就不能改變?nèi)魏螙|西。

現(xiàn)在,我們關(guān)注的是應用程序生命期管理方法的改變。重要的是,我們是否真的需要這種改變?我們是否真的需要經(jīng)歷改變的痛苦?

答案是肯定的。

人們可能會說,這種業(yè)務或者文化的改變不能是強制性的。

同意。

讓我們在圖1-1的幫助下,理解現(xiàn)代世界中組織在應用程序生命期管理中面對的痛點。

云計算時代,你所不了解的 DevOps

圖1-1

考慮到業(yè)務中不斷變化的模式和競爭環(huán)境,改善應用程序生命期管理是當務之急。

在現(xiàn)代,有什么因素能夠幫助我們改善應用程序生命期管理?

是的,云計算改變了游戲規(guī)則,為許多開創(chuàng)性的解決方案和創(chuàng)新打開了大門。讓我們來理解云計算的真正意義,以及DevOps和自動化等術(shù)語在企業(yè)中所起的重要作用。

1.1.1 云計算概述

從計算革命來看,云計算是下一個合乎邏輯的步驟。從傳統(tǒng)數(shù)據(jù)中心和虛擬化,到混合環(huán)境、私有云、公共云和混合云服務,云計算是向云消費者按需提供多租戶或者專用計算資源(如計算、存儲和網(wǎng)絡)的計算類型。云計算有多種不同風格,包括不同的云部署模型和云服務模型。最重要的是其定價模型——現(xiàn)收現(xiàn)付。

云部署模型是云資源部署的方式。

1)私有云:私有云由防火墻后專門用于特定組織的場內(nèi)云資源組成。

2)公共云:公共云由可用于所有組織及個人的云資源組成。

3)混合云:混合云由可用于一組有類似興趣或者類似需求類型的組織的云資源組成。

4)社區(qū)云:社區(qū)云由組合兩種或者更多部署模型的云資源組成。

云服務模型描述了向各類客戶(個人、小型組織、大型企業(yè))提供云資源的方式。

云服務模型包括:云客戶或者最終用戶可以訪問和控制虛擬機的純基礎設施——基礎設施即服務(IaaS);提供運行時服務,云服務提供者提供和管理運行應用所需的所有軟件安裝及配置的平臺——平臺即服務(PaaS);云服務提供者提供整個應用程序,負責基礎設施和平臺的軟件即服務(SaaS)。

近幾年涌現(xiàn)了許多服務模型,但是IaaS、PaaS和SaaS是基于美國國家標準與技術(shù)學會(NIST)的定義,如圖1-2所示。

云計算有一些重要的特性,如多租戶,類似于電力或者煤氣的現(xiàn)收現(xiàn)付模式,提供更高計算、存儲和網(wǎng)絡資源利用率的按需自助服務和資源池化,用于根據(jù)需要自動擴展和收縮資源的快速伸縮,以及用于計費的可度量服務。

多年以來,不同云部署模型的使用根據(jù)用例而改變。最初,公共云用于非關(guān)鍵應用,而私有云用于關(guān)注安全性的關(guān)鍵應用。混合云和公共云的使用隨著時間的推移以及對云服務提供商所提供服務的經(jīng)驗及信心而發(fā)展。同樣地,不同云服務模型的使用也根據(jù)用例和靈活性而有所不同。IaaS在早期最受歡迎,但是PaaS則憑借其成熟度和自動伸縮、支持多語言和支持端到端應用程序生命期管理工具的易用性而后來居上。

云計算時代,你所不了解的 DevOps

圖1-2

1.1.2 DevOps概述

DevOps與發(fā)展開發(fā)和IT運營團隊之間的協(xié)作,以比現(xiàn)有方式更高效地管理應用程序生命期的組織文化、過程和技術(shù)有關(guān)(見圖1-3)。我們在工作中往往傾向于根據(jù)模式,從類似的問題或者挑戰(zhàn)中找出可重用解決方案。

云計算時代,你所不了解的 DevOps

圖1-3

多年之后,成功與失敗的試驗、好實踐、自動化腳本、配置管理工具和方法論已經(jīng)成為DevOps文化中不可分割的一部分。

DevOps有助于定義設計方法、開發(fā)方法、測試方法、安裝方法、環(huán)境管理方法、配置管理方法、應用部署方法、反饋收集方法、代碼改善方法和創(chuàng)新方法。

下面是開展DevOps實踐的一些明顯好處。

DevOps是一系列創(chuàng)新,以高效的方法將開發(fā)與運營團隊整合在一起,這些方法包括持續(xù)構(gòu)建集成、持續(xù)測試、云資源配給、持續(xù)交付、持續(xù)部署、持續(xù)監(jiān)控、持續(xù)反饋、持續(xù)改善和持續(xù)創(chuàng)新,按照敏捷方法論的要求,更快地交付應用程序。文化的發(fā)展不是一夜之間就能完成的,需要很長的時間。但是,對于DevOps究竟是什么仍存在概念上的混淆,人們往往將單獨的持續(xù)集成或者配置管理實踐當成DevOps實踐,這就像盲人摸象,每個人都將觸摸到的一部分當成大象的整體,如圖1-4所示。

云計算時代,你所不了解的 DevOps

圖1-4

但是,DevOps涉及的不僅是開發(fā)和運營團隊。在現(xiàn)有文化的發(fā)展中,涉及測試團隊、業(yè)務分析人員、構(gòu)建工程師、自動化團隊、云團隊和許多其他利益相關(guān)方。

DevOps和組織文化沒有太大區(qū)別,它們有共同的價值和行為特征,需要調(diào)整心態(tài)和過程,與新的技術(shù)和工具相匹配。

開發(fā)和運營團隊面臨的挑戰(zhàn)

正因為現(xiàn)實中的一些挑戰(zhàn),使DevOps呈向上的趨勢,并成為所有信息技術(shù)相關(guān)討論中的熱門話題。

開發(fā)團隊面臨的挑戰(zhàn)

開發(fā)人員渴望采用新技術(shù)和新方法解決問題。但是,他們面對許多挑戰(zhàn)。

競爭激烈的市場造成了按時交付的壓力。

他們不得不負責生產(chǎn)就緒代碼管理和新功能的實現(xiàn)。

發(fā)行周期往往很長,因此,開發(fā)團隊必須在應用部署最終進行之前做出假設。在這種情況下,修復在模擬環(huán)境或者生產(chǎn)環(huán)境中部署期間發(fā)生的問題需要花費更多的時間。

運營團隊面臨的挑戰(zhàn)

運營團隊對資源變化、新技術(shù)或新方法的使用總是小心翼翼,因為他們需要穩(wěn)定性。但是,他們也面對許多挑戰(zhàn)。

資源爭用:難以處理日益增長的資源需求。

重新設計或者調(diào)整:這是在生產(chǎn)環(huán)境中運行應用程序的需要。

診斷和改正:他們應該在應用程序部署與外界隔絕的情況下診斷和改正問題。

IT團隊面臨的挑戰(zhàn)

IT團隊向各個團隊提供運營所需的資源。

基礎設施配給:提供基礎設施和具備合適安裝軟件包的運行時環(huán)境。

配置管理:根據(jù)工具或者技術(shù)的可供更新,升級現(xiàn)有基礎設施或者軟件包。

考慮到開發(fā)和運營團隊面對的所有挑戰(zhàn),我們應該如何改善現(xiàn)有過程、利用自動化工具提高過程的效率、改變?nèi)藗兊乃季S方式?在下一小節(jié),我們將了解如何在組織中發(fā)展DevOps文化,改善效率和效能。

1.2 如何發(fā)展DevOps文化

低效的估算、進入市場的時間過長以及其他問題導致了瀑布模型的改變,產(chǎn)生了敏捷模型。文化的演變不是有固定時限或者一夜之間可以完成的過程,它可能是一個步進式的分階段過程,可以在不依賴其他階段的情況下完成。

我們可以在不使用云配給的情況下實現(xiàn)持續(xù)集成,可以在不實現(xiàn)配置管理的情況下實現(xiàn)云配給。我們也可以在沒有任何DevOps實踐的情況下實現(xiàn)持續(xù)測試。圖1-5所示是實現(xiàn)DevOps實踐的不同階段。

云計算時代,你所不了解的 DevOps

圖1-5

1.2.1 敏捷開發(fā)

敏捷開發(fā)或基于敏捷的方法論對應用程序構(gòu)建很有用,這種方法將權(quán)力下放,鼓勵互動,重視可工作軟件、客戶協(xié)作——利用反饋改善后續(xù)步驟——并以高效的方式響應變化。

敏捷開發(fā)最吸引人的好處之一是在短時間內(nèi)(敏捷術(shù)語中叫作“沖刺”)持續(xù)交付。這樣,應用開發(fā)的敏捷方法、技術(shù)上的改進、破壞性創(chuàng)新和方法在開發(fā)和運營團隊之間造成了一條鴻溝。

1.2.2 DevOps

DevOps試圖通過發(fā)展開發(fā)和運營團隊之間的伙伴關(guān)系,彌合這條鴻溝。DevOps活動強調(diào)軟件開發(fā)人員和IT運營部門之間的溝通、協(xié)作和整合。

DevOps促進協(xié)作,通過自動化和編排改善過程為協(xié)作提供方便。換言之,DevOps本質(zhì)上將敏捷活動的持續(xù)開發(fā)目標擴展到持續(xù)集成和發(fā)行。DevOps是利用云解決方案的優(yōu)勢,將敏捷實踐與過程組合起來。敏捷開發(fā)和測試方法幫助我們實現(xiàn)應用程序的持續(xù)集成、開發(fā)、構(gòu)建、部署、測試和發(fā)行目標。

構(gòu)建自動化

自動化構(gòu)建運用Gradle、Apache Ant和Apache Maven等構(gòu)建自動化工具,幫助我們創(chuàng)建應用程序構(gòu)建。

自動化構(gòu)建過程包括將源代碼編譯成類文件或者二進制文件、提供第三方庫文件引用、提供配置文件路徑、將類文件或者二進制文件打包成包文件、執(zhí)行自動化測試用例、在本地或遠程機器上部署包文件和減少包文件創(chuàng)建中的手工作業(yè)等活動。

持續(xù)集成

簡言之,持續(xù)集成(CI)是一種軟件工程實踐,在這種方法中,開發(fā)人員的每次簽入(Check-in)都使用如下任一種方法驗證。

“拉”機制:在計劃的時間點執(zhí)行自動化構(gòu)建。

“推”機制:在存儲庫中保存更改時執(zhí)行自動化構(gòu)建。

這一步之后,對源代碼庫中最新的更改執(zhí)行一次單元測試。持續(xù)集成是一種流行的DevOps方法,要求開發(fā)人員將代碼每天數(shù)次整合為Git和SVN等代碼庫,以驗證代碼的完整性。

然后,自動化構(gòu)建驗證每次簽入,使團隊可以及早發(fā)現(xiàn)問題。

CI(甚至CD)是公司同步DevOps存檔的基線。在組織中如果沒有很好地實施CI和CD,就無法實施DevOps。

云配給

在本章前面,我們已經(jīng)介紹了云計算的基本知識。云配給為架構(gòu)即代碼(Infrastructure as Code ,IAC)敞開了大門,使整個過程變得極其高效,因為我們在很大的程度上將涉及人工干預的過程自動化了。

現(xiàn)收現(xiàn)付的計費模式使所需的資源更加容易承受,不僅對大型組織,對中小規(guī)模組織和個人也是如此。

云配給有助于改進和創(chuàng)新,因為以前的資源約束從成本和維護的角度阻礙了組織的進一步發(fā)展。一旦我們在基礎設施資源上擁有了敏捷性,就可以考慮自動化運行應用程序所需軟件包的安裝和配置。

配置管理

配置管理(CM)系統(tǒng)中的更改,更具體地說,就是服務器運行時環(huán)境。我們可以使用市場上的許多工具實現(xiàn)配置管理。流行工具包括Chef、Puppet、Ansible、Salt等。

讓我們來考慮一個需要管理多個同類配置服務器的例子。

例如,我們需要在每個服務器上安裝Tomcat。如果需要改變所有服務器上的端口、更新某些軟件包或者為某些用戶提供權(quán)限,該怎么辦?這種情形下的任何修改都是人工的,也就是一種容易出錯的過程。因為所有服務器都使用相同的配置,可以利用自動化手段。

持續(xù)交付

持續(xù)交付和持續(xù)部署是可以互換使用的術(shù)語。但是,兩者之間還是有一些小的差別。

持續(xù)交付是在任何環(huán)境中以自動化方式部署一個應用程序并提供持續(xù)反饋以改善其質(zhì)量的過程。持續(xù)交付和持續(xù)部署中的自動化方法不會改變。但是批準過程和其他小細節(jié)可能改變。

持續(xù)測試和部署

持續(xù)測試是端到端應用程序生命期管理過程中很重要的階段,包括功能測試、性能測試、安全性測試等。

Selenium、Appium、Apache JMeter和許多其他工具都可以用于相同的目的。另一方面,持續(xù)部署是部署應用程序,包含對生產(chǎn)環(huán)境的最新更改。

持續(xù)監(jiān)控

持續(xù)監(jiān)控是端到端交付流水線的骨干,開源監(jiān)控工具就像冰淇淋勺的頭部。

如圖1-6所示,在幾乎每個階段都設置監(jiān)控,獲得所有過程的透明度是十分可取的做法。這還能夠幫助我們快速檢修故障。監(jiān)控應該在深思熟慮的計劃下執(zhí)行。

圖1-6描述了持續(xù)方法的全部過程。

我們必須理解,這是一種分階段的方法,不一定要一次性完成各個階段的自動化工作。每次選擇一種DevOps實踐、實施并理解其好處,然后再實施另一個,這是更有效的做法。

這樣,我們可以安全地評估組織文化改變帶來的改善,消除應用程序生命期管理中的手工勞動。

云計算時代,你所不了解的 DevOps

圖1-6

1.3 PPT——人、過程和技術(shù)——的重要性

PPT在任何組織中都是一個重要的詞。等等!我們說的可不是PowerPoint演示。這里,我們關(guān)注的是人、過程和工具/技術(shù)。讓我們來了解一下,為什么這些因素在改變?nèi)魏谓M織的文化時很重要。

1.3.1 人

引用Jack Cranfield的名言:

不管周圍發(fā)生什么,成功的人總是積極地看待人生。他們著眼于過去的成功而不是過去的失敗,聚焦于使他們更接近目標的下一步行動,而不是生活中令他們分心的其他事務。

為什么說人很重要?這是一個有趣的問題。如果我們想要用一句話來回答,那就是:因為我們試圖改變文化。

那么又如何?

人是任何文化的重要組成部分,只有人能夠驅(qū)動文化的改變,或者改變自己以適應新過程、定義新過程、學習新工具或者技術(shù)。

讓我們用變革方程式來理解。

按照維基百科的說法,David Gleicher在20世紀60年代初創(chuàng)造了變革方程式。Kathie Dannemiller在1980年對方程式進行了完善。這個方程式提供了一個模型,以評估影響組織變革倡議成功概率的相對優(yōu)勢。

Gleicher(原始)版本為:C= (ABD) >X,其中C=變革,A=對現(xiàn)狀的不滿意度,B=希望得到的明確狀態(tài),D=達到理想狀態(tài)的實際步驟,X=變革的代價。

Dannemiller的版本:D×V×F>R,其中D、V和F必須存在,組織變革才能進行:D=對現(xiàn)狀的不滿意度,V=對可能目標的愿景,F(xiàn)=可用于實現(xiàn)愿景的前幾個具體步驟。如果這3個因素的乘積大于R(阻力),那么變革就是可能成功的。

本質(zhì)上說,這個公式表示,必須有對現(xiàn)有事務或者過程的不滿,對新趨勢、技術(shù)和市場方案創(chuàng)新的愿景,以及實現(xiàn)愿景所采取的具體步驟。

關(guān)于變革方程式的更多細節(jié),可以訪問維基百科網(wǎng)頁:https://en.wikipedia.org/wiki/Formula_for_change#cite_note-myth-1

作為經(jīng)驗分享,我認為培訓人員適應新的文化非常重要,這是一場需要耐心的博弈。我們不能在一夜之間改變?nèi)藗兊乃季S方式,在改變文化之前首先需要理解。

在行業(yè)中往往能看到,文化的改變從DevOps知識或者DevOps工程師開始,但是在理想狀況下,這些不應該是“舶來品”,而應該逐步改變現(xiàn)有環(huán)境,并在其中訓練人員,以控制阻力。我們不需要一個專門的DevOps團隊,需要的是開發(fā)人員、測試團隊、自動化實現(xiàn)人員和云或基礎設施團隊之間的更多溝通和協(xié)作。

讓所有人都理解彼此的痛點是必不可少的步驟。在我工作過的機構(gòu)里,我們習慣于有一個卓越中心(COE)來管理新技術(shù)、創(chuàng)新或者文化。作為自動化實現(xiàn)者和DevOps團隊的一員,我們只應該擔當促進者的角色,而不是與世隔絕的“豎井”中的一員。

1.3.2 過程

Tom Peters曾有一段名言:

幾乎所有質(zhì)量改進都來源于對設計、制造…布局、過程和規(guī)程的簡化。

在處理文化的發(fā)展時,質(zhì)量極其重要。我們需要過程和策略,以正確的方式完成工作,并標準化各個項目,使操作的順序、約束、規(guī)則等都有完備的定義,以便對成功與否進行度量。

我們需要為以下任務建立過程。

敏捷規(guī)劃。

資源規(guī)劃和配給。

配置管理。

對云資源和自動化中使用的其他工具的基于角色訪問控制。

編程語言的靜態(tài)代碼分析規(guī)則。

測試方法論與工具。

發(fā)行管理。

這些過程對于度量DevOps文化發(fā)展的成功也很重要。

1.3.3 技術(shù)

史蒂夫•喬布斯有如下的名言:

技術(shù)并不重要,重要的是你對人們有信心,他們都很好、很聰明,如果給他們工具,他們就能做了不起的事。

科技幫助人和組織產(chǎn)生創(chuàng)意、完成創(chuàng)新,同時改變文化。沒有科技,在日常例行的自動化操作中,就很難實現(xiàn)速度和效率。云計算、配置管理工具和構(gòu)建流水線在資源配給、安裝運行時環(huán)境和編排中很有用處。它們從根本上提高了應用程序生命期管理中不同方面工作的速度。

1.4 為什么說DevOps不全和工具有關(guān)

是的,工具什么都不是,在任何組織的文化變革中,它們都不是重要的因素。原因很簡單。不管我們使用哪一種技術(shù),都必須實施持續(xù)集成、云配給、配置管理、持續(xù)交付、持續(xù)部署、持續(xù)監(jiān)控等。

按照類別,可以使用不同的工具集,但是所有工具執(zhí)行的都是類似的操作。工具執(zhí)行某個操作的方式可能不同,但結(jié)果是相同的。表1-1所示是按照分類列出的一些工具。

云計算時代,你所不了解的 DevOps

表1-1

讓我們來看看在不同運營工作的不同階段使用的不同工具。這可能根據(jù)不同組織中的環(huán)境數(shù)量或者DevOps實踐數(shù)量而變化,如圖1-7所示。

云計算時代,你所不了解的 DevOps

圖1-7

如果我們需要根據(jù)不同的DevOps好實踐分類工具,可以將其分類為開源和商業(yè)。表1-2所示為一些例子。

云計算時代,你所不了解的 DevOps

表1-2

1.5 DevOps評估問題

DevOps是一種文化,我們對此已經(jīng)很了解。但是,在實施自動化、制定過程和發(fā)展文化之前,我們必須理解組織文化的現(xiàn)狀,以及是否有必要引入新過程或者自動化工具。

我們必須非常清楚,我們需要的是使現(xiàn)有文化變得更加高效,而不是輸入文化。

創(chuàng)建需要提出的問題類別,并根據(jù)具體應用得出答案。

下面是幾個問題的例子。

1.你是否遵循敏捷原則?

2.你是否使用源代碼庫?

3.你是否使用靜態(tài)代碼分析工具?

4.你是否使用構(gòu)建自動化工具?

5.你使用場內(nèi)基礎設施還是基于云的基礎設施?

6.你使用配置管理工具、安裝應用程序軟件包的腳本還是運行時環(huán)境?

7.你是否使用自動化腳本在生產(chǎn)和非生產(chǎn)環(huán)境中部署應用程序?

8.你是否使用應用程序生命期管理的編排工具或者腳本?

9.你是否使用功能測試、負載測試、安全性測試和移動測試的自動化工具?

10.你是否使用應用程序和基礎設施監(jiān)控工具?

一旦問題就緒,就準備答案,并根據(jù)上述問題的每個答案確定等級。

保證框架的靈活性,即使我們改變?nèi)魏晤悇e中的一個問題,也能夠自動地管理。

評出等級之后,在框架中引入不同的條件和智能,捕捉答案并計算總體等級。

創(chuàng)建各個分類的最終等級,根據(jù)最終等級創(chuàng)建不同類型的圖表,使其更容易理解。在這里,需要注意的是,組織在應用程序生命期管理各領域中的專業(yè)能力。這將為評估框架提供一個新的維度,以增加智能,使其更為高效。

1.6 小結(jié)

在本文中,我們設定了本書要實現(xiàn)的許多目標。我們介紹了持續(xù)集成、云環(huán)境中的資源配給、配置管理、持續(xù)交付、持續(xù)部署和持續(xù)監(jiān)控。

設計目標是將愿景清晰化的第一步。

我們已經(jīng)看到,云計算是如何改變過去對創(chuàng)新的認知方法,它現(xiàn)在已經(jīng)變成了切實可行的方案。我們還簡要介紹了DevOps的必要性和各種不同的DevOps實踐。人、過程和技術(shù)在改變組織現(xiàn)有文化的過程中也很重要。我們試圖指出它們的重要性。工具很重要,但不能止步于此;可以利用任何工具集,改變文化并不需要特定的工具集。我們也簡要地討論了DevOps的評估框架,它將幫助你沿著文化變革的道路前進。

云計算DevOps

新聞標題:云計算時代,你所不了解的DevOps
本文鏈接:http://bm7419.com/news/204868.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供域名注冊、移動網(wǎng)站建設、網(wǎng)站設計、云服務器網(wǎng)站設計公司、面包屑導航

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站