1
近二十年的架构发展,这背后源源不断的动力是什么?
说到企业架构发展,相信进入互联网行业最早的小伙伴,听说的都是单体架构(IOE),而再近一些的,基本上都是分布式架构,SOA等等,一直到近几年兴起的微服务架构和服务网格。
架构其实一直在不断得演进,从最初的单体应用,再到几千个服务组成一个应用,其背后的动力到底什么?
是为了更快,更强?还是为了拥抱开源?全TM是扯淡,头哥认为首要的动力就是为了降低成本。
一、成本是第一驱动力
那么成本是什么?成本是你的工资吗?是几百个程序员的工资吗?
“都不是!”
一个程序员能花多少成本?一年几十万,或者再多点。但是这些成本对于一个成熟的商业公司来说,是可以接受的,不能承受就把你裁了,招个钱少会的多的。
因此企业所考虑的成本是这个系统不稳定或者出现bug导致的故障,会给企业带来多少损失。知乎上有个网友分享了自己的经历,如果他这个订单发给银行,那么他可能需要十年以后再回答这个问题了。
在移动互联网爆发之前,很多人上网还需要拨号上网,即使出现问题,也不会有太大的问题。但是放到现在一旦程序不可用,轻者被喷,重者可能企业都会倒闭,因为国内当前的用户基数,一旦出现问题就是大麻烦。
当这些互联网公司意识到这个这些问题后,都开始升级企业IT架构,解决隐患。
大家想一下,在架构没有演进之前,一个模块出现了bug,那么整个应用就不能用了,对于淘宝,京东这样的电商企业,他们能接受这样的代价吗?
很显然不能,所以他们要改架构,把单体应用拆分成多个微服务。即使你一个程序员把其中一个服务的业务逻辑写错了(当然不能是核心业务),那这个服务也不会影响大局,丢失订单,更不会影响我去“割韭菜”。
二、提升用户体验,继续“割韭菜”
在移动互联网初期,一旦遇到大促销,下单就需要排队等候,往往等了一两分钟最后没有抢到。
相信很多人都经历过早期抢购小米手机这个事情,最初发布的小米手机总是需要在官网抢购,往往登了一两分钟结果没有抢到,当然这个一两分钟时间是很短,但是对于抢购的用户来说,却是非常煎熬,因此很多人都在说小米在搞“饥饿营销”,甚至称雷军是在“耍猴”。
但是你会发现,现在我们在抢购商品,点击下单后,可以马上确定是否抢购成功,为什么?
说到底,也是因为现在的网购平台针对这一点,优化了企业内部的IT架构,提高并发连接,降低延迟,以提升用户体验。
要头哥说,什么提升用户体验,就是怕你下单的时候等候时间长,后悔不买了,割不动你这个小韭菜了。
所以说无论企业级架构发展如何发展,其背后的推动力首先肯定是成本,其次才是用户。如果你的公司不升级架构,那么最终的结果就是破产倒闭。
什么提升系统可用性、可扩展性,都是扯淡,说到底就是为了多挣钱,多割韭菜。
2
架构师是做什么的?为什么每个企业的架构师都不一样?
那么为什么会有架构师这个职业?据头哥了解,架构师这个职业在国外很少,他们的招聘都是清一色的engineer,什么基础架构师、系统架构师、软件架构师几乎没有。
那么国内为什么会需要这个职业呢?
相信大家都听说过裱糊匠,这个职业就干一件事,就是把别人给你的东西给糊好,其他的所有东西都不需要他考虑。为什么我要说这个呢?
因为我觉得我们大部分程序员也是一个裱糊匠,业务给你需求,你只需要按需求实现业务逻辑就好了,什么计算机原理,高并发你都不需要懂。那么既然程序员也是“裱糊匠”,自然就需要有人告诉你,这个程序应该是使用哪个框架,需要考虑多大并发,预算是多少等等,所以架构师就出现了。
当然了,也不是什么阿猫阿狗就能做架构师,架构师一般都是具有以下三个特点:
1、技术能力强
这个一点毋庸置疑,架构师需要知道主流技术的基本原理,应用场景及解决问题的能力。相信关注我的小伙伴都知道,我之前也是做过架构师这个岗位的,就是因为我的老大,看我技术牛逼。
2、架构能力
你需要站在业务的角度进行系统分解、技术选型、架构搭建以及规范制定。你设计出来的架构,一定要满足公司近几年的业务需求,并且未来也要易扩展。
3、沟通能力
这个看起来并不是那么重要,但是没有还真不行。你需要了解用户或者客户的需求,需要不断的与客户沟通,和企业内的IT人员沟通。
综上所述,并不是人人都可以当架构师。这个时候一些崇洋媚外的人就要说了,国外技术更牛,能力更强,为什么国外的企业不需要架构师呢?我就借用晓波的一段话,给大家解答这个问题:
“中国互联网的发展,都是基于应用场景的发展。当出现问题时,我们国内的人则偏向于用架构来解决问题,而国外则偏向于用底层的技术解决问题。比如说连接慢了,国内的程序员肯定是想,调整架构,增加并发,在架构上完成优化。而国外的人,则会从底层去考虑,因为他们底蕴更深厚一些,所以他们会考虑用更高效的存储引擎或者计算引擎来解决问题。”
讲了那么多,架构师到底是干什么的呢?晓波刚工作时用了一年的时间总结了一句话: “合理规划系统的边界,这是架构师首要的任务” 。
但是很多企业的架构师的个人能力或者解决问题的方向是有很大差别的,为什么会出现这种情况呢?
晓波总结了两点,我觉得非常好:
“首先,就是我们很多程序员都是“面向工资”编程,在公司内部是被当做一种资源在使用,既然被定义成资源,那么你一定是被定义者,你没有办法给自己定位。所以你的技术能力基本上是跟着给你发工资的人走,你不能和他对着干。”
如果你要说,我不在乎工资,我只追求梦想。头哥只能说,你真牛逼!
“其次,每家公司对于技术的要求是不一样的,对于技术方向也是不一样的。可能同一个类型的公司,同一个人去做这个架构,那么也不一定能实现一模一样的架构。因为你的技术方向和技术能力不是由你自己决定的,而是由负责人来决定的。长年累月的下来,两个本来水平差不多的架构师,过几年可能就会变成天差地别。”
既然你的上司决定了你的技术上限,那么自然而然架构师的差异就会越来越大。当然这也只是一部分,另外一个部分就是大环境的影响,也就是企业级架构未来的发展趋势。
3
未来五年,谈谈对企业级系统架构的趋势与展望
我们没有办法预测企业级架构的发展趋势,但是至少有两点是不可忽视:
一、技术下沉,走进更深层的产业
我们现在讨论的很多架构,其实都TOC行业的架构,这些架构这些互联网公司已经非常成熟,那么当我们走到更深层次的产业时,这些解决方案是否过于复杂,是不是开箱即用。因为传统工厂是不会养那么高端程序员的,那么自然而然,对于互联网时期沉淀下来的解决方案、工程设施,一定会进一步改进和简化。
二、万物互联时代,流量会再达高峰
互联网刚刚兴起的时候,仅有少数人可以通过网络进行连接,这自然就不会触发流量的上限。而当进入移动物联网时代,由于智能手机的普及,接入互联网的人越多越多,流量自然而然就会增大,所以在之前的很多年,我们一直都在致力于解决高并发、低延迟的问题,而未来随着万物互联,那么流量必然会冲破高峰。
所以企业级架构的发展,一定是螺旋式上升,而不是垂直上升。而未来企业级架构的发展,也会随着这些大环境的发展而变得更加多元化,一个既懂技术,又懂产品、运营、管理的架构师,才是一个好的架构师。