架构验证的时间

转载 2007年10月16日 10:30:00

架构设计的各种方法论是为把事情变得更简单易懂而准备的,它们帮我们梳理复杂应用的逻辑头绪,把我们不能一下子掌握的事情通过一种有条不紊的途径消化掉。可以说,把事情变得更简单是架构设计的远景和目标。但这种简单是有条件的,实用就是它的条件。所谓实用就是要满足各种各样外部环境并尽可能的提供更多的指标,这些指标包括可伸缩性、可维护性、学习曲线、稳定性等。所谓的尽可能就意味着需要有一个平衡点,我们需要通过各种努力来实现一个NP问题的解。

由于技术在大多数情况下都不是唯一的,同一问题解决方案可以非常多样。对于不同的架构,特别是稍微复杂一点的,相互很难能说服对方,项目真正进入实施阶段后这些不同所带来的影响就慢慢的浮出水面。之所以两个架构师可能会对同一问题得到两种截然不同的解,原因是多方面的:

  • 对问题领域的理解不同;
  • 个人经验不同,其中有感情的因素;
  • 思考问题的方法不同;
  • 出发点和侧重点不同。

这其中,个人经验占的比重相当大。个人经验在某些情况下会变成一种感情的因素,成了阻碍和排他的根源。实践是检验真理的唯一标准,来源于实践的经验理应得到感情的偏爱。不仅要用实践来检验正确的事情,也要用实践来验证错误的决策。排他法就是这个意思。

现在的很多应用模式,其实就是由实践检验过的解决方案。我们通常会在架构设计的时候自觉不自觉地引用成熟的架构模式,它往往能带来事半功倍的效果。但事情总不是那么顺利,失败的项目仍然比比皆是。原因就在于对模式的理解,或者说本身模式的描述就不全面。每一个应用都有自身的特殊性,放之四海而皆准的真理在这个世界上并不多见。所以,我们需要在架构设计中引入架构验证的环节。

危险来自不确定性,架构验证是一个非常重要的环节,它能在很大程度上预期项目的远景。架构设计过程通常把架构验证的时间放得比较靠后,很多时候我们是先有了一个通过经验(或感情)取得的一个模型之后再来找证据。这些证据确实说明了大多数问题,但不幸的是,20%的漏洞往往决定了80%的失败。这是种先入为主的思考问题的方式,它很难能给出最优解。更好的方法是在架构设计之初,综合当时能综合的因素得到一些不同的架构方案并对各个方案进行先期验证。这是一种排他法,非常的古老和简单。

验证的目的就是要避免来自不确定性的危险。如果某个结论是确定的了,或者是长期的实践检验过的了,通常没必要耗费时间去验证了。用确定性的东西越多,项目的预期也就越确定。有人喜欢求新求时尚,但新东西往往是付带着许多不确定的因素。比如面向对象是被长期检验过的了,而SOA就还是比较新的东西。

先期的架构验证要避免的一个问题是流于形式,或者说仍然带着感情的因素去做验证。并不是说把一些个条条框框搬出来对比就能得出结论的,更多的时候需要理性的思维,毕竟计算机仍然是一门科学。科学的东西最好是用数据说话。我很少看到哪个架构设计文档会把几个可选的架构放在一起用数据进行比较得出结论的情况,往往是纸上谈兵的方式比较常见。有经验的架构师手里应该掌握了很多数据,这些数字在很多时候比争论要来得直接得多。

结论:用证据筛选架构而不是为架构找证据,使用成熟的技术避免风险。不仅是架构设计,对很多事情最好都能养成先期验证的习惯。

 

深入聊聊微服务架构的身份认证问题

从单体应用架构到分布式应用架构再到微服务架构,应用的安全访问在不断的经受考验。为了适应架构的变化、需求的变化,身份认证与鉴权方案也在不断的变革。面对数十个甚至上百个微服务之间的调用,如何保证高效安全的...
  • u011676417
  • u011676417
  • 2017年06月20日 10:55
  • 6775

java登录验证码 用到spring框架

1.前端代码 ${errorMessage} ${successMessage} 验证码: 2.验证码控制器代码 ...
  • zqd_java
  • zqd_java
  • 2016年12月14日 13:41
  • 1948

框架中的RESTful api快速领悟(中):token认证

我们讲一下RESTful api中很重要的环节—token认证。本课程主要演示如何快速借助YII2配置出简单的token认证方法,并给出扩展的思路 1.创建一个用来作权限验证的表 CREATE ...
  • github_26672553
  • github_26672553
  • 2017年01月16日 11:26
  • 2941

本课分2部分讲解: 第一部分,讲解Kafka的概念、架构和用例场景; 第二部分,讲解Kafka的安装和实战。 由于时间关系,今天的课程只讲到如何用官网的例子验证Kafka的安装是否成功。后续课程

本课分2部分讲解: 第一部分,讲解Kafka的概念、架构和用例场景; 第二部分,讲解Kafka的安装和实战。 由于时间关系,今天的课程只讲到如何用官网的例子验证Kafka的安装是否成...
  • cary_1991
  • cary_1991
  • 2016年04月26日 16:44
  • 1258

一线架构师时间指南

  • 2012年03月20日 12:39
  • 22.62MB
  • 下载

开源社区第19期JAVA架构培训班开始报名啦!每期只招十个,报名抓紧时间啦!

各位同学:    JEECG第19期架构培训班15号开班啦!想报名的同学尽快联系招生导师,每期只有10个名额,速度哦!一、培训内容主要方向:JAVA架构,深层次java架构基础、主流框架技术等。作业体...
  • zhangdaiscott
  • zhangdaiscott
  • 2015年09月07日 10:41
  • 1668

angular1x初始与架构演进(四)gulp配置+OcLazyLoad中资源MD5时间轴更新

个人不是很喜欢非覆盖式更新这个模式:在一个版本中资源会出现不同的时间轴版本,而且这些版本会一直存在,导致项目越来越大,至于管理这个功能其实git就有提供,webstrom也有提供历史记录,所以这种模式...
  • qq_26744901
  • qq_26744901
  • 2017年01月09日 01:13
  • 1404

系统架构设计师 报考指南,考试时间

软考简介     计算机技术与软件专业技术资格(水平)考试(以下简称“软考”)是原中国计算机软件专业技术资格和水平考试(简称“软件考试”)的完善与发展。这是由国家人事和劳...
  • Ritsu_
  • Ritsu_
  • 2013年07月24日 15:42
  • 3803

微博feed系统的push和pull模式和时间分区拉模式架构探讨

微博feed系统的push和pull模式和时间分区拉模式架构探讨 六月 21, 2011 by Eugene · Leave a Comment  ...
  • srg23
  • srg23
  • 2012年03月14日 16:56
  • 471

微博feed系统推拉模式和时间分区拉模式架构探讨

sns系统,微博系统都应用到了feed(每条微博或者sns里的新鲜事等我们称作feed)系统,不管是twitter.com或者国内的新浪微博,人人网等,在各种技术社区,技术大会上都在分享自己的feed...
  • hhq163
  • hhq163
  • 2014年11月05日 14:47
  • 1041
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:架构验证的时间
举报原因:
原因补充:

(最多只允许输入30个字)