返回 登录
0

云时代的DevOps之路及工程师的自我修养

当传统企业也通过云计算、大数据实现“互联网+”,一个快速迭代的时代已经来临,这对软件交付也产生了新的需求,DevOps在国内逐渐受到重视。那么,DevOps和各种传统的软件开发方法论有什么本质区别?当前的技术发展为DevOps带来什么样的优势和挑战?企业在云化的趋势下应当如何实施DevOps?工程师又是如何向DevOps看齐?近日,IBM 资深软件工程师姚炳雄接受CSDN记者专访,一一解答了企业和开发人员在DevOps道路上可能遇到的问题。

从敏捷开发到DevOps

按照dW的文档,DevOps构建于敏捷和精益开发方法之上,关注软件交付速度和质量,那么DevOps相对于敏捷/精益开发有什么进步?姚炳雄认为,敏捷和精益开发关注如何提高和改善开发测试的弹性和交付能力,DevOps则在更大范围上,将敏捷和精益思想应用到运维阶段,实现业务的开发测试运维的一体化,所有人、流程、工具的目标都是持续交付和维护业务系统。除此以外,IBM的DevOps还强调了持续收集各阶段反馈,尤其是用户反馈,并依次来改善业务规划、改善IT流程、改善系统功能,形成了一个闭环。

姚炳雄进一步解释,DevOps是业务敏捷性在IT领域的投射。因此DevOps的环节应覆盖业务规划、IT架构和需求规划、开发测试、运维和监控、用户数据和反馈信息收集分析,并以业务驱动,形成闭环。

ITIL和ITSM是传统运维方法论的两个重要概念,一般认为,在DevOps时代, ITIL和ITSM已经落伍,将会被颠覆。但姚炳雄认为,DevOps将各阶段工作打通,并持续敏捷化,ITIL和ITSM在运维阶段发挥了重要的管理和监控作用,都是DevOps不可缺少的能力之一。他同时也表示,传统的建设思路是将ITIL和ITSM做的很重,缺乏与Dev阶段的互通互助。在DevOps中,ITIL和ITSM将与Dev阶段的工具和流程进行融合,以往在ITIL和ITSM中附加的很多重量级流程和自动化能力,可能会通过Dev提供的更灵活方式进行改造。

云计算时代的DevOps

目前的云计算尤其是混合云架构的趋势给DevOps带来了什么影响?姚炳雄认为,云计算对DevOps的推行有很大的促进作用。

从IBM的角度,他介绍,IBM DevOps提供了一套现状评估方法,和一系列通用的最佳实践和优化建议。比如对混合云架构上,如何开展跨环境的持续部署,IBM有DevOps持续部署最佳实践和Urbancode工具作为落地实施的工具平台。当然对不同客户的具体情况,需要具体分析,量体裁衣,给出最适合的方案。

对于Docker这个当前云计算领域的热门技术,姚炳雄表示,Docker及其生态发展很快,已经从最初的标准化轻量级镜像工具,演变为应用和环境编排和部署的平台。Docker对互联网化的应用或轻量级应用而言,是开展DevOps的最佳平台之一。

他解释说,基于容器的DevOps,即以容器为对象做开发运维一体化,是一个非常值得研究的方向。因为DevOps一边是从以前的Dev过去,从源码、数据往下走,而Ops从底层的硬件、操作系统、中间件往上,DevOps让大家融合,而容器把基础设施变成可编程的东西,可以比较容易地纳入到整个DevOps流程里面,基础设施也在版本控制之下,DevOps流程会更加顺畅、更加彻底。

所以,IBM的DevOps方法和工具也完全支持Docker的应用,并且支持传统虚拟化和Docker的环境环境,能帮助企业在业务不受影响的情况下平滑地向Docker迁移。

另一方面,IBM面向开发者的Bluemix云平台的设计,基于CloudFoundry构建,本身也是带有很强的DevOps的能力,同时IBM在Bluemix又做了一层拓展,可以认为是一个广义的DevOps的概念,把整个需求,从流程追踪、版本控制、持续集成、自动部署,Ops方面的监控、自动化运维整个在一条线上串起来,希望每一个环节都很扎实地落地之后,就可以很完整地实现DevOps,实现很高的自动化程度。

不仅如此,Bluemix也支持Docker的环境,并推出更轻量级的OpenWhisk事件驱动计算模型,前者在国外已经有应用,后者也在试点推广之中。

DevOps落地攻略

对于国内的DevOps实践,姚炳雄认为,从传统的记录型系统(如ERP)到新的交互型系统(如移动、互联网、IoT方面的开发,和人的互动有密切关系的),两种系统开发者都已经有意识地用DevOps,方法论已经深入人心。

从技术层面来看,姚炳雄认为,DevOps涉及的范围很广泛,每个细分领域都有很多开源的或者商业的工具,每一个方面都很重要。不过,企业在落地DevOps的时候切入点不一样,这和不同团队的不同状况有关。

对于企业落地DevOps的切入点,姚炳雄给出了两个策略:

  1. 首先把一些较容易的DevOps实践做起来。比如持续集成,虽然做了很多年,但是做得好的不多;或者自动化部署、自动化测试,属于工程类的实践,和组织结构调整、利益冲突的相关性不大,比较容易推动。
  2. DevOps是端到端的,范畴非常广,从客户拿到反馈,从业务层面来切入也是一个点,但是这个点的实践在不同的场景、不同的企业难易程度不一样,因为拿到客户反馈的难易程度与自动化程度不一样。

而对于IBM,姚炳雄透露,IBM正在致力于让Docker在Bluemix上更加成熟,预计今年Q4会在世纪互联运营的Bluemix上比较好地实现基于Docker的DevOps,这个路线图是确定的。

开发人员与DevOps

DevOps的理想很美妙,但在实践中,DevOps是否会给开发者带来一些负面影响?姚炳雄认为,DevOps需要消除各角色之间的分工界限,跨部门跨阶段地思考和解决问题。在实施过程中,如果测试部门和运维部门以此为由,将大量问题推给开发者来独自解决,将使开发者陷入困境。因此测试和运维工程师同样需要分析问题,以开发视角提出解决问题的办法,改善交付和运维流程。开发工程师则可以帮助前者成长,同时理解他们的问题,给出建议。在这个过程中,需要建立信任和协作。DevOps的推行过程还会带来其他问题和改变,都需要各部门各角色以一致的目标,协同应对,共同成长。

对于如何能够成为一名合格的DevOps工程师,姚炳雄则认为,由于DevOps覆盖面很广,其中参与的每个人都必须具有自己独特的长处,同时也能够理解和参与其他角色和岗位的工作。他表示,不可能要求每个人在DevOps的所有领域都是专家,并且负责每个领域的工作。所以,重要的是以DevOps的思想和实践为指导,巩固自身优势、关注其他领域并给出自己的贡献,与其他团队成员一起组成各有擅长,协同一致的战斗团队。

评论