DevOps的核心理念是通过各种方法在各个团队之间牵线搭桥,让他们相互走到对方的世界中去,了解彼此,并提供自己的想法,帮助对方,推动团队之间的协同与合作。为此,需要在三个方面努力。
1.人员
一方面,对现有人员进行培训,鼓励他们了解别的团队面临的工作挑战等,让他们用自己的特长去审视和帮助别的团队;另一方面,想办法招一些全面的技术人才,在不同团队之间搭出一些适用的桥来。再进一步结合DevOps,解决团队之间实际的配合问题。
管理人员关注团队之间的沟通机制及氛围:
以新版本能在生产环境中可靠、稳定运行为目标,形成协作的氛围。
1)在项目的早期阶段,运维、开发与测试人员就进行沟通,可能的话坐在一起,面对面沟通。
2)在项目上线前,除了测试功能,还要关注部署、备份、监控、安全以及配置管理等,在早期发现的问题越多,越能减少后期的问题并避免影响用户体验。
3)建立各个团队的核心成员定期沟通机制。
2)了解运维如何定位并解决故障、如何监控系统的运行情况等。
3)从运维的视角修改代码,方便运维人员进行日常的变更与调整、监控与报警。
2)开发人员与测试人员一起发布版本到测试环境中;让代码在最终上线前多一层风险缓冲。
3)测试人员参与到持续测试中,实现自动化集成测试等。
2)Automation,自动化平台,主要包括自动化打包、部署和测试等部分。
3)Cloud,IaaS云或容器云基础设施平台,主要包括自动化管理和弹性可伸缩的云服务等部分。
让开发人员了解运维工作的关注点及挑战,并从开发视角帮助运维:
1)开发人员参与运维团队的内部培训,了解线上的系统。
让QA测试人员了解开发工作的关注点及挑战,并从测试角度帮助开发:
1)QA测试人员为开发人员搭建测试环境,从安装、配置管理等方面采用和生产环境一样的方式。
2.流程
在研发初期,让开发、测试和运维人员等参与进来,一起搭建测试环境,验证想法,一起为产品的上线努力。出现问题时,一起想办法找到问题的根源,避免相互推托,将解决方案落实在以后的研发过程中。另外,从绩效考核上也需要考虑协作因素。
3.工具
说实在的,大家针对DevOps的讨论更多的可能是工具方面。无疑,快速的系统部署和自动化从源码开发到测试等方面的工具显得尤为重要。下面我们通过一张图来梳理DevOps涉及的宏观工具系统,即技术方面的应用,如下图所示。
不难理解,实现DevOps的3个核心基础平台有:
(1)SCM(供应链管理)
SCM,供应链管理平台,主要包括应用源码、配置数据、运行环境等部分。SCM部分是DevOps最底层和最重要的基础设施,所放置的内容可以分成两个层次,分别为AppCode开发的应用程序代码和EnvCode环境相关的代码,后者可以进一步细化成环境配置(Config)和配置数据(ConfigData)。环境配置是针对当前应用基本上固定的环境配置;而配置数据是需要在部署的同时根据情况进行调整的数据,如配置文件、部署IP地址、用户名和密码等。
(2)Automation(自动化系统)
自动化在DevOps中的作用是巨大的,这部分的工作一般由Jenkins、Maven等持续集成系统串联实现。为了完成应用从源代码到可发布的产品版本,还必须处理从代码编译、打包,到部署、测试等诸多环节。比如使用Ansible、JUnit/Pytest、Selenium等自动化工具,实现满足业务场景的部署需求和测试需求等。
(3)Cloud(云服务)
虚拟化和云计算的出现是推动DevOps发展的重要因素之一,用户可以将前面提及的供应链管理系统和自动化系统运行在虚拟化、云平台上,或者将作业系统运行在这些平台上。比如将持续集成系统运行的各种编译、打包、构建和测试等Job任务放在容器云或IaaS云的VM上与主机环境隔离,并当这些任务执行完毕后,即可立即销毁释放资源,需要时又自动构建环境——即基础设施平台的云化和业务流程操作的云化。
2625

被折叠的 条评论
为什么被折叠?



