3W2H 解说DevOps

简介: 3W2H 解说DevOps

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)、低风险的发布手段

  • 蓝绿部署
  • 灰度发布
  • 暗部署

五、HOW TO CHANGE(DevOps带来什么价值)

  • 对客户的价值:响应更快
    DevOps提升版本发布速度,发布周期用天衡量,对客户来说需求的响应速度更快。
  • 对产品的价值:提升质量
    每次减少发布范围,降低出错的概率,提升质量;出现问题,可以及时响应;通过回退,或者快速修复,提升产品质量。
  • 对团队的价值:激活组织,简化管理,提升效能
    通过合理的拆解,降低耦合度,通过职责明确提高团队积极性;减少吃大食堂,相互等待,上下文切换导致的效能降低。对团队同学 ,可以快速成长,承担责任也有很大帮助;打通开发、运维边界,减少上下文切换。另外通过合理的微服务拆分,单个任务的难度变低;对管理者可以释放低效的组织协同工作。

目录
相关文章
|
Ubuntu
Ubuntu安装aptitude
Ubuntu安装aptitude
365 0
websocket封装带心跳和重连机制(vue3+ts+vite)
websocket封装带心跳和重连机制(vue3+ts+vite)
2124 0
|
8月前
|
前端开发 Java UED
从基础到进阶:Spring Boot + Thymeleaf 整合开发中的常见坑与界面优化
本文深入探讨了 **Spring Boot + Thymeleaf** 开发中常见的参数绑定问题与界面优化技巧。从基础的 Spring MVC 请求参数绑定机制出发,分析了 `MissingServletRequestParameterException` 的成因及解决方法,例如确保前后端参数名、类型一致,正确设置请求方式(GET/POST)。同时,通过实际案例展示了如何优化支付页面的视觉效果,借助简单的 CSS 样式提升用户体验。最后,提供了官方文档等学习资源,帮助开发者更高效地掌握相关技能。无论是初学者还是进阶用户,都能从中受益,轻松应对项目开发中的挑战。
414 0
|
Rust JavaScript 前端开发
【一起学Rust | 框架篇 | iced框架】rust原生跨平台GUI框架——iced
【一起学Rust | 框架篇 | iced框架】rust原生跨平台GUI框架——iced
1677 0
|
开发框架 安全 搜索推荐
如何使用vscode启动Flask并实现无公网IP远程访问内网服务
如何使用vscode启动Flask并实现无公网IP远程访问内网服务
537 0
用UDP协议实现发送接收的网络聊天室
用UDP协议实现发送接收的网络聊天室
215 0
|
人工智能 API 网络架构
【AI大模型应用开发】【LangChain系列】7. LangServe:轻松将你的LangChain程序部署成服务
【AI大模型应用开发】【LangChain系列】7. LangServe:轻松将你的LangChain程序部署成服务
558 0
如何用SCSS制作小铃铛振动/震动/摇晃/晃动的特效/效果?
如何用SCSS制作小铃铛振动/震动/摇晃/晃动的特效/效果?
|
开发工具 C++ 开发者
Qt Quick Image探秘:从底层原理到高级应用(一)
Qt Quick Image探秘:从底层原理到高级应用
535 0
|
JavaScript 前端开发
layui使用实践总结
layui使用实践总结
329 0