10分鐘瞭解DevOps及經常使用工具集

圖片

目前在國外,互聯網巨頭如Google、Facebook、Amazon、LinkedIn、Netflix、Airbnb,傳統軟件公司如Adobe、IBM、Microsoft、SAP等,亦或是網絡業務非核心企業如蘋果、沃爾瑪、索尼影視娛樂、星巴克等都在採用DevOps或提供相關支持產品。那麼DevOps到底是怎樣一回事?java

DevOps的概念


ios

DevOps(Development和Operations的組合詞)是一組過程、方法與系統的統稱,用於促進開發(應用程序/軟件工程)、技術運營和質量保障(QA)部門之間的溝通、協做與整合。程序員


它是一種重視「軟件開發人員(Dev)」和「IT運維技術人員(Ops)」之間溝通合做的文化、運動或慣例。以 IT 自動化以及持續集成(CI,Continuous Integration)、持續部署(CD,Continuous Deployment)爲基礎,來優化程序開發、測試、系統運維等全部環節。透過自動化「軟件交付」和「架構變動」的流程,來使得構建、測試、發佈軟件可以更加地快捷、頻繁和可靠。web


DevOps是爲了填補開發端和運維端之間的信息鴻溝,改善團隊之間的協做關係。不過須要澄清的一點是,從開發到運維,中間還有測試環節。DevOps其實包含了三個部分:開發、測試和運維。算法


回顧軟件行業的研發模式,能夠發現大體有三個階段:瀑布式開發、敏捷開發、DevOps。DevOps很早以前就被提出來,可是,最近纔開始受到愈來愈多的企業重視和實踐。由於DevOps的發展是獨木不成林的,如今有愈來愈多的技術支撐。微服務架構理念、容器技術使得DevOps的實施變得更加容易,計算能力提高和雲環境的發展使得快速開發的產品能夠馬上得到更普遍的使用。編程

DevOps的常見工具


ubuntu


版本控制 & 協做開發瀏覽器

  • Git | Git是一個開源的分佈式版本控制系統,用以有效、高速的處理從很小到很是大的項目版本管理。服務器

  • GitLab | GitLab是一個利用Ruby on Rails開發的開源應用程序,實現一個自託管的Git項目倉庫,可經過Web界面進行訪問公開的或者私人項目。網絡

  • Gerrit | Gerrit是一個免費、開放源代碼的代碼審查軟件,使用網頁界面。利用網頁瀏覽器,同一個團隊的軟件程序員,能夠相互審閱彼此修改後的程序代碼,決定是否可以提交,退回或者繼續修改。它使用Git做爲底層版本控制系統

  • Subversion | Subversion是一個版本控制系統,相對於的RCS、CVS,採用分支管理系統,它的設計目標就是取代CVS。互聯網上免費的版本控制服務多基於Subversion。

自動化構建 & 測試

  • Maven | Maven除了以程序構建能力爲特點以外,還提供Ant所缺乏的高級項目管理工具。因爲 Maven 的面向項目的方法,許多 Apache Jakarta 項目如今使用 Maven,並且公司項目採用 Maven 的比例在持續增加

  • JMeter | Meter 是 Apache 組織的開放源代碼項目,它是功能和性能測試的工具,100% 的用 java 實現。

  • Gradle | Gradle 就是可使用 Groovy 來書寫構建腳本的構建系統,支持依賴管理和多項目,相似 Maven,但比之簡單輕便

  • Apache Ant | Apache Ant是一個將軟件編譯、測試、部署等步驟聯繫在一塊兒加以自動化的一個工具,大多用於Java環境中的軟件開發。

持續集成 & 持續交付

  • Hudson | Hudson是一個管理和監控持續測試和集成的工具。Hudson的關鍵特性包括對各類系統的支持,包括源代碼管理、應用服務器、代碼分析工具、測試框架、構建工具、測試失敗的實時通知、變動集支持,以及易於安裝和配置的過程。

  • Jenkins | Jenkins的前身是 Hudson,它是一個可擴展的持續集成引擎。

  • Go | Go 是 Google 開發的一種編譯型,併發型,並具備垃圾回收功能的編程語言

容器

  • Docker | Docker 是一個開源的應用容器引擎,讓開發者能夠打包他們的應用以及依賴包到一個可移植的容器中,而後發佈到任何流行的 Linux 機器上,也能夠實現虛擬化。

  • Supergiant | Supergiant創建在Kubernetes之上,是一個用於容器管理的開源平臺。它被用於Kubernetes在幾分鐘內部署在多個雲上。SupergiantAPI用於簡化生產部署。藉助Supergiant的打包算法,能夠下降硬件成本,而且只需使用計算效率所需的硬件。

  • Rocket | Rocket (也叫 rkt)是 CoreOS 推出的一款容器引擎,和 Docker 相似,幫助開發者打包應用和依賴包到可移植容器中,簡化搭環境等部署工做

  • Ubuntu |  LXD 是 ubuntu 基於 LXC 技術的重構,容器自然支持非特權和分佈式

配置管理

  • Ansible | Ansible 提供一種最簡單的方式用於發佈、管理和編排計算機系統的工具。Ansible 是一個模型驅動的配置管理器,支持多節點發布、遠程任務執行。默認使用 SSH 進行遠程鏈接。無需在被管理節點上安裝附加軟件,可以使用各類編程語言進行擴展。

  • Saltstack | Saltstack 能夠看作是func的加強版+Puppet的弱化版。使用Python編寫,能夠快速基於EPEL部署。Salt是一個開源的工具用來管理你的基礎架構,可輕鬆管理成千上萬臺服務器。

  • RunDeck | RunDeck 是用 Java/Grails 寫的開源工具,幫助用戶在數據中心或者雲環境中自動化各類操做和流程。經過命令行或者web界面,用戶能夠對任意數量的服務器進行操做,大大下降了對服務器自動化的門檻。

微服務平臺

  • Consul | Consul適合用於使用微服務構建的現代彈性應用程序當中的服務發現和配置。這款開源工具充分利用了爲服務提供內部DNS名稱的最新技術。它充當一種代理,可幫助登記和註冊名稱,讓你可以訪問服務名稱,而不是特定的機器

  • Kubernetes | Kubernetes 是來自 Google 雲平臺的開源容器集羣管理系統。基於 Docker 構建一個容器的調度服務。該系統能夠自動在一個容器集羣中選擇一個工做容器供使用。

  • OpenShift | OpenShift 是由紅帽推出的一款面向開源開發人員開放的平臺即服務(PaaS)。OpenShift經過爲開發人員提供在語言、框架和雲上的更多的選擇,使開發人員能夠構建、測試、運行和管理他們的應用。

  • Cloud Foundry | Cloud Foundry 是VMware於2011年4月12日推出的業界第一個開源PaaS雲平臺,它支持多種框架、語言、運行時環境、雲平臺及應用服務,使開發人員可以在幾秒鐘內進行應用程序的部署和擴展,無需擔憂任何基礎架構的問題。

日誌記錄

  • ELK:Elasticsearch、Logstash和Kibana | ELK堆棧是現代IT環境中最多見的日誌分析解決方案。它收集來自某個環境中的全部服務、應用程序、網絡、工具、服務器及更多系統的日誌後,放入到一個集中式位置,以便處理和分析。

  • CollectD | collectd 是一個守護(daemon)進程,用來收集系統性能和提供各類存儲方式來存儲不一樣值的機制。好比以RRD 文件形式。

監控告警 & 分析

  • Nagios | Nagios 是一個監視系統運行狀態和網絡信息的監視系統。Nagios能監視所指定的本地或遠程主機以及服務,同時提供異常通知功能等。

  • zabbix | zabbix 是一個基於Web界面的提供分佈式系統監視以及網絡監視功能的企業級的開源解決方案。

  • Kibana | Kibana 是一個爲 Logstash 和 ElasticSearch 提供的日誌分析的 Web 接口,可以使用它對日誌進行高效的搜索、可視化、分析等各類操做。

圖片

相關文章
相關標籤/搜索