首先看下DevOps的定义:
DevOps(英文Development和Operations的组合)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。它的出现是由于软件行业日益清晰地认识到:为了按时交付软件产品和服务,开发和运营工作必须紧密合作。
对于DevOps的提出已经很多年,其主要的推动仍来自两个方面:
1. 业务和需求驱动下,推动敏捷方法论,敏捷下需要更加短周期,更快的发布和交付。
2. 技术和运维部门需要衔接,在PaaS和容器技术发展下,进一步推动这部分陷阱的自动化。
虽然是三方交融地方为DevOps的内容,但是可以看到DevOps本身更多的是要解决两大类协同和自动化的问题,其一是开发部门和QA协同,其二是开发部门和运维的协同。
1. 第一个问题的解决:已有的持续集成方法论
2. 第二个问题的解决:当前由云平台,微服务架构,容器技术发展推动的自动化发布和监控运维
把上面思路理清楚后,对于DevOps要做或需要解决的事情也就更加明确的。
1. 实现软件和硬件基础设施(云平台资源)的对接(自动部署,动态扩展)-PaaS,Docker
2. 实现不同环境间的自动迁移 – 持续集成+自动化迁移
3. 能够满足更加高频率的发布节奏,单次发布更加快速 – 持续集成
4. 能将QA和QC部分检验和审查工作自动衔接到发布和交付过程 – 自动化测试,自动化监控
要做好DevOps基于上面的分析就可以从持续集成和PaaS平台融合两方面来谈
DevOps和持续集成
对于持续集成我前面已经专门有文章谈到过,这个没有提DevOps概念的时候也在做持续集成,通过持续集成真正实现了版本和配置管理,单元测试,自动构建,环境迁移和配置修改,集成顺序规划这些关键内容。
比如我们常说的一个工具组合:Jenkins,Maven,Ant , Junit,SubVersion 。 为了更好持续异地协同开发,以及后续和公有云PaaS融合,版本库可以转到GitLab或GitHub上面。
在持续集成里面我们经常会谈一个重点,即业务系统是基于组件化架构的,即各个组件可以独立管理和部署,组件之间通过服务接口松耦合。只有这样才能将后续增量发布影响降低到最小。这个概念现在转到微服务架构里面来进一步实现。
DevOps和PaaS平台融合
对于和PaaS平台融合是DevOps的第二个内容,我们希望的就是我们在测试态测试和验证完成的部署包能够自动的交付和迁移到生产环境的托管资源中。在这里就涉及到PaaS平台提供的自动部署和托管,资源动态管理等方面的能力。
比较重的:Cloudfoundry或Cloudify能提供完整的解决方案。
比较轻的:我们可以基于Docker容器技术+Kubernetes+Puppets来实现自动化和动态资源管理。
在PaaS平台下,由于部署和资源的动态管理都被PaaS平台完全接管,因此更加需要整个平台必须提供完整的日志管理,传统IT网管,中间件资源池监控,包括到APM层性能分析的完整解决方案和工具集。要实现这些你可以在监控方面用Nagios或zabbix解决方案。日志管理和分析可以用ELK方案,整个过程中的自动化脚本用Puppet等。
一个DevOps是否执行的好基础指导是敏捷和持续集成的方法论,难点在多版本管理和微服务架构设计(组件划分是否合理)和后期的监控运维。
DevOps是与企业数字化转型、IT敏捷和迭代开发等相关联的,侧重于工具、流程和团队协同,既符合市场需要又兼具强大的生命力和发展空间。基于DevOps可以重塑企业的整个IT项目实施与管理模式,打破传统项目(需求、研发、测试、发布、运营)管理流程与角色分工,构建全生命周期的项目管理与协作流程,实现价值交付的最大化。
当前,企业研发运营体系正在向多元化方向发展,包含了DevOps、DevSecOps、AIOps、BizDevOps、FinOps 等内容的XOps体系逐渐落地并深化应用,为企业提供了信息化建设实施路径和建议,实现企业数字化转型行稳致远。
如企业级BizDevOps研发管理平台,即实现了软件架构升级革新、需求前置、研发实践体系化、知识库协作、自动化度量等能力,牢固了企业数字化转型的技术底座。同时,全方位改善了软件质效体系,实现信息化项目交付的高效率和高质量。
再比如像我们为浙商银行打造的基于DevOps的效能提升软件质效体系,该方案从软文化建设—流程规范、硬能力建设—平台工具两个方面着手,解决了浙商银行过去面临的过程管控无抓手、流程机制不完善、质量控制不深入、软件项目过程中人工操作多且出错风险高等问题。
原创文章,作者:普尔小编,如若转载,请注明出处:http://www.puerpx.cn/pxwd/8042.html