01 DevOps是什么?

DevOps是一种融合了开发(Dev)和运维(Ops)的方法论和文化,旨在促进软件开发和交付的协作、自动化和持续优化。其目的是通过软件开发敏捷化、运维自动化、持续集成、持续交付等方式,缩短软件开发周期、提高软件质量、降低运维成本。

在国外,DevOps方法论已经得到了广泛的应用和实践。许多大型互联网公司和技术公司如Google、Facebook、Amazon、Netflix等,都已经采用了DevOps来优化软件的开发和运维过程。同时,越来越多的企业开始尝试DevOps,并且在实践中得到了积极的反馈。

在国内,自2012年起,DevOps开始逐步得到关注和应用。近年来,随着云计算技术的普及和工具技术的不断发展,国内越来越多的公司开始关注和实践DevOps方法论,期望通过DevOps来提高软件开发和交付效率、优化用户体验和整个业务运营。

02 DevOps在企业内部的用户是谁?

企业涉及多个角色使用DevOps,包括:

开发负责人(Dev Manager):负责协调团队中的开发工作,包括需求分析、开发计划制定、代码编写等。

运维负责人(Ops Manager):负责团队中的运维工作,包括服务器的维护、监控、自动化运维等。

自动化测试工程师(QA Engineer):负责编写并执行项目所需的各种测试用例、测试脚本等。

持续集成/部署工程师(CI/CD Engineer):负责设计和维护持续集成及部署流程,确保代码提交后能够自动地构建、测试和部署。

敏捷教练(Agile Coach):负责指导团队如何协作、实现自动化流程并采用敏捷开发方法,帮助团队达到更高的效率和质量。

03 DevOps对企业来说有什么价值?

第一,加速软件开发,提高开发效率。通过DevOps将开发和运维人员紧密合作,能够有效地移除掉一些因为不同团队间沟通带来的瓶颈与延误,同时也避免了部署和测试环节耗时过长的现象,从而提高了团队的开发效率,使开发和部署节奏更协调更快速。这样可以减少时间和重复工作,为企业创造更多机会以增长收入。

第二,提高软件质量。通过使用DevOps方法,团队可以自动化地测试和构建应用程序,迭代周期缩短,提高软件质量并消除了生产缺陷,这将有助于减少软件错误以及客户投诉,显著提高了整体产品质量和用户体验度。

第三,降低运维成本。通过自动化的流程和流程控制来降低人力成本和减少手动操作,而且由于大部分工作都是自动化完成的,因此需要的人力资源自然就变得少了。这意味着企业可以将人力资源用于其他重要的任务,同时,它也帮助减少了新功能和应用程序部署的时间和成本。

第四,减少开发的等待时间和减少运维错误。通过流程管控,各团队成员合力设置,将繁琐及易错的操作交给工具处理,从而能够减少团队在等待其他成员完成任务时的瓶颈等待时间,提升效率和可靠性。

综上所述,DevOps方法可以使企业转变为高效、自动化和高质量的生产方式,从而为企业带来更多的商业价值。对企业决策者来说,这些价值都可以直接或间接地增加企业效益和商业收益,提高产品竞争力。

03 企业如何实现DevOps?

企业如果计划自己做DevOps,可以按以下步骤逐步实施:

第一,确定团队组合。将开发、测试、运维和安全团队整合在一起,形成一个跨部门的协作团队,区别于前端和后端分工、面向业务模块划分的传统,以强调流程的完整性和协作优先。

第二,确定流程设计。根据企业实际情况,设计DevOps流程。流程设计时,需要从团队间的协作、代码管理、测试自动化、持续集成和持续交付等方面考虑,采用最佳实践。

第三,工具和技术选型。选择一些优秀的、开源、可扩展的DevOps工具和技术,包括部署工具、监控工具、持续集成/部署/交付工具等。还需要针对流程和流程控制,采用一些如敏捷、Scrum等开发流程与模型完美结合的新技术。

第四,建立自动化测试和部署流程。自动化测试和部署流程是DevOps的关键部分,需要建立自动化测试框架,使得团队能够进行自动化单元测试、集成测试和端到端测试,并依照流程自动化部署完成,这样就可以有效降低手动测试和部署带来的错误和延误。

第五,持续集成、部署和交付。实现持续集成、部署和交付是DevOps的核心,需要实施自动化流程,使得代码提交后能够自动完成测试、构建和部署等过程,并实现持续交付。

第六,建立监控和反馈机制。建立监控和反馈机制,监测生产环境的系统性能、安全状况等,及时发现、诊断和修复有问题的部分,以保障生产环境的稳定性和可用性。此外,还需要设立一些反馈机制以及故障回溯日志等,使得问题解决更快、更加准确。

05 企业选择外部Devops平台厂商时应考察哪些能力?

企业在选择外部的DevOps平台厂商时,可以从以下几个角度对供应商进行考察:

第一,技术能力。确定厂商是否具备开发DevOps所必备的专业技能和经验。如专家顾问执业年限、项目经验、开源社区贡献、解决问题的速度和质量等方面的指标。

第二,服务质量。需要了解厂商的服务承诺、服务水平协议、保障计划、服务反馈渠道、客户支持等。

第三,安全。从数据的安全、系统取证方面考虑,厂商应该符合安全和合规标准,并遵循合规性的的法规要求。需要了解厂商从安全和合规角度如何保证企业客户的数据安全。

第四,自动化能力。厂商需要具备完整的DevOps平台,集成多种工具和服务,如代码管理、持续集成、持续交付等一系列工具。还需要具备自动化测试、编排等关键能力。

第五,成本效益。考虑厂商的价值、优势、竞争力以及服务价格等因素,需确保某一项服务的技术含量、性能指标等不同,从而做出判断厂商的优劣。

第六,可扩展性。要考虑到厂商的可扩展性,以确保厂商解决方案的可订制和可配置性,以适应企业不断增长和变化的需求是否能取得优异表现。