7個變革DevOps的工具

7個變革DevOps的工具

1. 簡介

隨着公司業務的不斷迅速增加,使得管理複雜的IT基礎設施需求變得更爲艱難。解決應對這一複雜變幻的挑戰的最佳方法是讓開發團隊和運維團隊緊密協做,實現靈活應對。擁有一個DevOps專家團隊能夠實如今最少時間服務中斷的狀況下實現IT基礎設施的動態伸縮。linux

DevOps團隊執行各類任務, 如:docker

  • 新虛擬機的配置
  • 配置網絡設備和服務器
  • 應用程序部署
  • 收集和聚合的日誌
  • 性能監視服務、網絡和應用程序
  • 報警和自動修復的問題
  • 服務器和服務可用性監控

若是不使用正確的工具集來執行這些任務將會是一件即費時又費錢的事。某些DevOps工具須要巨大的投資, 而有一些卻很容易獲取,由於它們是開源。你能夠進行一個簡單的成本效益分析, 而後選擇一組工具, 幫助你解決當前應用場景下遇到的問題。shell

 

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的一些利好:網絡

  1. 快速應用部署
    Docker容器擁有對運行時環境的最小要求,這減小了應用部署文件的大小和部署時間。
  2. 可移植性和複用性
    一旦你編譯生成好了一個docker image, 它就能夠用docker engine部署到任何機器上。好比說,同一個docker image能夠部署運行在生產、測試和staging階段上的機器。
  3. 應用配置 vs 系統環境配置
    docker image中能夠集成應用運行環境所需的全部環境配置和應用設置。
  4. 版本控制和組件重用
    你能夠跟蹤你的容器的版本更新,檢查版本差別,若是有須要的話,能夠回滾到之前的版本。容器會複用以前使用的layer中組件,這使得它很是輕量化。
  5. 更好的CI/CD管道
    從開發到生產環境,docker爲應用程序提供了一個一致的環境,從而使得代碼開發、測試和部署管道變得更快速、高效和容易。

咱們這樣使用Docker

咱們全部的應用都有一個基礎的docker image,在很短的時間裏,咱們能夠很快地將它們部署到開發/staging/生產環境中,並對這些images進行更新和維護。Docker幫助咱們在多個docker容器裏對資源進行分配和簡單隔離,改善了咱們的構建管道,並讓咱們在構建自身過程當中運行完整的合理性測試。微信開發

2.2 Jenkins

在開發過程當中,代碼集成以及監測代碼改動形成的迴歸性功能缺陷是一件即費時又費力的工做。持續集成(CI)因而成了敏捷開發中很重要的一部分。CI做爲一個集成性的框架,能夠幫助開發人員和測試人員在CI服務器上對代碼更新後進行自動測試。
Jenkins是一個用於持續集成部署的開源工具。它可能不像其餘獨立CI工具(如Atlassian, Bamboo, Teamcity)那樣功能強大,但它有一個
龐大的插件庫,可實現高度的可擴展和定製化。
下面是使用Jenkins的一些利好:
  1. 軟件/應用程序測試
  2. 自動化代碼部署
  3. 構建和測試報告失敗
  4. 運行Shell腳本
  5. 與許多其餘工具集成像Maven,Ant,Docker,Git等。
  6. 像Cron做業自動化任務

這裏有一些有趣的數據描述了Jenkins的使用普及狀況。

 

 

咱們這樣使用Jenkins

Jenkins容許咱們使用其龐大的插件庫進行自定製,因此咱們使用它來進行完整的構建和部署。在Jenkins的幫助下,咱們實現了自動化加載測試環境。Jenkins從GIT版本中拉取最新的提交版本後,自動加載測試環境並執行加載測試。咱們也使用Jenkins來實現一鍵按需性能測試環境的搭建。

 

2.3 New Relic:應用性能監測

New Relic是一個很是著名的應用程序性能監測工具。它能獲取應用程序關鍵性的性能數據,如應用程序加載時間。使用New Relic你能夠監視你的應用程序在世界各地的響應時間以及一些核心的應用組件如關鍵事務、自定義錯誤記錄、外部服務調用和可伸縮性/負載分析等。

下面是使用New Relic提供的一些監測解決方案:

 

  1. APM
    幫助你監測應用程序的性能。
  2. 移動設備
    經過提供端對端日誌、錯誤信息以及各角度下的吞吐量等信息,幫你監視和管理iOS/Android應用程序的性能。
  3. 服務器
    提供服務器健康狀態的最新信息以及服務器上CPU、內存以及硬盤等狀態最新變化的事件通知等。
  4. 瀏覽器
    對用戶在網站上的使用體驗提供深刻和可操做的優化策略和看法。
  5. 集成環境
    提供自動化,可編寫腳本的工具來監控你的網站,關鍵業務事務和API端點。
  6. 洞見
    收集和分析你的軟件資源,並提供可視化的數據看法來提升你的業務增加。

New Relic是應用性能監控市場的領導者,它能指出你應用程序中真正的痛點。

 

咱們這樣使用New Relic

New Relic APM 幫助咱們診斷出應用程序中的瓶頸,包括耗時最長的查詢和模塊。New Relic Servers 幫助咱們監控服務器的關鍵指標如CPU、網絡、磁盤、內存、進程。New Relic Synthetics 幫助咱們監控在全球範圍內的私有端點。

2.4  Ansible

在過去的十年來,雲計算愈來愈被大幅地採用。雲服務再也不是一個簡單的存儲和檢索服務,而是一個運行完整的業務關鍵程序的有用技術。隨着雲計算的發展,大大增長了基礎設施和環境的複雜性,經過手動更新來管理整個應用程序堆棧和基礎設施變得再也不可行。做爲一個自動化(配置管理工具)平臺, Ansible容許你持續不斷地定義,創建和維護複雜的雲基礎設施。

下面是使用Ansible的一些利好:

  1. Ansible是開源的
  2. Ansible能用於如下方面:
    a. 系統配置 b. 持續集成  c. 管理應用部署  d. 編制聯排
  3. 無代理架構
    它適用於ssh協議,所以不須要安裝遠程代理。
  4. 輕量級,易於使用
  5. 簡單的配置語言(使用YAML文件)

 

咱們這樣使用Ansible

Ansible容許咱們集中管理全部的變化。咱們也使用Ansible在EC2實例羣上安裝和更新軟件包,如apt-get update,docker, 漏洞檢測(shellshock 和 heartbleed)等。

 

2.5  SaltStack

儘管在配置管理領域,Chef和Puppet一樣是市場領先者,SaltStack在各大領先的DevOps組織中仍是迅速取得了一席之地。SaltStack使用Python開發, 它基於推式方法如推送配置文件到客戶端。SaltStack須要經過主服務器和代理部署到目標服務器進行通訊和控制,它使用ZeroMQ通信層, 這使得它相對比其餘的配置管理工具更快。

下面是使用SaltStack的一些利好以及應用場景:

 

  1. 很是高的性能
  2. 容易擴展和部署
  3. 內部透明,很容易看到內部細節。
  4. 輸入、輸出和配置一致——都採用YAML

SaltStack的一些特性:

  1. 使用在master和minion之間採用ZeroMQ通信協議,比ssh協議要快不少
  2. 支持多主機架構,所以能實現快速擴展和容錯。

2.6  Splunk

咱們發如今服務器和雲平臺上有大量的可用數據。Splunk是一個能夠從這些海量數據中獲取洞見的數據平臺。Splunk讓你緊密關注一般被忽略的數據。Splunk提供的洞見幫助企業分析數據提供決策,從而提升生產力和盈利能力。Splunk在一個可搜索的數據中心捕獲、索引和關聯實時數據,並由今生成圖表,報告、警報、可視化信息。

下面是使用SaltStack的一些利好以及應用場景:

  1. 從任何可能的數據源收集和索引日誌和機器數據
  2. 強大的搜索、分析和可視化功能
  3. 提供安全、IT運營、商業分析等方面的應用解決方案
  4. 提供不一樣規模、安全性和可用性,以適合任何組織
  5. 可用做爲一個軟件或SaaS解決方案

2.7  Kubernetes

Kubernetes是一個開源的docker編排工具,它是一個輕量級、多重雲、可擴展和自愈平臺。它可幫助你即時擴展你的應用程序、發佈推出新的功能、優化硬件使用資源。Kubernetes是Google於2014年啓動的一個項目。

下面是使用Kubernetes的一些關鍵特性:

  1. 自動bin打包
  2. 水平擴展
  3. 自動發佈和回滾
  4. 自愈
  5. 服務發現和負載均衡器
  6. 密鑰和配置管理
  7. 存儲編排
  8. 批處理執行

咱們這樣使用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)的原創文章,版權全部,轉載請註明文章的出處。

相關文章
相關標籤/搜索