以前,開發(fā)(Development)和運(yùn)維(Operations)總是相互指責(zé)。程序代碼永遠(yuǎn)不會(huì)按照開發(fā)者的意愿及時(shí)更新,服務(wù)器的管理人員則對(duì)開發(fā)者隨意簡(jiǎn)化進(jìn)程擱置服務(wù)請(qǐng)求十分惱火。
直到DevOps的到來,一些工具消除了雙方之間的隔閡,提供了從配置管理到應(yīng)用程序移植的服務(wù),這條戰(zhàn)線便消失了。這里介紹幾款最近頗受好評(píng)的DevOps工具。
1. Atlas
HashiCorp最新推出的Atlas提供了可視化的基礎(chǔ)設(shè)施,在配置管理和服務(wù)搜尋之外,還提供了服務(wù)器、包容器和虛擬機(jī)。該項(xiàng)目是在其廣受歡迎的開源項(xiàng)目Vagrant、Packer、Serf、Consul 和Terraform的基礎(chǔ)上建立的,其特有閉源模式能使DevOps在AWS、谷歌計(jì)算引擎、Azure以及OpenStack等各種云服務(wù)中運(yùn)行自如,此外,Atlas還提供了可用于開發(fā)、資源配置和維護(hù)應(yīng)用程序的儀表板。
Lithium Technologies 工程師Justin Franks目前所用的開發(fā)工具是Vagrant,他正在考慮使用Atlas為公司的客戶互動(dòng)平臺(tái)服務(wù)。Franks 說Atlas在Lithium Technologies已經(jīng)投入使用,現(xiàn)在主要在測(cè)試其持續(xù)集成和配置的能力。“有很多的工具,比如Jenkins、Travis和Bamboo,它們都過不了最后資源配置的那一關(guān)。”弗蘭克如是說。
Atlas自購系統(tǒng)的安裝預(yù)計(jì)在今年年初進(jìn)行。
2. Chef
Chef是一個(gè)系統(tǒng)和云端基礎(chǔ)架構(gòu)的框架,它可以通過被稱為“recipes”的簡(jiǎn)短可重復(fù)腳本自行操作基礎(chǔ)設(shè)施的建立、配置和管理。但Chef的實(shí)權(quán)其實(shí)只在于操作其可插拔的配置模塊(又名“食譜”),而在Chef中有近2000個(gè)這樣的模塊。作為Chef的高調(diào)用戶之一,F(xiàn)acebook最近開放了一些自己的Chef“食譜”的源代碼,包括Taste Tester測(cè)試框架和Grocery Delivery,后者是用于監(jiān)測(cè)源代碼回購(如Git)并保持本地Chef服務(wù)器同步的工具。
賓夕法尼亞大學(xué)沃頓商學(xué)院也是Chef的用戶之一。“Chef可自動(dòng)化操作一些時(shí)間密集型和資源密集型的復(fù)雜任務(wù),更重要的是它使我們能夠集中精力進(jìn)行創(chuàng)新和提高服務(wù)質(zhì)量,”該校的技術(shù)總監(jiān)Sanjay Modi在Chef網(wǎng)站的個(gè)案分析上說,“Chef也將為組織內(nèi)的協(xié)作和工作效率提高帶來更多的可能。” Chef已被使用于沃頓商學(xué)院的Amazon EC2資源、Linux節(jié)點(diǎn)和本地虛擬機(jī)的自動(dòng)化配置管理。
3. Docker
Docker以其集裝化技術(shù)為應(yīng)用程序帶來便攜性,在Docker中,應(yīng)用程序可以跨平臺(tái)運(yùn)行自給系統(tǒng)。Docker是由Docker引擎和Docker集線器組成的,前者是一個(gè)輕量級(jí)的運(yùn)行時(shí)間和包裝工具,后者則是應(yīng)用程序共享和工作流程自動(dòng)化的云服務(wù)。
“Docker已成為Yelp下一代測(cè)試和服務(wù)管理基礎(chǔ)設(shè)施的重要組成部分,”Yelp 的技術(shù)總監(jiān)Sam Eaton在Docker網(wǎng)站上的案例研究中說,“依賴性隔離和‘集裝箱’的快速旋轉(zhuǎn)使得開發(fā)周期和測(cè)試速度提高了不只4倍。”
4. Puppet
通過機(jī)器和軟件的自動(dòng)化配置和管理,Puppet公司從Puppet實(shí)驗(yàn)室提供數(shù)據(jù)中心的業(yè)務(wù)流程。最新發(fā)布的3.7版本推出了Puppet Apps,這是一款專用于應(yīng)用IT自動(dòng)化的應(yīng)用,其包含的Node Manager,可用于管理大量常變系統(tǒng)。Puppet的開源版本也已推出。
斯坦福大學(xué)采用Puppet的開源版本來“解決開發(fā)新型數(shù)字圖書館服務(wù)和保持這些服務(wù)高性能安全運(yùn)行之間的矛盾,”斯坦福大學(xué)的Bess Sadler在Puppet網(wǎng)站的視頻推薦中如是說。
她還指出開發(fā)者應(yīng)更多地參與系統(tǒng)管理,而系統(tǒng)管理員也同樣參與了軟件開發(fā),于是,應(yīng)用開發(fā)也就更加快捷省時(shí)。
5. SaltStack
SaltStack提供數(shù)據(jù)自動(dòng)化、服務(wù)器配置、云端建設(shè)和應(yīng)用程序配置的系統(tǒng)管理。事件驅(qū)動(dòng)的云端基礎(chǔ)架構(gòu)自動(dòng)化工具,可以自動(dòng)運(yùn)行DevOps工作流程中的任務(wù)。Deseret Digital Media已經(jīng)采用SaltStack自動(dòng)化運(yùn)行環(huán)境長達(dá)兩年,其特點(diǎn)是大約200個(gè)虛擬機(jī)用于運(yùn)轉(zhuǎn)生產(chǎn)和登臺(tái)環(huán)境。
Deseret Digital的開發(fā)部主管Justin Carmony表示,SaltStack“使操作更加貼近開發(fā)者”。Deseret Digital有三個(gè)運(yùn)營人員和30個(gè)開發(fā)者:SaltStack讓研發(fā)與運(yùn)營統(tǒng)一戰(zhàn)線,比如在新服務(wù)器配置上。一般來說,運(yùn)營和研發(fā)會(huì)一直爭(zhēng)吵,無法達(dá)成統(tǒng)一意見。而SaltStack提供了一種通用的方法和通用語言來管理服務(wù)器,從而有助于雙方消除誤會(huì),方便溝通。
6. ScriptRock GuardRail
GuardRail提供了配置監(jiān)控,連續(xù)監(jiān)測(cè)機(jī)器的配置狀態(tài)。它可以確保用戶的生產(chǎn)環(huán)境是符合質(zhì)量保證以及測(cè)試和開發(fā)環(huán)境的。VersionOne,一個(gè)靈活項(xiàng)目管理平臺(tái)的制造商,在遇到的配置漂移和自動(dòng)化的挑戰(zhàn)后,果斷轉(zhuǎn)向了GuardRail。
“開發(fā)者走捷徑使自動(dòng)化更易實(shí)現(xiàn)。為了在新的代理上運(yùn)行已有創(chuàng)建,他們改變了之前用于其他創(chuàng)建的代碼。于是基礎(chǔ)設(shè)施的不穩(wěn)定破壞了兼容多個(gè)生成代理的可能性。” VersionOne 的產(chǎn)品經(jīng)理Ian Buchanan在案例分析中如是說。“而有了GuardRail,我們現(xiàn)在可以了解到任何生成代理是如何配置的,所以我們能夠依照我們的意愿,確實(shí)地?cái)U(kuò)展到盡可能多的代理。”現(xiàn)在,VersionOne可以直觀的看到配置漂移,可以記錄預(yù)期,并創(chuàng)造了人類可讀的測(cè)試,這相當(dāng)于節(jié)省了一個(gè)專職的測(cè)試人員。
7. Splunk
Splunk是在整個(gè)應(yīng)用程序的生命周期中實(shí)時(shí)尋找和修復(fù)問題的工具,它使開發(fā)者能夠直接看到生產(chǎn)環(huán)境中的數(shù)據(jù),而無需訪問生產(chǎn)機(jī)器。Splunk協(xié)助用戶進(jìn)行DevOps過程,包括持續(xù)的集成和資源配置。
User EnerNOC使用Splunk大概五年了,這是一家為電網(wǎng)運(yùn)營商等提供能量智能軟件的公司。“Splunk從根本上改變我們操作生產(chǎn)系統(tǒng)的方式,”EnerNOC 公司的首席工程師James Nichol介紹說,“它使技術(shù)和非技術(shù)用戶都能夠深入了解一個(gè)非常復(fù)雜的系統(tǒng),這個(gè)系統(tǒng)原本是他們無法了解的。我們已經(jīng)有了虛擬服務(wù)器和開發(fā)經(jīng)理,服務(wù)臺(tái)運(yùn)營商也建立了儀表板和警報(bào),并開始深入挖掘數(shù)據(jù)——沒有Splunk,這些都是不可能實(shí)現(xiàn)的。”