1. 程式人生 > >DevOps最佳工具集實踐

DevOps最佳工具集實踐

在列出DevOps 工具鏈之前,介紹一下什麼是DevOps,雖然DevOps這個概念現在還沒有標準的定義,但我們可以追溯一下其過去九年的歷史發展過程(從2009年~2017年),列出幾個相對明確又有所不同不同的定義,從而能夠比較全面瞭解DevOps的內涵。
【2009】 DevOps是一組過程、方法與系統的統稱,用於促進開發、技術運營和QA部門之間的溝通、協作與整合;
【2011】快速響應業務和客戶的需求,通過行為科學改善IT各部門之間的溝通, 以加快IT組織交付滿足快速生產軟體產品和服務的目
【2015】DevOps強調溝通、協作、整合、自動化和度量,以幫助組織快速開發軟體產品,並提高操作效能和質量保證;強調自動化軟體交付和基礎設施變更的過程,以建立一種文化和環境,通過構建、測試和釋出軟體等方法,可以快速、頻繁地、更可靠地釋出軟體。
【2016】 DevOps的目標是建立流水線式的準時制(JIT)的業務流程,以獲得最大化業務成果,例如增加銷售和利潤率,提高業務速度、減少運營成本。
【2017】一個軟體工程實踐,旨在統一軟體開發(Dev)和軟體操作(Ops),與業務目標緊密結合,在軟體構建、整合、測試、釋出到部署和基礎設施管理中大力提倡自動化和監控。DevOps的目標是縮短開發週期,增加部署頻率,更可靠的釋出。 
--2018-02-07 朱少民 軟體質量報道

在很長一段時間開發和運維是一個硬幣的兩面,看起來雙方分工清晰,需要較少的協同。然而現代的軟體開發、部署執行越來越多的採用分散式架構、叢集環境,這就要求開發人員同運維人員的技能出現了必要的交集,雙方需要緊密協作才能確保應用的正常執行。隨著越來越多的企業IT部門的團隊在專案中採用敏捷過程進行應用的迭代開發,DevOps流程和工具集的整合應用將不僅幫助團隊有效的提升產品程式碼質量,同時大大提高交付速度。

開發人員需求:
持續程式碼修訂、快速修復缺陷
快速響應需求、加快特性交付

運維人員需求:
減少頻繁更新、確保應用持續穩定執行
自動化基礎設定配置管理,持續監控告警
提供可以自助的應用部署服務

不同的需求導致的衝突:


需要改變:軟體開發就是一個變化的過程(新功能、Bug缺陷修復),業務要求快速變化迭代
懼怕改變:一旦軟體部署到生產環境,確保其穩定執行,避免變動


簡單地說,DevOps是敏捷研發中持續構建(Continuous Build,CB)、持續整合(Continuous Integration,CI)、持續交付(Continuous Delivery,CD)的自然延伸,從研發週期向右擴充套件到部署、運維,不僅打通研發的“需求、開發與測試”各個環節,還打通“研發”與“運維”。DevOps 適合“軟體即服務(SaaS)”或“平臺即服務(PaaS)”這樣的應用領域,其顯著的特徵就是:
覆蓋了產品管理、專案管理、持續整合、自動部署、交付流水線、精益度量 6 個領域能力;


打通使用者、PMO、需求、設計、開發(Dev)、測試、運維(Ops)等各上下游部門或不同角色;
打通業務、架構、程式碼、測試、部署、監控、安全、效能等各領域工具鏈;
有助於定義設計方法、開發方法、測試方法、安裝方法、環境管理方法、配置管理方法、應用部署方法、反饋收集方法、程式碼改善方法和創新方法。

我們看到DevOps連線軟體開發和運維,同時有效的減少了兩個關鍵角色需求的衝突,搭建了雙方協同的橋樑。DevOps不是一種方法學,也不是一種框架,而是一個打破封閉孤立,體現自動協同的原則。實施DevOps可以將其劃分為如下的生命週期階段:


自動化是整個DevOps實現的核心,對應生命週期的每個階段都可以選擇開源工具框架或商業產品。

 


下面我們就展開DevOps的工具鏈:


更完整的結構化描述: 


DevOps常用工具集清單:

Operating Systems
Linux (RHEL, CentOS, Ubuntu,CoreOS)
Unix (Solaris, AIX, HP/UX, etc.)
Windows
Mac OS X

Infrastructure as a Service
Amazon Web Services
Azure
OpenStack
Aliyun

Virtualization Platforms
VMware
VirtualBox
Vagrant

Containerization Tools
Docker
Rocket
Kubernetes

Linux OS Installation
Kickstart
Cobbler
Stacki
Foreman

Configuration Management
Ansible
Puppet
Chef
Salstack

Compile and Build Systems
Gradle
Maven
Ant

Integration System
Jenkins
Hudson
Bamboo

Application Servers
JBoss
Tomcat
Jetty
Glassfish
Weblogic

Web Servers
Nginx
Apache

Queues, Caches
ActiveMQ
RabbitMQ
Memcache

Databases
Percona Server
MySQL
PostgreSQL
MongoDB
Cassandra
Redis
Oracle
MS SQL

Monitoring, Alerting, and Trending
Nagios
Graphite
Ganglia
Cacti
PagerDuty

Logging
PaperTrail
Logstash
Loggly
ELK
Splunk

Process Supervisors
Monit
Runit
Supervisor
God

Security
Snorby Threat Stack
Tripwire
Snort

Miscellaneous Tools
Multihost SSH Wrapper
Code Climate

 

文章參考:

整理了一份史上最全的DevOps 工具鏈
DevOps工具集最佳實踐分享