DevOps 和技术债务偿还自动化
当企业想要迁移到一个 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 和技术债务偿还自动化的更多相关文章
- [原创]DevOps 的技术栈和工具
[原创]DevOps 的技术栈和工具 版本控制:GitHub.GitLab.SubVersion 自动化构建和测试:Maven .Selenium.JMeter.Gradle 持续集成&交付: ...
- 技术债务(Technical debt)的产生原因及衡量解决
第一次发布代码,就好比借了一笔钱.只要通过不断重写来偿还债务,小额负债可以加速开发.但久未偿还债务会引发危险.复用马马虎虎的代码,类似于负债的利息.整个部门有可能因为松散的实现,不完全的面向对象的设计 ...
- [Android]使用MVP解决技术债务(翻译)
以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/5892671.html 使用MVP解决技术债务 原文:https ...
- 技术债务管理以及Firefox/Chromium的债务评价
如今的软件开发是在遍地敏捷,人人讲唯快不破的时代,哪有人有时间思考代码质量,设计的质量? 哪个又不是从一堆代码中杀出血路来实现还有一个功能?一个产品都存活不了几年,何必考虑什么可维护性? 我们追求进度 ...
- Linux组件封装(四)使用RAII技术实现MutexLock自动化解锁
我们不止一次写过这种代码: { mutex_.lock(); //XXX if(....) return; //XXX mutex_.unlock(); } 显然,这段代码中我们忘记了解锁.那么如何防 ...
- 技术分享 | Web自动化之Selenium安装
Web 应用程序的验收测试常常涉及一些手工任务,例如打开一个浏览器,并执行一个测试用例中所描述的操作.但是手工执行的任务容易出现人为的错误,也比较费时间.因此,将这些任务自动化,就可以消除人为因素.S ...
- ASP.NET MVC 技术债务
ASP.NET MVC 缓存.本地化和监控诊断 ASP.NET MVC 认证与授权 Entity Framework 创建数据模型
- 测者的测试技术手册:自动化的自动化EvoSuite:Maven项目集成EvoSuite实战
EvoSuite是由Sheffield等大学联合开发的一种开源工具,用于自动生成测试用例集,生成的测试用例均符合Junit的标准,可直接在Junit中运行.得到了Google和Yourkit的支持. ...
- 测者的测试技术手册:自动化单元工具EvoSuie的代码覆盖报告
EvoSuite是由Sheffield等大学联合开发的一种开源工具,用于自动生成测试用例集,生成的测试用例均符合Junit的标准,可直接在Junit中运行.得到了Google和Yourkit的支持. ...
随机推荐
- 【leetcode】368. Largest Divisible Subset
题目描述: Given a set of distinct positive integers, find the largest subset such that every pair (Si, S ...
- Spring AOP整理
示例展示 AOP(Aspect Oriented Programming),是面向切面编程的技术.AOP基于IoC基础,是对OOP的有益补充.AOP之所以能得到广泛认可,主要是因为它将应用系统拆分分了 ...
- C#打开mdb文件,获取文件下的所有表格,以及获取表格下的所有字段
String connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|aspxWeb2 ...
- C++与Java多态的区别
多态是指用父指针指向不同子类对象时,调用其共有的函数,不同的子类会有不同的行为.虽然C++和Java都具有多态机制,但是他们的实现不同,使用时的效果也会略有不同. 在C++中 普通函数调用:具体调用哪 ...
- MongoDB如何存储数据
想要深入了解MongoDB如何存储数据之前,有一个概念必须清楚,那就是Memeory-Mapped Files. Memeory-Mapped Files 下图展示了数据库是如何跟底层系统打交道的. ...
- ASP.NET中的母版页机制
项目中用到了母版页,由于好长时间没用了,不太熟悉起原理,在网上找了一下: http://www.cnblogs.com/_zjl/archive/2011/06/12/2078992.html 有时间 ...
- URI、URL以及URN的区别
首先,URI,是uniform resource identifier,统一资源标识符,用来唯一的标识一个资源.而URL是uniform resource locator,统一资源定位器,它是一种具体 ...
- Excel REPT函数使用
需要制作1K大小的数据 使用Excel REPT函数可以迅速制造 Excel REPT 函数 =REPT(1,1024) 结果直接黏贴进txt文件,注意删除尾空格.
- MySQL 多实例启动和关闭脚本
DB: 5.5.14 OS:CentOS 6.3 在MySQL多实例中,一个一个启动灰常麻烦,因此写个简单的启动和关闭脚本 启动脚本:start.sh #!/bin/bash for port in ...
- JavaScript 代码片段
1.无题 if (i && i.charAt(i.length - 1) == "/") { i = i.substr(0, i.length - 1) } 2.无 ...