DevOps正在被越来越多的企业认可和采用,它的原则和实践不但适用于创业公司,对大型软件企业或软件开发部门也同样适用,至少在当前阶段有广泛的适用性。面对一个IT创业公司或是传统的软件开发企业,如何开展DevOps转型工作呢?
在实施DevOps之前,必须明确目标和思路、确定要解决的问题。一般而言,实施DevOps是为了加快研发流程,实现企业价值,增加企业在行业中的竞争力。DevOps解决的是一整套的流程和协作的问题,要以全局性的视角和系统化的思维来审视开发和运维过程中的问题,加快研发流程、打造高质量的、可靠的、安全的产品,从而实现价值的快速流动和交付。在具体的实施过程中,大体的流程和思路如下:
低效的工作团队,必然有其根本的冲突或矛盾,致使团队无法完成既定目标,不能如期的交付产品或交付的产品无法满足可用性和稳定性的要求。从具体的工作中,以下原因会导致团队的低效:
综上各种因素,我觉得人员技能和团队文化是需慢慢培养和影响的,架构是需要根据需求和目标逐步演进和调整的。唯有研发流程和技术债务的问题需要迫切解决,否则团队将会继续走向恶性循环。所以,实施DevOps的切入点应该是分析研发流程中的瓶颈和解决技术债务问题。换句话说,应该关注敏捷过程以及持续交付的相关实践在执行过程中存在哪些问题。
确定了目标和问题,就需要科学的方法来改进问题。三步工作法是DevOps实施的基础原则。实施过程中的核心关注点是促使价值流从需求到交付的快速流动、构建持续快速的反馈机制、建立高可信度和持续学习的企业文化。让价值快速流动、让反馈快速呈现才是打破团队恶性循环的法宝。
实施DevOps就是为了能够提升发布速度,但速度的提升和质量的改进是循序渐进的。无论是三步工作法中哪一步,都不是一蹴而就的。比如,要实现价值的快速流动,就必须在开发团队中制定实施计划并最终得到落实。为了能够持续改进,可以按照PDCA原则,不断的执行此过程。
工具的引入是为了促使快速的价值流动或是实现快速的反馈。我们引入看板工具,是为了团队工作的可见以及对制品数量的控制;引入自动化测试是为了控制质量问题尽可能少的向后流动、也为了能够及时得到反馈,快速解决问题;在环境中使用虚拟化及监控工具,是为了我们能及时得到服务器及应用的相关问题,从而避免灾难性的事件发生。除了应用开发中所使用的技术和工具外,实施DevOps过程中还需要以下各种工具和技能的融合:
DevOps的实施,对人员技能也提出更高的要求,它鼓励每个工程师成为全才。研发人员不仅仅只关注于自身的业务代码,还要关注到环境和运维。基础设施已成为了代码的一部分,所以每个开发人员要明白自己开发的应用代码流向了哪里,在每个环境中都发生了什么变化,还要熟悉虚拟化技术、运维技术,要能够接受到各种环境的反馈,从而快速解决各种问题。不仅如此,开发人员也承担了很多QA的责任,要能够运用TDD,熟练使用自动化测试技术。从组织层面来讲,应该努力在以下方面为团队能力培养提供机会。
良好的团队文化,对于实现业务目标和价值至关重要。学习型的团队,高度互信的团队,才可以更好的解决问题,创造更多的价值。在DevOps的实施过程中,要给团队营造一种安全的环境,让每个人都能表达自己的想法和见解。遇到问题,不指责。让团队成员能够相互鼓励、增加信任,共同承担责任。
传统的开发方式并未将开发、测试、运维融为一体。甚至有些团队为了快速实现功能,没有自动化测试、没有评审、没有运维人员的通力合作,看似产品快速交付,但交付的产品却十分脆弱,欠下的技术债务越来越多,为后续产品演进埋下了巨大的隐患。
DevOps实现的最终目标是快速交付,整合了精益思想、敏捷思想、学习型组织,它是一套科学的思想和实践方法,实施DevOps才是打破恶性循环,实现价值交付的最好解决方案。
参考资料:
文/ThoughtWorks王帅
上一篇
已是最后文章