新发明轮子web
Business Domain至关于人的大脑,而Service,Repository,Glue Code等部分所采用的技术,所有都是计算机本身领域的技术,都是为了可以让程序跑起来,至关于人的四肢。咱们大部分开发人员的工做主要专一于四肢部分。咱们真正应该投入的是大脑部分。由于大脑可以决定四肢长什么样,而不是反过来。不少架构师、技术人员主要专一于计算机相关的技术,忽略了业务自己,甚至看不起业务,这也是为何技术老是和业务冲突的缘由。架构
架构师应该承担起解决业务问题的这个角色来,专一于Business Domain和软件自己的架构,让技术人员致力于为业务在计算机中跑起来而努力。只有把这二者很好的结合起来,才能更好地完成业务的目标,才会让软件更好地服务于你们。最终必定会获得一个很好的软件架构,令软件开发团队和业务部门都可以很好地开展工做并下降成本。开发
当现有已经存在不少技术,而这些技术却和咱们所要解决的问题并非那么直接对应的时候,咱们就须要有意识的组织和识别不一样的技术,来实现业务的目标。这个时候组织的方式有不少种,其中成本最低的方法就是按照要达成的目的和当前的问题,从上到下进行架构分拆。分拆出来的更细粒度的问题,分解到不一样的人来进行解决,就造成了业务架构和组织架构。解决这些问题就须要组合不少不一样的技术,那么应该采用哪些技术?仍是本身重头实现一个? 本身实现一个—这就是不少人所谓的从新发明轮子。如下试着分析一下:it
当技术所解决的问题和分拆出来要解决的问题,彻底匹配的时候,这是最完美的。好比须要提供web要访问的service,不少MVC的framework就能够很好的知足这一点。而这个时候若是非要本身实现一个,颇有可能就是从新发明轮子。软件
当技术所提供的能力远远超过须要解决的问题时,每每掌握技术和维护技术会成为瓶颈。由于越复杂的技术,成本越高。若是本身实现一个仅仅是解决当前问题的方案,可能成本反而更低。这也是为何不少大型的互联网公司不断地开源出来本身的技术的缘由。而这些技术对于咱们来讲是否适用?他们本来是用来解决谁的问题的?什么问题?若是不清楚这些,就冒然采用,可能会致使更高的成本。互联网
当技术所提供的能力和咱们所要解决的问题部分匹配时,仍是要当作本。好比当咱们须要一个锤子的时候,手边正好没有,可是却有一只高跟鞋,勉强也能够替代锤子。可是长期来看,这么用不划算,由于高跟鞋的价格比锤子高不少,耐用性差不少,维护成本也高不少。service
因此,准确识别采用什么技术的能力,也是架构师所要具有的能力之一。考虑的主要因素也是长期的成本和收益。程序