自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

如何組合多種DevOps工具來(lái)解決現(xiàn)實(shí)問題

譯文
開發(fā) 開發(fā)工具
本文和您討論在DevOps生命周期的每個(gè)階段所涉及到的各種工具。您可以組合使用它們來(lái)解決各種現(xiàn)實(shí)問題。

【51CTO.com快譯】在我們開始下面的討論之前,首先通過(guò)一張總圖來(lái)了解一下不同的工具,在DevOps生命周期中所處的位置。

如何組合多種DevOps工具解決現(xiàn)實(shí)問題

DevOps生命周期階段

我敢斷言長(zhǎng)期從事開發(fā)工作的您,一定對(duì)上述圖片并不陌生。那么,這是否意味著您能夠自如地使用各個(gè)階段的各種工具,而不會(huì)碰到任何問題呢?

本文將通過(guò)引導(dǎo)您遍歷DevOps生命周期中的各個(gè)階段,并向您介紹如何綜合使用多種DevOps工具,來(lái)解決各種現(xiàn)實(shí)問題??偟恼f(shuō)來(lái),我們?cè)诓捎肈evOps模式進(jìn)行軟件與應(yīng)用程序開發(fā)時(shí),通常會(huì)經(jīng)歷如下五個(gè)不同的階段:

  • 持續(xù)開發(fā)
  • 持續(xù)測(cè)試
  • 持續(xù)集成
  • 持續(xù)部署
  • 持續(xù)監(jiān)控

1.持續(xù)開發(fā)

此階段涉及到對(duì)于軟件應(yīng)用程序基本功能的計(jì)劃與編碼。雖然對(duì)于計(jì)劃而言,并沒有什么可選的工具,但是可用于代碼維護(hù)的工具卻有不少。

通常情況下,項(xiàng)目的實(shí)現(xiàn)目標(biāo)是在計(jì)劃階段被確定的。而當(dāng)項(xiàng)目組成員開始著手編寫代碼時(shí),就進(jìn)入了所謂的編碼階段。

程序代碼可以用任何一種語(yǔ)言來(lái)編寫,但是我們需要配備相應(yīng)的版本控制工具予以維護(hù)。如今,在此類持續(xù)開發(fā)的DevOps工具中,受用戶歡迎的莫過(guò)于:Git、SVN、Mercurial、CVS和JIRA了。

那么,您是否真正理解保留代碼主要版本的重要性呢?讓我們從如下兩個(gè)方面來(lái)討論它對(duì)于開發(fā)與運(yùn)營(yíng)的影響吧:

  • 只有各種版本(特別是存儲(chǔ)在中央存儲(chǔ)庫(kù)中)得到了管控,我們才能確保統(tǒng)一的可信代碼來(lái)源。在此基礎(chǔ)上,所有的開發(fā)人員都可以針對(duì)最新提交的代碼開展協(xié)作。同時(shí),在計(jì)劃發(fā)布最新版本時(shí),運(yùn)營(yíng)人員可以確保訪問到一致的代碼。
  • 在發(fā)布過(guò)程中,如果出現(xiàn)各種意外,或是發(fā)現(xiàn)程序代碼中存在著嚴(yán)重的缺陷,以及功能性故障,那么運(yùn)營(yíng)人員就能夠從容且快速地回滾或恢復(fù)到,先前部署過(guò)的、已處于穩(wěn)定狀態(tài)的代碼版本上。

目前,大家普遍認(rèn)可的工具是Git和GitHub(https://dzone.com/articles/git-vs-github-demystifying-the-differences)。其中,Git允許開發(fā)人員在分布式的VCS(版本控制系統(tǒng))上開展彼此協(xié)作。

另外,由于并不依賴于中心服務(wù)器,因此運(yùn)營(yíng)人員可以從遠(yuǎn)程位置,對(duì)存儲(chǔ)庫(kù)進(jìn)行各種拉和推式的操作。此處用于維護(hù)代碼的中央存儲(chǔ)庫(kù),便是GitHub。可見,Git可謂是世界領(lǐng)先的版本控制系統(tǒng)之一。

2.持續(xù)測(cè)試

眾所周知,開發(fā)好的代碼是不能夠直接部署或發(fā)布到生產(chǎn)系統(tǒng)上的。我們應(yīng)當(dāng)充分測(cè)試代碼的潛在錯(cuò)誤和性能瓶頸。

通常,執(zhí)行測(cè)試的方式有兩種:效率低下的手動(dòng)測(cè)試和高效快捷的自動(dòng)化測(cè)試。如今業(yè)界普遍使用的便是自動(dòng)化的方式,其中具有代表性的包括:Selenium、TestNG、JUnit/NUnit等工具,它們可以自動(dòng)執(zhí)行各種用戶定義的測(cè)試用例。下面我們來(lái)看看此類工具的基本特點(diǎn):

  • 自動(dòng)化測(cè)試節(jié)省了手動(dòng)執(zhí)行各類測(cè)試的大量時(shí)間、精力和成本。
  • 此外,生成報(bào)告是它們的一大優(yōu)勢(shì)。通過(guò)評(píng)估測(cè)試套件中有哪些測(cè)試用例失敗了,運(yùn)營(yíng)人員能夠更直觀地執(zhí)行各項(xiàng)任務(wù)。
  • 此類測(cè)試也可以安排在預(yù)先指定的時(shí)刻被執(zhí)行。

顯然,我們應(yīng)該在DevOps生命周期中不斷嘗試各種工具,形成持續(xù)測(cè)試階段的習(xí)慣。如果您要問哪一款是我的最愛?我會(huì)告訴你:我會(huì)將它們組合起來(lái)使用。例如:我會(huì)用Selenium進(jìn)行自動(dòng)化測(cè)試,由TestNG生成報(bào)告,進(jìn)而使用Jenkins觸發(fā)持續(xù)集成。

3.持續(xù)集成

這個(gè)階段可謂DevOps最為出彩的部分。它在第一次發(fā)布過(guò)程中,就發(fā)揮了重要的作用。它能夠最大限度地促進(jìn)持續(xù)集成工具與配置管理工具的聯(lián)合部署。

毫無(wú)疑問,如今市面上最受歡迎的持續(xù)集成工具便是Jenkins。當(dāng)然,其他流行的CI工具還是Bamboo和Hudson。

持續(xù)集成工具的主要功效在于:它能夠通過(guò)協(xié)調(diào)其他DevOps生命周期階段的自動(dòng)化工具,將整個(gè)DevOps結(jié)構(gòu)完整地保持在一起。也就是說(shuō):無(wú)論是持續(xù)開發(fā)、測(cè)試或部署工具,還是持續(xù)監(jiān)視工具,或是持續(xù)集成工具,都可以與CI工具全面集成。

  • 在與Git/SVN集成后,Jenkins可以自動(dòng)化地安排諸如:從共享存儲(chǔ)庫(kù)中提取代碼之類的作業(yè),并使其為構(gòu)建和測(cè)試做好準(zhǔn)備(即持續(xù)開發(fā))。Jenkins可以被設(shè)置為在某個(gè)預(yù)定的時(shí)刻,或是有提交被推送到中央存儲(chǔ)庫(kù)時(shí),觸發(fā)構(gòu)建作業(yè)。
  • 與Selenium等測(cè)試工具集成后,我們可以實(shí)現(xiàn)持續(xù)測(cè)試。通常,我們可以使用Maven/Ant/Gradle之類的工具,來(lái)對(duì)已開發(fā)的代碼進(jìn)行構(gòu)建。此后,Selenium可以通過(guò)創(chuàng)建一組測(cè)試用例,以及逐個(gè)執(zhí)行這些測(cè)試用例,來(lái)自動(dòng)執(zhí)行各種代碼。在整個(gè)過(guò)程中,Jenkins/Hudson/Bamboo的角色就是自動(dòng)化計(jì)劃。
  • 與持續(xù)部署工具集成后,Jenkins/Hudson/Bamboo可以通過(guò)配置管理,以及容器化工具來(lái)觸發(fā)部署計(jì)劃。
  • 另外,Jenkins/Hudson可以與Splunk、ELK、Nagios或NewRelic等監(jiān)控工具相集成,進(jìn)而對(duì)那些已部署的服務(wù)器狀態(tài)和性能提供持續(xù)監(jiān)控。

4.持續(xù)部署

在討論了從頭開始構(gòu)建代碼的工具、以及測(cè)試類工具之后,我們現(xiàn)在來(lái)一起看看配置管理工具或容器化工具。這兩套工具都有助于在DevOps中實(shí)現(xiàn)持續(xù)部署(CD)。實(shí)際上,持續(xù)部署是軟件項(xiàng)目的實(shí)際落地階段。

目前,配置管理工具具有如下特點(diǎn):

  • 通常,配置管理需要在應(yīng)用程序的功能需求和性能中,建立和維護(hù)一致性的行為。簡(jiǎn)而言之,它是將部署發(fā)布到服務(wù)器上,調(diào)度所有服務(wù)器上的更新,以及保持所有服務(wù)器上一致性配置的行為。
  • 業(yè)界常用的此類工具有:Puppet、Chef、Ansible、以及SaltStack,其中最好的當(dāng)屬Puppet。這些工具都是基于主-從(master-slave)架構(gòu)的。當(dāng)有新的部署被發(fā)送到主服務(wù)器時(shí),這臺(tái)主服務(wù)器負(fù)責(zé)在所有從服務(wù)器之間復(fù)制此類變更。

下面我們看看容器化工具:

作為一套工具集,容器化工具可以協(xié)助運(yùn)營(yíng)人員在開發(fā)、測(cè)試和部署應(yīng)用程序的環(huán)境中,保持一致性。通過(guò)對(duì)那些在開發(fā)/測(cè)試/階段性環(huán)境中頻繁使用到的相同依賴項(xiàng)和程序包進(jìn)行打包與復(fù)制,容器化工具大幅消除了生產(chǎn)環(huán)境中各種錯(cuò)誤與故障的可能。

Docker是最早也是久負(fù)盛名的容器化工具之一。過(guò)去,由于開發(fā)人員使用到了各種虛擬機(jī)與服務(wù)器,因此他們必須通過(guò)手動(dòng)管理,才能保持生產(chǎn)環(huán)境狀態(tài)的一致性。如今,有了Docker容器的協(xié)助,大家能夠輕松地實(shí)現(xiàn)一致性的自動(dòng)化保持。

近年來(lái),許多云端應(yīng)用的解決方案,都開始為容器服務(wù)提供支持了。其中,Amazon ECS、Azure容器服務(wù)和Google容器引擎,都能夠?qū)ocker容器提供原生的云服務(wù)支持。這也就是Docker能夠廣為普及的原因之一。當(dāng)然,其他類型的容器化工具還有:Vagrant。

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

如果我們不對(duì)應(yīng)用程序的性能進(jìn)行監(jiān)視,那么開發(fā)和部署應(yīng)用還有什么意義呢?就算是再全面的測(cè)試,也難免疏漏掉一些潛在的錯(cuò)誤或性能問題,因此,持續(xù)監(jiān)控與應(yīng)用開發(fā)同等重要。

目前,屬于此階段的流行監(jiān)控工具有:Splunk、ELK Stack、Nagios,Sensu、NewRelic。它們與Jenkins結(jié)合使用,可以讓運(yùn)營(yíng)人員達(dá)到持續(xù)監(jiān)控的目的??偟恼f(shuō)來(lái),持續(xù)監(jiān)控工具的必要性在于如下兩個(gè)方面:

  • 由于程序的缺陷會(huì)給服務(wù)提供方造成財(cái)務(wù)上的損失,因此我們需要通過(guò)持續(xù)監(jiān)控,來(lái)最大程度地減少功能性錯(cuò)誤所出現(xiàn)的頻率和帶來(lái)的后果。
  • 監(jiān)控工具可以在用戶普遍碰到故障,并產(chǎn)生不良使用體驗(yàn)之前,及時(shí)報(bào)告故障或服務(wù)水平的驟降。

Splunk和ELK堆棧是該領(lǐng)域的兩大工具,它們之間有著競(jìng)爭(zhēng)關(guān)系。它們雖然能夠提供幾乎相近的功能,但是具體提供的方式卻不盡相同。

Splunk是一款非常容易上手的商業(yè)工具。而ELK堆棧則是由ElasticSearch、LogStash和Kibana三種開源工具組合而成。雖然可以免費(fèi)使用,但是ELK設(shè)置起來(lái)卻不像Splunk那么容易。我建議您親自試用一下這兩款工具,以選擇更適合自己項(xiàng)目的一款。

原文標(biāo)題:How To Combine DevOps Tools Together To Solve Our Problems,作者:Sahiti Kappagantula

【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文譯者和出處為51CTO.com】

 

責(zé)任編輯:龐桂玉 來(lái)源: 51CTO
相關(guān)推薦

2010-12-01 23:26:12

微軟創(chuàng)新杯

2013-03-13 09:49:54

2018-10-30 14:42:04

IPv6網(wǎng)絡(luò)運(yùn)營(yíng)商

2020-10-10 16:08:36

容器Kubernetes云計(jì)算

2011-07-20 09:58:33

DevOps

2016-12-20 16:28:49

數(shù)據(jù)中心高速光模塊

2022-01-14 11:48:39

量子計(jì)算硬件技術(shù)

2009-10-21 18:04:22

博科資訊預(yù)算管理

2021-01-29 15:50:45

DevOps運(yùn)維

2023-12-15 09:49:54

回溯解決組合問題數(shù)組

2019-12-12 09:30:31

工具代碼開發(fā)

2019-04-08 08:45:36

微軟瀏覽器Windows

2009-09-15 17:45:34

Linq多條件

2018-04-27 14:08:40

云容器DevOps

2021-05-11 10:56:07

DevOps開發(fā)工具

2010-04-07 11:00:55

網(wǎng)絡(luò)基線網(wǎng)絡(luò)故障

2010-10-16 11:28:08

2017-07-11 08:40:07

區(qū)塊鏈IT分布式數(shù)據(jù)

2015-11-26 17:56:16

CA Technolo

2022-06-29 07:49:42

云存儲(chǔ)架構(gòu)DevOps
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)