设为首页 - 加入收藏
广告 1000x90
您的当前位置:财经新干线 > 科技天地 > 正文

作业即代码:助力DevOps开发,快速交付软件

来源:IT专家网 编辑:情像 时间:2017-06-15

    BMC公司大中华区总经理 陈明华

    随着越来越多的应用往云端迁移,更多的公司与软件团队正在采用DevOps与敏捷开发交付模式。在这种快速交付模式下,如何保证交付代码质量、提升交付效率?且看BMC公司所介绍的作业调度标准化和自动化的方法。

    随着敏捷开发和DevOps(开发运维一体化)的流行,自动化部署成为软件企业的关键能力,决定了企业的生产力水平。在DevOps流程中,自动化可以节省时间、节约资源、减少错误,并确保一致性。尽管如此,开发人员经常无视这样的领先工作流程自动化和作业调度解决方案的存在,而是依赖一些简单的工具编写代码构建应用。由于工具不尽相同,开发人员也并未遵守相同的标准,交付给运维团队的应用常常无法满足生产标准,一旦哪里出了岔子,往往很难发现和解决问题。

    由于业务应用处理中的大部分操作由作业调度功能来执行,作业调度自动化不仅在开发、测试和部署的过程中节省时间,还可以让开发人员将时间专注于构建最好的业务逻辑上。

    以应用的组成为例:Java®和Python®等代码实现业务逻辑,应用程序在Linux®服务器、Web应用服务器或网络等基础设施上运行,数据库和SQL语句创建表、重构索引,最后,许多相关的作业和任务不得不按某种特定的顺序来执行。这种作业调度仅仅确定了作业何时运行、作业在调度失败或无法开始时该如何处理。如果开发人员花大量的时间来定义这种实际上是管理性质的功能,不仅浪费了自己的开发时间,还给运维团队带来了后续难题,浪费更多时间。

    “作业即代码”(Jobs-as-Code)是实现作业调度标准化和自动化的一种方法,它使用简单的符号来嵌入代码,通过API调用调度引擎,然后像管理Java或Python代码的方式那样,在整个交付过程中管理这些调用。

    下面介绍一下作业即代码如何适应简化的开发流程:

    作业不等于业务逻辑

    作业调度仅仅是工具,为它编写脚本需要在构建、测试和支持等流程方面投入大量精力,出现错误和不一致的情况会殃及运维团队。相反,作业调度器具有管理流程关系、进行成功/失败分析、捕获输出等功能,它可以在单个应用以及跨应用中确保一致性,从而为开发团队和运维团队节省时间,消除难题。

    及早测试并经常测试

    如今,源代码的语法在创建时就受到检查。类似的方法也可用于定义作业。在传统的开发环境中,脚本化的新调度可能出现不一致性,它可能在测试过程中运行正常,但是在生产环境中却出现问题。如果实现调度自动化,面向所有作业的相似的符号和接口都可以在最初阶段就被使用,从而及早进行精确的测试。如果用“基础设施即代码”来配置最接近生产环境的测试环境,这一方法更为有效,可以预测并消除与其他工作负载不一致或争夺资源的情况。

    使用源代码管理系统(SCM)

    源代码管理系统(比如GIT、Subversion、CVS和TFS等)创建了一个中央代码库,用于存储应用组件并管理版本。它能够使应用恢复到之前的版本、比较版本差异并识别变化,以及管理已部署系统中的潜在漂移。它还提供了一种快速可靠的方法,在新的环境中构建或重构应用。

    当SCM中的任何部分被修订后,构建工具(比如Jenkins®)针对错误或功能回归重新构建并测试应用。通常情况下,测试失败后全体开发团队就得努力解决问题,这样会导致进度延迟。而使用作业即代码能够减少错误数量。

    此外,应用越复杂,开发生命周期也越长,通常涉及开发、测试、集成、试运行、预生产测试、用户验收测试(UAT)及其他环节。如果将作业即代码与SMC和及早测试结合起来,复杂性的增加就不会带来更多下游难题。相反,交付至生产环境的应用将具备一致性并经过全面测试。

    考虑价值等式

    如要应用带来最大的投资回报,开发流程就要尽可能简化、高效,并且应用在生产环境中运行时问题也要尽可能少。作业即代码是同时实现这两个目标的关键要素。

    最后,请牢记一点:最严谨的开发方法偶尔也会失败。作业即代码为应用增添了可见性,当需要时,运维团队和支持团队可以更快速地发现、分析和解决问题,从而让应用恢复正常。

编辑QQ 站务邮箱 广告联系

网上传播、营销互联网正面形象、传播互联网人想法

Top