说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

黑暗架构:以最少时间完成系统升级并获客户认可的开发之道

HTML文档下载 WORD文档下载 PDF文档下载
以短板部分的更新去大幅提升整个系统的效率,以小部分的工作量去应付可恨的交期,这就是黑暗架构法。满足业务的需求,博得用户的掌声,这才开发者需要做的。

Dyn的CTO Cory Von Wallenstein,主要负责公司IaaS平台技术的决策、创新和发展的方向的制定。近日他在Wired上撰文给大家描述省时省力的系统升级之路——黑暗架构(Dark Architecture)。以下为译文:


任何公司目标都是业务的增长,但是增长需要不断的衍化公司的每个部门,其中不只是你的技术基础设施。许多企业一直使用着非常原始的途径去完成这个衍化,虽然这里存在着极为简单的解决方案。

而公司升级其基础设施及系统架构一般出于以下3个原因:

  • 为了规模——以获得当下十倍或百倍的容量
  • 为了性能——视图移除一个系统瓶颈,让工作的执行更加快速
  • 为了解耦——为了获得更好的可靠性及可维护性,当然也为了将来的扩展做努力

早先的方法属于全盘否定类:首先制定一个3个月的计划,然后开发人员开始全力以赴的打造新系统,希望3个月后能顺利完成。事实上经常出现的情况就是3个月变成6个月(不可避免的比预期时间要长),而业务从老系统迁移至新系统也面临着非常高的风险。当新系统100%实现老系统所有功能后,遗留的旧系统便只能被废弃。

鉴于这六个月的开发时间里缺乏优先顺序及旧系统的其它改进,业务毫无疑问的丧失了灵活性。这种更新方式就像是“全部”或“一无所有”的命题,并且直到开发团队完成新系统的建设并且将所有业务转移到新系统,这段时间内对业务的提升基本为零。而面对来自客户的抱怨,技术团队的士气也一滑再滑。这种方法需要改进的地方主要归结于3个方面:

  • 立刻给客户带来价值——我们没必要一直等到整个新系统完工并投入使用再实现价值
  • 减少成品引进的风险——我们需要避免“全部”或“一无所有”的迁移计划
  • 保持业务提供灵活性——可以选择优先级,最少要保证核心价值的及时交付(如果可以选择的话,我们要做到最快的解决并交付相对重要的解决方案)

针对以上解决方案:黑暗架构的实现途径

黑暗架构(Dark Architecture)不仅是一种思想,同样还是个技术解决方案;用以解决规模、性能及耦合问题,黑暗架构不仅让硬件通向成功而且可以让员工有一个清晰的思维。可以通过以下途径实现:

  1. 优先提升系统中的工作流,而不是改变系统的组件
  2. 并行运行老系统及黑暗架构
  3. 给两个系统同时发送输入数据,收集输出数据,对比输出结果,然后抛弃一个

使用暗黑架构途径,运作方式将如下所示:

1. 在接触代码与系统之前,先按照以下顺序优化系统中的数据流:短板、机遇、业务价值或者其它经验证后对业务有意义的事情。

2. 于其着眼考虑组件相关(比如使用Cassandra替代原系统中的MySQL),不如考虑流系统(比如,为顾客X执行一次通配符查询类型图渲染大约需要40秒,而使用其它图渲染类型要快的多)。这个步骤能让你看到系统中的弊端所在,所以你可以首先聚焦这个瓶颈的解决方案,然后再考虑其它的问题。

3. 如果使用流优化优先(假设优化的功能占整个系统的2%),事实上下一步做的并不是直接建立功能。取而代之的是为这些功能建立相关支架,让系统可以同时使用两个不同的方式进行计算(为了对比输出结果,有差异时做记录)。

黑暗架构具体实践方案

从实际情况出发,这可能是复制一个网络服务调用(旧的和新的)或者是复制数据库交互调用(同样一新一旧),然后对比返回值,如果存在不同则将其记录到一个文件或者服务器又或者是消息总线中。

在输入/输出支架就绪后,你就可以着手功能的建立。实现系统中最短板的2%功能,就绪后,将其投入产品中的黑暗架构。它将会与旧系统一起接收产品的输入数据,虽然最后它的计算结果会被抛弃,但是在这个过程中我们可以与旧系统的输出值进行比较。如果输出的结果不同,记录并进行检查。这让你可以更熟悉你的新系统,并且在具体操作中获得一些实际经验。

一旦确定新的系统可以正常工作并且达到了渴望的性能或者是扩展性提升,将输出转换成新的系统。这样,实现的只是系统中2%最短板的功能,其它功能则沿用旧系统的遗留。如此等于改动2%的功能,花费了一小部分时间就交付了整个新系统的价值。

使用黑暗架构得到的收益:

  1. 士气高昂——有什么比技术人员看到自己成果很快被投入使用来的更振奋人心?
  2. 客户肯定——他们头痛的问题被解决了
  3. 降低风险——在项目重写的过程中,新系统已经得到实际验证

下面看一下有更多高优先级流需要优化的情况——占整个系统的20%,使用黑暗架构途径,业务将很快的发现自己的方向:

  • 持续更新流,直到系统100%都被迁移
  • 对剩下的80%功能与业务优先进行评估

如此可见黑暗架构的强大作用,在最短时间解决系统短板的前提下还拥有选择更高的灵活性,可以从容对业务优先进行处理。

原文链接: Dark Architecture: Upgrading Infrastructure With Agile Principles(编译/仲浩 审校/王旭东)

欢迎关注 @CSDN云计算微博,了解更多云信息。

谷歌重组建母公司Alphabet,新来的CEO Sandar Pichai是什么来头? 《近匠》专访AllSeen联盟主席薛国栋:从通讯层为物联网去中心化 Android性能优化典范(三) 杭州兆合陈洋:微气象大民生,气象微信平台研发探索 【探秘ES6】系列专栏(十):更深入了解生成器 【探秘ES6】系列专栏(十一):类语法 《近匠》专访Depth VR:浅析VR交互技术选型中的瓶颈与机遇 【CTO讲堂】将“简单快速”渗透到移动开发测试每个环节,从fir.im团队说起 全球开发者报告:Windows Phone已死,Windows 10长存 苹果官方博客:从SDK详说Swift代码的改变 Espresso实战:快速的Android UI自动化测试 《Java并发编程的艺术》作者方腾飞:感谢Java,带我一路前行! Crystal:一个类似于Ruby语法的编程语言 谁将是传统密码的终结者 专访民生银行:CPOS平台如何从线下布局移动支付 MathWorks程邺:机器人时代未来已来 Swift编程规范:保持代码优美的10个方法 中国第二届CSS开发者大会视频&PPT全部免费观看 如何基于Vert.x实现远程调用? Go 1.5如期发布,完全告别C代码 Rust一周集锦(三):关闭3个RFC并为1.4版本做准备 【CTO讲堂】多备份创始人陈元强:在线灾备革命背后的事 探索React:组件间通信过程解析 机智云完成2亿元B轮融资 将围绕信息安全与机器学习创建“机智云联合实验室” 【CTO讲堂】深度?广度?浅析技术人员的职业发展之路 详解React Flux架构工作方式 专访Tiny框架创始人悠然:好的软件设计是“品”出来的 开发移动应用的7大设计要点 历时一年半 现代Web框架Phoenix 1.0正式发布 【七问七答】对话Erlang核心成员Eric Merritt 分布式文档数据库MongoDB开发版本3.1.7发布 VB的API文本查看器,如何使用??? 很简单的问题:在表单上有n个复选框,通过一个按纽,我想获取那些复选框被选中,并返回它们的name数组! 关于组网的一些问题 别人抱怨接分难,我抱怨散分效率低 想考高程但不知买什么参考书大家帮忙 菜鸟问题:各位大侠帮忙看看 如何给panel加滚动条,请教 关于程序编译的问题: 问一个数据库文件的问题! PB7 连接 MSSQLServer 6.5为什么需要那么长的时间并且内存要占用100多M? 关于使用VB6创建的控件后的部署问题 Delphi与bcb有何联系与差异 关于WIN2000网络上的问题 盼高手来解决,阿菜勿进 我用PHP通过ADO连接ACCESS 为什么i=很大 怎么样改变statusbar的某个Panels的字体颜色 如何制作MID窗体的背景图片平铺? sqlserver有一个带参数的存储过程,为什么不能生成DW.?? 急(送100分):多个image控件如何用imagexxx使用? 如何得到CPU的时钟频率? 各位大佬,0x1 是什么? 一个页面只让一个用户来修改 请问哪儿有Lotus Notes C API的教程?以及要进行编程必须进行哪些配置? PB7连接MSSQLServer6.5的时候为什么需要那么长的时间和占用100多M的内存? 推荐在代理服务器上安装什么邮件网关软件? 在线等待 请各位帮助 如何得到开机时间? 我想把smalldatetime类型显示为“yyyy_mm_dd 00:00:00” 急须一个完全免费的MP3刻录软件 怎样修改xml的节点的值? Tabpage(子项)可以改变颜色,但Tabcontrol(父项)改变不了颜色。高手帮忙。 MM说:“你可真够没良心的!”! (邀请水园MM请参与) 测试流程! 在用ADO时如何判断在所取得的记录中,值为null的的情况 急(送100分):多个image控件如何用imagexxx使用? 关于数组的问题。 Weblogic 死锁的问题 想到亚信去,请各位兄台给点建议!(有分!) 请问能不能用System.Drawing对象在一个页里里画多张图? 索引和自增字段 关于对话框? 求能人?或给思路 请问哪儿有Lotus Notes C API的教程?以及要进行编程必须进行哪些配置? 100分求助:怎麼判斷數據庫服務器存在與否? JUnit重复测试的问题 请问一个hyperlink简单问题 求助:datagrid中控件事件的使用问题? 在C中写文件的内容,在线等待!!! 装了linux后,我的win2000和linux的时间老是都不对了 如果结束会话 如何送分呀? 谁有这个文档的中文资料,谢谢,高分奉送!!! “白布女”广场举牌讨孩子 称嫁富二代蔡少芬当街哺乳捱老公骂 亲吻长女十分揭王石女友田朴珺神秘生活:身价暴涨 《中国合伙人》5月17日公映 李小璐重庆最袖珍婴儿重610克 脑袋仅鹅蛋王菲6岁爱女李嫣就读英国贵族学校 与李湘首次主持快乐大本营罕见照熊黛林“天王嫂不易做” 郭富城牵母庆韩国职棒宝贝 长腿热舞大秀性感52岁刘德华自曝将追生第二胎 透露为《合伙人》腾讯首映礼 黄晓明爆对赵薇林忆莲容祖儿宋庆琳 盘点王杰演唱会上《乱世三义》亮点多 张晞临暗语对谈黄《传奇奶奶》剧照 罗晋耍宝卖萌秀功夫《致青春》破5亿 黄小蕾力挺赵薇注意《吸血鬼日记》情侣分手 妮娜不愿结婚张含韵母亲节晒幼年全家福 赞爸爸世界朱茵女儿近照曝光俏皮吐舌 黄贯中对妻林嘉欣秘密出院宣布封肚 再次当妈实在张学友带妻女提前过节 全家陪唐鹤德共叶一茜亮相西安被曝又怀孕 经纪人称其回购利率大降表明不会降准降息●永辉超市康田西锦9月20日首次开盘彭于晏:男生校服要骚包嘛亲爱的 嫁给我越成功越争议,李娜约等于周星驰十多家门面停水怎么办提前享优惠,国庆好出游文博会今天开幕,两场签售打头阵雷声担任开幕旗手郭敬明开始刷屏,四档综艺秀都有他!郭敬明:我来扮演最心狠手辣的朱家慧:自学成为夫妻相馆的暗室高手新闻链接> 拼车出游,自制协议是否靠《勇敢的心》与苏格兰符号诚信“红黑榜”各行业定期发布首钢美利山提供社区居家养老服务逛街达人变身宅女,她不好意思说原因翱龙备战CBA> 翱龙国内球员敲定,宋卫平收购百威国际新股北京4条地铁新线年底将开通 总里程6
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘