转载

简单谈下对DevOps的理解(1.19)

注:图片来自网络

简单谈下对DevOps的理解(1.19)


DevOps(英文Development和Operations的组合)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。它的出现是由于软件行业日益清晰地认识到:为了按时交付软件产品和服务,开发和运营工作必须紧密合作。

对于DevOps的提出已经很多年,其主要的推动仍来自两个方面:

1. 业务和需求驱动下,推动敏捷方法论,敏捷下需要更加短周期,更快的发布和交付。

虽然是三方交融地方为DevOps的内容,但是可以看到DevOps本身更多的是要解决两大类协同和自动化的问题,其一是开发部门和QA协同,其二是开发部门和运维的协同。

1. 第一个问题的解决:已有的持续集成方法论

把上面思路理清楚后,对于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是否执行的好基础指导是敏捷和持续集成的方法论,难点在多版本管理和微服务架构设计(组件划分是否合理)和后期的监控运维。

原文  http://blog.sina.com.cn/s/blog_493a84550102wojh.html
正文到此结束
Loading...