摘要:问你为什么要为仿真测试编写工具这个项目的进展如何虽然我经常会提到,但是这个工具是在的架构基础上写的。现在,我在忙一个叫做解决方案蓝图的项目,无论是否用到,这个工具都可以帮助人们完成仿真测试。
非商业转载请注明作译者、出处,并保留本文的原始链接:http://www.ituring.com.cn/article/195743
Michael T. Nygard是一位从业二十余年的资深程序员,现任Cognitect首席架构师,他被誉为在线业务的“流动解决问题专家”。Nygard曾先后为美国政府、军队、银行、金融、农业和零售等多个行业交付过运营系统,这种实际运营的经历改变了他对软件架构的看法,也让他对在相当不友好的环境下构建高性能、高可靠性的软件有了独特的见解。他写过多篇文章和社论,是软件架构经典著作《架构之美》和《软件架构师需要知道的97件事》的作者之一。Nygard最新出版的著作《发布!软件的设计与部署》详细展示了软件发布前可能出现的种种问题以及相应的解决之道,书中所有主题都是通过作者自己研究过的真实案例来阐述的。
问:您曾经在博客中说过可能会写几本新书(Three Book Ideas),有最新的进展吗?
任何时候,如果你问一位作者这个问题都会得到很有趣的回应。他会看起来很紧张,开始出汗,然后含糊地说一些并不连贯的话,同时他还会急迫地寻找最近的出口。我要说的是,现在这个阶段我还没有什么好宣布的。
问:《发布!》中提到的一些模式现在已经被广泛采用,如 Circuit Breaker,已经有了 Netflix 的 Hystrix 这样漂亮的实现,考虑到《发布!》是一本2007年出版的书,如今8年已经过去,你是否看到了一些新的稳定性/容量模式?
有一种重要的模式,它通过两种方式显示出来:异步式和反应式。我把它们看做一个硬币的两面。因为很多稳定性模式都要依靠阻塞线程才能起作用,所以这两种方式都有用。
问:有时候简单的错误就会造成整个系统宕机,这难道仅仅是程序员的一行代码造成的吗?可以引入什么机制来保证复杂系统的稳定性呢?
很多问题事实上就是一行代码引起的,但是总是有其他因素来放大这个问题。外部环境的变化可能会导致一个潜在的错误显现出来。或者一位操作员的活动可能会触发平时不会执行的代码,从而导致问题出现。
有一些问题则是因为系统的大规模结构而产生的。比如,我并不喜欢SOA中的“实体服务”模型。原因是每个应用都需要很多实体。概率的规则告诉我们当所有实体服务都不工作的时候,扩展的系统很可能会出现故障。
所以,我会努力在微观和宏观范围内都让系统具有更大的恢复力(甚至是稳健性)。在微观层面上,我使用书中提到的设计模式。在宏观层面上,我分析系统的“故障域”。也就是说,当一个部件(硬件或软件)坏掉的时候,受影响的应用和功能的范围有多大?通过在应用间重新分配功能和把实体拆分成小平面,总有办法把系统分割成独立的故障域。
问:复杂的业务会导致复杂的系统吗?作为一位架构师,如何做到不伤害正常业务处理流程的同时又保持架构简单?
到目前为止,我没有发现复杂业务和复杂系统之间的关联性。我知道的系统复杂度的最强的预示变量就是规定。
问:DevOps和传统运营工程师有什么区别?
DevOps强调同感。在DevOps的文化中,开发者关心他们的应用如何影响运营者们的生活。我的应用要求管理员必须在半夜保持清醒来做部署吗?我怎么改变我的应用才能让她能少花时间在终端上,从而拥有更多的时间和家人在一起?运营作为报答:我们如何才能创造一个更好的环境,让开发者带着勇气创造并传递价值?
问:从2007年的C/S和B/S到现在的App和NoSQL,互联网行业已经经历了重大变革。很多敏捷方法都已经有所进化。这些年软件发布都发生了哪些变化?还有什么是不变的?
我认为有三件事变化最大:
首先是Sun和微软两家公司统治的覆灭。在以前,几乎所有公司的软件开发都要用Java或 .Net,辅以当时发展迅速的Ruby on Rails社区。今天,经常可以见到使用不同语言和运行时环境的系统。
第二,云部署环境已经戏剧性地改变了经济。
第三点同时很大程度上也是前两点造成的结果,开源操作工具已经使高可靠性的运营变得大众化。在2007年的时候,需要花费上百万美元才能做好数据中心自动化,集中管理,以及监控。如今,你可以下载所有这些。
问:随着移动互联网的兴起,云服务的成熟,IT行业在发生天翻地覆的变化。作为一名架构师,应该重点关注哪些技术理念?
企业架构师之前关注的是图表中“方盒内”的技术。也就是说,他们的目标是执行细节完备的标准化技术。
在现在的世界里,我认为架构师应该更加关心数据格式和数据表示法。也就是说,他们应该关心的是箭头,而不是方盒。
问:Cognitect使用的编程语言主要是Clojure,这和大部分公司使用的主流语言(C / Java / C#)不同。你认为未来的编程语言会变成什么样?
我并不适合回答这一问题。我只能说我看到很多开发者都在朝着函数式编程转型。
问:在Cognitect,每周五开发者都会花时间在业余项目和开源软件上。20%的总体工作时间是一个很大的比例。你们在这个每周都举办的活动中得到了什么收获?这些收获是否弥补了时间上的损失?
我们利用20%的时间创造了一些很多人都认可的项目,其中包括web框架Pedestal,以及最初的ClojureScript实现。今天,我们20%时间仍然用来开发Clojure,ClojureScript,Pedestal,以及其他一些新玩意儿,我们不久之后就会揭晓。
很长时间以来,我们一直都有一个习惯,就是质疑我们对软件开发最基本的假设,我们通过检验自己的工作来找到构造软件更好的方法。在20%时间里我们也是这么做的。所以这项活动并不是我们一直在做的一个爱好或日常工作。我们经常要评估这样做是否值得。
到目前为止我们觉得这项活动是很有价值的。当我们说,我们想让软件开发对于每个人来说都变得更好时,我们是认真的。我们的开源工具就是其中的一部分。
问:你为什么要为仿真测试编写工具Simulant?这个项目的进展如何?
虽然我经常会提到Simulant,但是这个工具是Stuart Halloway在Rich Hickey的架构基础上写的。
Simulant程序库现在处于稳定状态。我的目标在于帮助人们成功地应用这个工具。为此,我去年开了一个关于Simulant的网络研讨会。同时我也做了一个样本项目,你可以在GitHub上找到。(https://github.com/mtnygard/simulant-example)
现在,我在忙一个叫做“解决方案蓝图(solution blueprint)”的项目,无论是否用到Simulant,这个工具都可以帮助人们完成仿真测试。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/11699.html
摘要:大神何恺明受到了质疑。今天,上一位用户对何恺明的提出质疑,他认为何恺明年的原始残差网络的结果没有被复现,甚至何恺明本人也没有。我认为,的可复现性经受住了时间的考验。 大神何恺明受到了质疑。今天,Reddit 上一位用户对何恺明的ResNet提出质疑,他认为:何恺明 2015 年的原始残差网络的结果没有被复现,甚至何恺明本人也没有。网友称,他没有发现任何一篇论文复现了原始 ResNet 网络的...
摘要:是全球最大的加密货币交易所之一,一些市场观察人士称,在交易的代币有助于支撑比特币的价格。报告称,在年月日的审计时点上,一家银行以名义开具的账户下拥有美元的款项。截至年月底,波多黎各这类金融机构的现金与总资产的比率迅速攀升至以上。 在追求各种类型「共识」的数字货币世界里,对 Tether 的看法显然很难达成共识,极具争议,也引人瞩目。 在寻找稳定代币的投资者眼中,Tether 如神,是解...
摘要:作为业界更受关注的开放平台,即将落地本土。力图保持中立,化解外界对其公正态度的质疑。当然,所有好的产品依靠出色的团队,拥有超一流的开发工程师。此外,一书作者也是数一数二的人物。 作为业界更受关注的开放PaaS平台,即将落地本土。虽然还在处在测试阶段,但Cloud Foundry已经吸引了足够多业界和开发者的眼球。Cloud Foundry足够吸引么?答案是肯定的。 Cloud Foundr...
阅读 1420·2021-09-10 11:27
阅读 2376·2019-08-30 15:53
阅读 1225·2019-08-30 13:10
阅读 2953·2019-08-30 11:09
阅读 1055·2019-08-29 17:23
阅读 636·2019-08-29 17:05
阅读 2919·2019-08-29 15:10
阅读 2327·2019-08-29 13:22