7個變革DevOps的工具
1. 簡介
隨着公司業務的不斷迅速增長,使得管理復雜的IT基礎設施需求變得更為艱難。解決應對這一復雜變幻的挑戰的最佳方法是讓開發團隊和運維團隊緊密協作,實現靈活應對。擁有一個DevOps專家團隊可以實現在最少時間服務中斷的情況下實現IT基礎設施的動態伸縮。
DevOps團隊執行各種任務, 如:
- 新虛擬機的配置
- 配置網絡設備和服務器
- 應用程序部署
- 收集和聚合的日志
- 性能監視服務、網絡和應用程序
- 報警和自動修復的問題
- 服務器和服務可用性監控
如果不使用正確的工具集來執行這些任務將會是一件即費時又費錢的事。某些DevOps工具需要巨大的投資, 而有一些卻很容易獲取,因為它們是開源。你可以進行一個簡單的成本效益分析, 然后選擇一組工具, 幫助你解決當前應用場景下遇到的問題。
2. 7個變革DevOps的工具
以下是7個頂級DevOps工具,將徹底改變DevOps的未來。

2.1 Docker
容器能幫助結合應用程序及其依賴項封裝到一個包中,因此開發人員和系統管理員可以放心的將應用程序運行在任何linux系統上,而無需擔心系統環境和配置存在差異化。
近幾年,一個名叫DOCER的新容器技術獲得了業界的青睞,許多DevOps專家和公司都在嘗試加快使用這一技術的步伐。許多公司正計划着將他們的應用程序部署方式從虛擬機/物理服務器(VMs/Servers)切換為容器化的部署方式。
使用Docker技術使你能夠用容器化的技術創建、部署和運行應用程序。Docker和虛擬機(VM)有些相似,但有所不同,Docker依賴於Linux內核來和主機進行資源隔離。Docker使用命名空間,cgroup,LXC等內核功能實現容器資源和主機資源的隔離,從而提高了應用的性能、減少了應用的大小。
Docker的日益普及歸因於這一事實,一些領先的組織在早期采用了這項技術,這里有一些有趣的數據描述了Docker的快速普及情況。

下面是使用Docker的一些利好:
- 快速應用部署
Docker容器擁有對運行時環境的最小要求,這減少了應用部署文件的大小和部署時間。 - 可移植性和復用性
一旦你編譯生成好了一個docker image, 它就可以用docker engine部署到任何機器上。比如說,同一個docker image可以部署運行在生產、測試和staging階段上的機器。 - 應用配置 vs 系統環境配置
docker image中可以集成應用運行環境所需的所有環境配置和應用設置。 - 版本控制和組件重用
你可以跟蹤你的容器的版本更新,檢查版本差異,如果有需要的話,可以回滾到以前的版本。容器會復用之前使用的layer中組件,這使得它非常輕量化。 - 更好的CI/CD管道
從開發到生產環境,docker為應用程序提供了一個一致的環境,從而使得代碼開發、測試和部署管道變得更快速、高效和容易。
我們這樣使用Docker
我們所有的應用都有一個基礎的docker image,在很短的時間里,我們可以很快地將它們部署到開發/staging/生產環境中,並對這些images進行更新和維護。Docker幫助我們在多個docker容器里對資源進行分配和簡單隔離,改善了我們的構建管道,並讓我們在構建自身過程中運行完整的合理性測試。
2.2 Jenkins
龐大的插件庫,可實現高度的可擴展和定制化。
下面是使用Jenkins的一些利好:
- 軟件/應用程序測試
- 自動化代碼部署
- 構建和測試報告失敗
- 運行Shell腳本
- 與許多其他工具集成像Maven,Ant,Docker,Git等。
- 像Cron作業自動化任務
這里有一些有趣的數據描述了Jenkins的使用普及情況。

我們這樣使用Jenkins
Jenkins允許我們使用其龐大的插件庫進行自定制,所以我們使用它來進行完整的構建和部署。在Jenkins的幫助下,我們實現了自動化加載測試環境。Jenkins從GIT版本中拉取最新的提交版本后,自動加載測試環境並執行加載測試。我們也使用Jenkins來實現一鍵按需性能測試環境的搭建。
2.3 New Relic:應用性能監測
New Relic是一個非常著名的應用程序性能監測工具。它能獲取應用程序關鍵性的性能數據,如應用程序加載時間。使用New Relic你可以監視你的應用程序在世界各地的響應時間以及一些核心的應用組件如關鍵事務、自定義錯誤記錄、外部服務調用和可伸縮性/負載分析等。
下面是使用New Relic提供的一些監測解決方案:
- APM
幫助你監測應用程序的性能。 - 移動設備
通過提供端對端日志、錯誤信息以及各角度下的吞吐量等信息,幫你監視和管理iOS/Android應用程序的性能。 - 服務器
提供服務器健康狀態的最新信息以及服務器上CPU、內存以及硬盤等狀態最新變化的事件通知等。 - 瀏覽器
對用戶在網站上的使用體驗提供深入和可操作的優化策略和見解。 - 集成環境
提供自動化,可編寫腳本的工具來監控你的網站,關鍵業務事務和API端點。 - 洞見
收集和分析你的軟件資源,並提供可視化的數據見解來提高你的業務增長。


New Relic是應用性能監控市場的領導者,它能指出你應用程序中真正的痛點。
我們這樣使用New Relic
New Relic APM 幫助我們診斷出應用程序中的瓶頸,包括耗時最長的查詢和模塊。New Relic Servers 幫助我們監控服務器的關鍵指標如CPU、網絡、磁盤、內存、進程。New Relic Synthetics 幫助我們監控在全球范圍內的私有端點。
2.4 Ansible
在過去的十年來,雲計算越來越被大幅地采用。雲服務不再是一個簡單的存儲和檢索服務,而是一個運行完整的業務關鍵程序的有用技術。隨着雲計算的發展,大大增加了基礎設施和環境的復雜性,通過手動更新來管理整個應用程序堆棧和基礎設施變得不再可行。作為一個自動化(配置管理工具)平台, Ansible允許你持續不斷地定義,建立和維護復雜的雲基礎設施。
下面是使用Ansible的一些利好:
- Ansible是開源的
- Ansible能用於以下方面:
a. 系統配置 b. 持續集成 c. 管理應用部署 d. 編制聯排 - 無代理架構
它適用於ssh協議,因此不需要安裝遠程代理。 - 輕量級,易於使用
- 簡單的配置語言(使用YAML文件)
我們這樣使用Ansible
Ansible允許我們集中管理所有的變化。我們也使用Ansible在EC2實例群上安裝和更新軟件包,如apt-get update,docker, 漏洞檢測(shellshock 和 heartbleed)等。
2.5 SaltStack
盡管在配置管理領域,Chef和Puppet同樣是市場領先者,SaltStack在各大領先的DevOps組織中還是迅速取得了一席之地。SaltStack使用Python開發, 它基於推式方法如推送配置文件到客戶端。SaltStack需要通過主服務器和代理部署到目標服務器進行通信和控制,它使用ZeroMQ通訊層, 這使得它相對比其他的配置管理工具更快。
下面是使用SaltStack的一些利好以及應用場景:
- 非常高的性能
- 容易擴展和部署
- 內部透明,很容易看到內部細節。
- 輸入、輸出和配置一致——都采用YAML
SaltStack的一些特性:
- 使用在master和minion之間采用ZeroMQ通訊協議,比ssh協議要快很多
- 支持多主機架構,因此能實現快速擴展和容錯。
2.6 Splunk
我們發現在服務器和雲平台上有大量的可用數據。Splunk是一個可以從這些海量數據中獲取洞見的數據平台。Splunk讓你緊密關注通常被忽略的數據。Splunk提供的洞見幫助企業分析數據提供決策,從而提高生產力和盈利能力。Splunk在一個可搜索的數據中心捕獲、索引和關聯實時數據,並由此生成圖表,報告、警報、可視化信息。
下面是使用SaltStack的一些利好以及應用場景:
- 從任何可能的數據源收集和索引日志和機器數據
- 強大的搜索、分析和可視化功能
- 提供安全、IT運營、商業分析等方面的應用解決方案
- 提供不同規模、安全性和可用性,以適合任何組織
- 可用作為一個軟件或SaaS解決方案
2.7 Kubernetes
Kubernetes是一個開源的docker編排工具,它是一個輕量級、多重雲、可擴展和自愈平台。它可幫助你即時擴展你的應用程序、發布推出新的功能、優化硬件使用資源。Kubernetes是Google於2014年啟動的一個項目。
下面是使用Kubernetes的一些關鍵特性:
- 自動bin打包
- 水平擴展
- 自動發布和回滾
- 自愈
- 服務發現和負載均衡器
- 密鑰和配置管理
- 存儲編排
- 批處理執行
我們這樣使用Kubernetes
Kubernetes幫助我們減少QA/Prod環境上的支出,因為它使我們能夠更好地利用現有的資源。Kubernetes加速構建和部署次數從每周30增長到55。Kubernetes提供開箱即用的部署特性(如滾動更新),我們可以做零停機生產環境部署。
在過去的幾年里,docker被大幅度地使用,下面是一些關鍵統計數據,顯示最近被使用的容器聯排工具的基本情況。

3. 結論
隨着越來越多的公司組織把他們的開發和運營團隊緊密結合,使用上述工具,將能幫你更有效地提高產品的交付管道。基於用例場景以及功能特性等,你可以很容易地選擇最適合你的DevOps工具。在Welldum Studio, 我們會根據用戶的使用場景和用例選用上述合適的工具。通過這種方式,我們顯著地減少花費在日常操作任務的時間。我們曾在一個項目上通過使用Kubernetes在docker部署微服務的架構模式將部署時間從20分鍾減少為3分鍾;我們也使用New Relic來監測應用程序的瓶頸。
4. 關於作者
David, CTO of Welldum Studio
David有10多年豐富的互聯網開發和架構經驗,曾就職於騰訊無線產品部,負責手機網游的開發工作;后赴美加入硅谷某大型互聯網門戶網站任全棧工程師,負責網站的整體架構、性能優化以及數據挖掘等工作。歡迎添加作者微信進行技術探討和交流。

5. 關於Welldum Studio
Welldum Studio成立於2014年,核心團隊來自硅谷、BAT、清華大學和中科院,我們提供全棧式技術開發服務。我們的服務范圍包括UX/UI設計、網站開發、App開發、微信開發、游戲開發、大數據挖掘和大規模分布式高負載並發系統的設計開發以及性能優化等。我們的官網是 http://www.wlelldum.com, 歡迎咨詢交流。
注:本文是Welldum Studio(http://www.welldum.com)的原創文章,版權所有,轉載請注明文章的出處。
