当企业想要迁移到一个 DevOps 模型时,经常需要偿还高等级的技术债务

说得更明确一点,机构往往陷入「技术债务的恶性循环」中,以至于任何迅速、敏捷的迁移方式都无法使用。这是技术债务中的希腊债务危机水平。

在多数情况下,机构会将层与层之间的流程和管理添加到软件开发生命周期,从而缓解低质量版本、生产等级缺陷、不稳定的环境、性能不佳等问题,然而这么做只能是治标不治本。

那么,在企业丧失竞争之前,我们应该如何摆脱这个死亡漩涡,可以快速进行颠覆性创新,同时也腾出时间做一些别的事情。

如今,我们看到的一个整体趋势是,如果机构不断地在 DevOps 自动化上寻找空间,就必须打破这种恶性循环,重新开辟一个新的良性循环。

如果可以自动完成一些常规的、容易出错的和时间密集型的任务,便可以利用效率和投资,也能将更多的时间和成本投入技术负债偿还中。

在技术债务偿还后,企业将得到一个质量更高、更稳定和更灵活的应用程序,从而可以重新在自动化工作上投入更多的时间,并启动下一个周期的改善和提升。

该途径已经在生产环境中得到验证,但是当下还存在两个注意点:

首先,需要取得产品负责人的承诺,将生产率的提高用于偿还技术债务,而不是无止尽的特性扩展(这很可能是导致当下困境的原因之一)。

同时这里并不存在捷径,事实上机构必须抱着这样的思想——技术债务就像穿过流沙般危险或者技术债务就像带着80磅的背包跑马拉松,那么这里才存在一线生机。

其次,DevOps 不仅仅是自动化,而是 Culture-Automation-Lean-Metrics-Sharing(CALMS),所以这里要做的不仅仅是「自动化的一些工作」,随后即「以产品为核心」的理念。但首先要让产品负责人清晰运营需求,远离经济驱动为中心的项目模型。

原文链接:http://blog.devopsguys.com/2015/07/31/devops-and-automating-the-repayment-of-technical-debt/

本文系 OneAPM 工程师编译整理。想阅读更多技术文章,请访问 OneAPM 官方博客

DevOps 和技术债务偿还自动化的更多相关文章

  1. [原创]DevOps 的技术栈和工具

    [原创]DevOps 的技术栈和工具 版本控制:GitHub.GitLab.SubVersion 自动化构建和测试:Maven .Selenium.JMeter.Gradle 持续集成&交付: ...

  2. 技术债务(Technical debt)的产生原因及衡量解决

    第一次发布代码,就好比借了一笔钱.只要通过不断重写来偿还债务,小额负债可以加速开发.但久未偿还债务会引发危险.复用马马虎虎的代码,类似于负债的利息.整个部门有可能因为松散的实现,不完全的面向对象的设计 ...

  3. [Android]使用MVP解决技术债务(翻译)

    以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/5892671.html 使用MVP解决技术债务 原文:https ...

  4. 技术债务管理以及Firefox/Chromium的债务评价

    如今的软件开发是在遍地敏捷,人人讲唯快不破的时代,哪有人有时间思考代码质量,设计的质量? 哪个又不是从一堆代码中杀出血路来实现还有一个功能?一个产品都存活不了几年,何必考虑什么可维护性? 我们追求进度 ...

  5. Linux组件封装(四)使用RAII技术实现MutexLock自动化解锁

    我们不止一次写过这种代码: { mutex_.lock(); //XXX if(....) return; //XXX mutex_.unlock(); } 显然,这段代码中我们忘记了解锁.那么如何防 ...

  6. 技术分享 | Web自动化之Selenium安装

    Web 应用程序的验收测试常常涉及一些手工任务,例如打开一个浏览器,并执行一个测试用例中所描述的操作.但是手工执行的任务容易出现人为的错误,也比较费时间.因此,将这些任务自动化,就可以消除人为因素.S ...

  7. ASP.NET MVC 技术债务

    ASP.NET MVC 缓存.本地化和监控诊断 ASP.NET MVC 认证与授权 Entity Framework 创建数据模型

  8. 测者的测试技术手册:自动化的自动化EvoSuite:Maven项目集成EvoSuite实战

    EvoSuite是由Sheffield等大学联合开发的一种开源工具,用于自动生成测试用例集,生成的测试用例均符合Junit的标准,可直接在Junit中运行.得到了Google和Yourkit的支持. ...

  9. 测者的测试技术手册:自动化单元工具EvoSuie的代码覆盖报告

    EvoSuite是由Sheffield等大学联合开发的一种开源工具,用于自动生成测试用例集,生成的测试用例均符合Junit的标准,可直接在Junit中运行.得到了Google和Yourkit的支持. ...

随机推荐

  1. 向php文件中添加php.ini文件

    向php文件中添加php.ini文件 默认情况下,php是没有php.ini配置文件的,必须手工添加php.ini文件 在php安装目录中,复制php.ini文件到/usr/local/php/lib ...

  2. ie8中使用placeholder

    placeholder 是 html5 中的新属性,考虑到还有不少 ie8 的用户,所以找了一个 ie8 的 placeholder 的补丁,如下: <script type="tex ...

  3. java.util.Vector

    public class Vector<E> extends AbstractList<E> implements List<E>, RandomAccess, C ...

  4. Windows Phone 8.1开发:如何让ListView下拉加载更多?

    Windows Phone 8.1开发中使用ListView作为数据呈现载体时,经常需要一个下拉(拇指向上滑动)加载更多的交互操作.如何完成这一操作呢?下面为您阐述. 思路是这样的: 1.在ListV ...

  5. 【风马一族_Android】Android 从命令行界面获取手机信息

    Android 从命令行界面获取手机信息 1: cmd 打开命令行界面 2:adb devices   获取与电脑相连的设备,例如:模拟器.真机(手机) (右击“标记”,选择设备名称,点击“Ctrl+ ...

  6. ant条件逻辑

    <condition property="sdk-folder" value="E:\android\android-sdk\adt-bundle-windows- ...

  7. 实现简单的cp命令

    在Linux下实现简单的cp命令.这是<APUE>第四章的其中一道练习题. 其实思路很简单,弄清规则就行了.规则1:源文件必须得存在,否则出错:规则2:目的文件若不存在则创建,若存在,则提 ...

  8. NSS_10 EXTJS给弹出的子窗口传递参数

    在桌面程序中, 如果需要弹出一个子面板, 并且需要传一些参数给子面板, 我通常的作法就是:在子面板添加对应的数据成员,然后一个构造函数来接收这些参数并赋值级数据成员. 实现起来非常方便. 但是在Ext ...

  9. 【Qt】Qt之密码框不可选中、复制、粘贴、无右键菜单等【转】

    简述 在做用户登录.修改密码的时候,往往会用到密码框,其中一些功能要求与普通的输入框不同,例如:不能选中.复制.粘贴.无右键菜单等功能,当然设置密码不可见是必须的! 下面介绍两种方式来实现相同的效果. ...

  10. php下载文件的代码示例

    php下载文件的代码示例,需要的朋友可以参考下 <?php  $file = 'monkey.gif';  if (file_exists($file)) {  header('Content- ...