敏捷开发从最初作为革命性的软件开发管理方法,如今逐渐成为了一种软件开发的新常态。 由于使得开发工作更有效率,敏捷开发在过去的十年间优势尽显:无论用户还是开发团队,都能更快更好地达成工作目标。
为什么说敏捷开发与DevOps是天生一对
随着DevOps越来越流行,敏捷开发的吸引力也与日俱增。即使它们并不相同,也始终相辅相成:一个团队如果完全没有实践过敏捷开发,DevOps也很难做得十分优秀,反之亦然。
DevOps的确可以被看作是敏捷开发原则的一种延伸。 敏捷开发这一概念虽然早于DevOps诞生,但正因为有了DevOps相关实践,敏捷开发才得以发挥更大的用途。
敏捷开发的概念在运营与其他非IT领域中也被反复应用着,近年来DevOps也展现出了超越开发团队范畴的优势,而它对于企业级全球IT团队的帮助还是最为显著的。Gartner咨询公司近期就建议,IT部门应该采取敏捷开发的实践来帮助聚焦创新,同时采取DevOps确保新软件发布的安全与稳定。
因此,对于新一代软件的拓展与应用来说,敏捷开发与DevOps都是密不可分的。
快速与风险的平衡点
敏捷开发与DevOps共有的一项优势体现在灵活度上,它们能够让开发者面对用户不断变化的需求作出响应,这一点在当今的数字化社会中弥足珍贵。敏捷开发缩短了从新需求产生到将相应新功能交付的周期。DevOps则使交付速度得以提升。
然而,实践敏捷开发的团队应该时刻牢记,如此快速的更新必须以坚实的IT基础与牢固的软件结构作为支撑。 不仅如此,软件的开发还需要在可靠的架构中进行,并且这种架构能够时刻灵活地作出调整与改进,以保持敏捷性。
乍看之下,这种对架构的严格要求似乎违反了敏捷开发的原则与方法论, 实则不然。一个合理的架构(至少在软件领域)并不是一尘不变的,而是不断演化的动态过程。一款软件也不可能从开发之初就做到尽善尽美。
重要的是,开发团队需要时常监测软件系统架构,评估其效率并且识别违规组件或者潜在的安全漏洞。采用DevOps实践与相关工具可以对软件进行自动检查,以判断是否达到相关准则,以及相关更新是否带来额外的风险与潜在的副作用。如果开发团队既想满足快速的目标,又希望回避风险,那么软件系统架构必须时常更新,并且易于生成。如此一来,它们才能够很好地支持日常的软件的更新与长期的适应性调整。
确保软件质量的标准
由于缩短了开发周期,利用敏捷开发能够很好地满足需求并且软件能够进行快速适应与调整。DevOps则能够帮助提升质量,并且提供理想的条件对软件的自动化与Fail-fast进行监测。
尽管敏捷开发与DevOps有着以上诸多好处,但它们并不能保证软件的质量与较低的技术依赖性。即使目前广为人知的Fail-fast方法能够快速地发现软件缺陷,IT部门还需要确保故障产生的影响与损失降到最低。而这很难通过被动的方式实现。
开发团队应该采取更为主动的方式预先避免可能发生的问题,利用相关工具比照国际通行的质量标准,对代码语句结构、设计结构进行检测,防患于未然。美国软件质量联盟(CISQ)制定的标准就是一个很好的选择。CISQ标准考量软件的总体架构蓝图,并且能够用于管理外包开发商的协议中,识别代码与软件开发架构中存在的主要问题。
采用这样的标准体系,就能够确保软件质量并且帮助团队发现软件中存在的风险。 这些风险在软件开发过程中往往不易被察觉,一旦爆发则会导致系统突然崩溃。其实,开发团队只要对质量问题稍加关注,便能获得长期稳固的应用软件架构,何乐而不为呢?
解决老旧技术问题
由于软件通常是大型应用系统的一部分,开发团队时常需要平衡老旧技术与敏捷开发之间的矛盾。在许多情况下,这些陈旧的软件技术由不熟悉敏捷开发的团队负责维护,涉及到的技术也没有专门为敏捷开发或DevOps进行过优化。 同样的, 敏捷开发团队在搭建与老旧技术相连的新组件时, 对自身受到的局限性也知之甚少。
这就容易导致工作流出现问题,并且大大提高了项目的风险。 为了解决这个问题, 许多团队采取了Agile-DevOps方法对老旧技术进行改造, 从而在运营层面获得更多的把控度。
开发团队应该从架构的角度出发,在新组件与老旧组件之间建立平稳、高效与清晰的相互关系。这种方法也能够帮助开发团队应对老旧的、没有记录在案的代码, 并且确保新的前端服务不会过度触发老旧的后端应用。
未来的挑战
2017年,各个开发团队面临的主要挑战将会是如何将全面的、构架与系统级的视角整合到现有的敏捷开发与DevOps实践中去。也许应该将新功能的市场化暂且放在一边,更多地关注系统层面的分析, 让敏捷开发与DevOps发挥最大的潜能。
如果将Fail-fast与系统层面的分析手段相结合,就能快速解决Bug并且积极地预防大型应用软件故障的发生。而实践敏捷开发与DevOps的团队若要更上一层楼,就必须采用例如CISQ的软件质量标准,以提升软件质量、降低软件风险与技术依赖度的思路来武装自己, 这对于项目本身与商业的成功都是至关重要的。