Devops是一组过程、方法与系统的统称,用于促进开发( 应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。Devops与敏捷开发的不同在于其强调提升开发到运维的效率,而敏捷开发重点强调的是需求到开发的过程。开发和运维思维差异大,开发希望快快快,运维希望稳稳稳;核心目的: 运维更安全,更敏捷高效;




与devops有多远:



1.写完代码都可以部署生产环境,不需要别人帮助;



2.有很多监控、运维工具可以轻松处理线上各种问题;



3.我直接为线上用户体验负责,自己搞的自己背锅;




误区:



全栈 = Devops



Devops就不用运维了



DevOps后开发效率一定会提升




为什么使用devops:

  1. 可预测性: DevOps 可以显着降低新版本的故障率。
  2. 自愈性: 可以随时将应用回滚到较早的版本。
  3. 可维护性: 在新版本崩溃或当前系统不可用的情况下,可以毫不费力地进行恢复。
  4. 上线时间: DevOps 通过简化软件交付流程将上线时间缩短至50%。对于互联网和移动应用时间更短。
  5. 更高的质量: DevOps 帮助团队提高应用程序开发的质量。
  6. 降低风险: DevOps 在软件交付的生命周期中包含安全检查。它有助于减少整个软件生命周期中的安全风险。
  7. 弹性: 软件系统的运行状态更稳定,更安全,更改是可审计的。
  8. 成本效益: DevOps 在软件开发过程中提供了成本效益。
  9. 将大的代码库分成小块: DevOps 是基于敏捷编程方法的。因此,它允许将大的代码库分解为更小且易于管理的块。

devops的原则:




  1. 以客户为中心: DevOps 团队必须以客户为中心,因为是他们不断向我的产品和服务投资。
  2. 端到端的责任: DevOps 团队需要在产品的整个生命周期提供性能支持。这提高了产品的水平和质量。
  3. 持续改进: DevOps 文化专注于持续改进,以尽量减少浪费。它不断加快产品或服务改进的速度。
  4. 自动化一切: 自动化是 DevOps 流程的重要原则。这不仅适用于软件开发,同时也适用于整个基础架构环境。
  5. 作为一个团队工作: 在 DevOps 文化角色中,设计人员,开发人员和测试人员已经定义。他们所需要做的就是作为一个团队完成合作。
  6. 监控和测试所有内容: DevOps 团队拥有强大的监控和测试程序是非常重要的。



什么时候使用 DevOps ?

DevOps 应该用于大型分布式应用程序,例如电子商务站点或托管在云平台上的应用程序。

什么时候不使用 DevOps?

它不应该用于关键任务应用程序,如银行,电力设施和其他敏感数据站点。此类应用程序需要对生产环境进行严格的访问控制,详细的变更管理策略,完善的数据中心访问控制策略。



devops实践:



云效是阿里云的devops产品,流水线的流程为: 代码管理->构建编译(打包)->部署;




代码管理: 

 采用git管理代码;

构建:  

(1). 需要指定构建集群,构建集群有多种选择: 阿里云自带的构建集群;自己创建构建集群;自己的集群可以选用自己的ECS主机也可以选择可以联通公网的其它主机;在自有主机上需要安装阿里云的agent;



 (2). 需要指定构建镜像,阿里云给我们提供了几个构建环境模板(如gcc模板,python模板),但是对于C++开发者来说很多时候构建条件并不满足,我需要的cmake上面就没有安装,这种情况我们可以指定自定义构建环境,自定义环境简单来说就是选择自己的docker镜像;docker镜像一定要基于阿里云的镜像模板来进行构建,可以选择最基础的镜像来构建,也可以基于现在的某个镜像进行修改;我是在构建环境上先部署阿里云的gcc的镜像,然后解包在其中安装上cmake创建新的镜像上传到docker的镜像仓库中的,这里有一点要注意,我们可以使用阿里云的容器镜像服务ACR,这样下载镜像会比较快,如果镜像仓库的位置和ECS在同一区域,部署镜像还可以使用VPC网络, 这里需要使用镜像的VPC网络地址路径;



部署:



 部署同样可以选择ECS和自有主机,可以选择agent通过agent部署;




一些思考:



1.可以考虑使用阿里云的流水线在内网编译部署;即将编译主机和部署主机都选择为内网的自有主机;



2.自己在内网搭建环境实行devops:



 代码需要确保大家都已经提交,这里能减少部署的工作量;



 如果将编译环境放在docker中,这样能减少污染,同时也可以大家共用,减少大家的重复劳动;