3W2H 解说DevOps
一、什么是DevOps
DevOps是Development和Operations两个词组合,是一组过程、方法与系统的统称,用于促进开发(技术研发部)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。它是一种重视”软件开发人员(Dev)”和“IT运维技术人员(Ops)”之间沟通合作的文化、运动或惯例。透过自动化“软件交付”和“架构变更”的流程,来使得构建、测试、发布软件能够更加地快捷、频繁和可靠。它的出现是由于软件行业日益清晰地认识到:为了按时交付软件产品和服务,开发和运营工作必须紧密合作。
通过DevOps能构建一个自动化流程,使之更加快捷、频繁和可靠的完成一个IT从开发到运维的工作流。以IT自动化及其持续集成(CI)、持续部署(CD)为基础、来优化开发、测试、系统运维等所有环节。
二、WHY 为什么有DevOps
一个软件从立项到完成交付要经历,规划、设计、编码、测试、发布部署和运维等阶段。
一个简单的项目项目,一个程序员就能完成所有的阶段;随着软件产业的日益发展壮大,软件的规模也在逐渐变得庞大。软件的复杂度不断攀升,出现了精细化分工。出现了需求工程师、软件工程师、原型设计师、软件测试工程师及其软件运维工程师等。
随着项目复杂度增加,原先采用的瀑布模型已经不能满足客户的需求,一个团队并不能完成整个项目生命周期,需要开发团队、部署团队、运维团队协作完成;只能分功能、分时小步交付。就出现敏捷开发及CI/CD开发的方式。
工业软件复杂度提供,出现对交付质量更高的要求,为了提升质量和软件的可靠性出现DevOps,DevOps不时简单把开发工程师和测试工程师和运维工程师三者分开,而是通过流程更好的融合一起。
三、WHEN DevOps什么阶段更好的引入
DevOps的引入能对产品交付、测试、功能开发和维护起到意义深远的影响。在缺乏DevOps能力的组织中,开发与运营之间存在着信息“鸿沟”──比如运营人员要求更好的可靠性和安全性,开发人员则希望基础设施响应更快,而业务用户的需求则是更快地将更多的特性发布给最终用户使用。
DevOps经常被描述为“开发团队与运维团队之间更具协作性、更高效的关系”。由于团队间协作关系的改善,整个组织的效率因此得到提升,伴随频繁变化而来的生产环境的风险也能得到降低。
DevOps有诸多优点,无论中小的团队还是大型团队,应该越早引入对团队的开发越有利。甚至开发人员应该在自己的电脑上安装简化版的DevOps的工具,作者本人就在开发环境中用Windows Docker 完成开发环境的搭建,在Docker上搭建Msql、Nginx等,并完成负载均衡和高可以用实验。
四、HOW 如何使用DevOps
1.DevOps常用的工具
- 项目管理工具(PM) :Jira、Wookteam、Zendao、Tapd、Bugzilla等
- 代码管理工具 :Gitlab、GitHub、Gitee
- 持续集成CI(Continuous Integration):Gitlab CI
- 持续交付CD (Continuous Delivery):Gitlab CD
- 镜像仓库: VMware Harbor,私服nexus
- 容器:Docker
- 编排:K8S
- 服务治理:Consul
- 系统监控工具:Prometheus、Zabbix、Observium Community
- 自动发布工具:Jenkins
2.怎么选择工具
DevOps工具较多,选择适合当前企业是最恰当。下面以JAVA开发项目组为例:
1). 代码管理工具: GitHub
2). 构建工具:maven、Ant
3). 自动部署: Forever
4). 持续集成(CI):jenkins2.0及其Pipeline插件
5).容器: Docker
6). API测试工具 : JMeter、Postman 、SoapUI
**7). Web服务器:**Apache、Nginx、IIS
3.DevOps如何落地
1)、环境管理 一切皆代码。基础设施即代码。就是用一种描述性的语言,通过文本管理环境配置,并且自动化完成环境配置的方式。
2)、低风险的发布手段
- 蓝绿部署
- 灰度发布
- 暗部署