13 技术演进方向与模式

这些价值观本身都有一定的道理,但如果不考虑实际情况生搬硬套,就会出现“橘生淮南则为橘,生于淮北则为枳”的情况。

不同派别存在的问题:

  • 潮流派:新技术需要时间成熟,刚出来就用,实际应用中很可能遇到各种“坑”。新技术需要学习成本,掌握后又发现不适用,则是一种较大的人力浪费。
  • 保守派:无视技术的发展,不能享受新技术带来的收益,因为新技术很多都是为了解决以前技术存在的固有缺陷。
  • 跟风派:既不会承担“潮流派”的风险,也不会遭受“保守派”的损失,花费的资源也少,简直就是一举多得。如果没有风可跟的时候怎么办。竞争对手的信息并不那么容易获取,即使获取到了也是不全面的,一不小心可能就变成邯郸学步了。即使有风可跟,盲目模仿可能带来相反的效果。

0.1. 技术演进的动力

站在技术本身的角度来考虑问题的,陷入“不识庐山真面,只缘身在此山中”。要想看到“庐山真面目”,只有跳出技术的范畴,从一个更广更高的角度来考虑这个问题,这个角度就是企业的业务发展

影响企业业务的发展主要有 3 个因素:市场技术管理,这三者构成支撑业务发展的铁三角,任何一个因素的不足,都可能导致企业的业务停滞不前。

image

在这个铁三角中,业务处于三角形的中心,毫不夸张地说,市场技术管理都是为了支撑企业的业务发展

企业的业务分为两类:一类是产品类,一类是服务类。

  • 产品类:360 的杀毒软件、苹果的 iPhone、UC 的浏览器等都属于这个范畴,这些产品本质上和传统的制造业产品类似,都是具备了某种“功能”,单个用户通过购买或者免费使用这些产品来完成自己相关的某些任务,用户对这些产品是独占的。
  • 服务类:百度的搜索、淘宝的购物、新浪的微博、腾讯的 IM 等都属于这个范畴,大量用户使用这些服务来完成需要与其他人交互的任务,单个用户“使用”但不“独占”某个服务。事实上,服务的用户越多,服务的价值就越大。服务类的业务符合互联网的特征和本质:“互联”+“网”。

对于产品类业务,技术创新推动业务发展!因为,用户选择一个产品的根本驱动力在于产品的功能是否能够更好地帮助自己完成任务。

对于服务类业务,业务发展推动技术发展!原因,用户选择服务的根本驱动力不是功能,而是“规模”。

当“规模”成为业务的决定因素后,服务模式的创新成为业务发展的核心驱动力,而产品只是为了完成服务而提供给用户使用的一个载体。

服务类的业务发展路径是这样的:

  1. 提出一种创新的服务模式
  2. 吸引了一批用户
  3. 业务开始发展
  4. 吸引了更多用户
  5. 服务模式不断完善和创新
  6. 吸引越来越多的用户
  7. 如此循环往复

综合这些分析,除非是开创新的技术能够推动或者创造一种新的业务,其他情况下,都是业务的发展推动了技术的发展

0.2. 技术演进的模式

业务模式千差万别:

  • 有互联网的业务(淘宝、微信等),
  • 有金融的业务(中国平安、招商银行等),
  • 有传统企业的业务(各色 ERP 对应的业务)等,

但无论什么模式的业务,如果业务的发展需要技术同步发展进行支撑,无一例外是因为业务“复杂度”的上升,导致原有的技术无法支撑。

复杂度要么来源于功能不断叠加,要么来源于规模扩大,从而对性能和可用性有了更高的要求。判断到底是什么复杂度发生了变化至关重要。

在架构设计时,判断业务当前和接下来一段时间的主要复杂度是什么就非常关键。

  • 判断不准确就会导致投入大量的人力和时间做了对业务没有作用的事情,
  • 判断准确就能够做到技术推动业务更加快速发展。

判断的标准就是基于业务发展阶段。这也是为什么架构师必须具备业务理解能力的原因。不同的行业业务发展路径、轨迹、模式不一样,架构师必须能够基于行业发展和企业自身情况做出准确判断。

0.2.1. 互联网行业

互联网业务千差万别,但由于它们具有“规模决定一切”的相同点,其发展路径也基本上是一致的。互联网业务发展一般分为几个时期:初创期、发展期、竞争期、成熟期。不同时期的差别主要体现在两个方面:复杂性用户规模

0.2.1.1. 业务复杂性

互联网业务发展第一个主要方向就是“业务越来越复杂”。

发展时期业务发展特点技术要求
初创期创新
发展期(堆功能期/优化期/架构期)逐渐完善快速实现需求/系统优化/调整架构(拆分)
竞争期(重复造轮子/系统交互混乱)形成规模平台化/服务化
成熟期行业成熟、市场地位牢固,业务求精技术进入成熟期,继续优化

0.2.1.2. 用户规模

互联网业务的发展第二个主要方向就是“用户量越来越大”,随着业务阶段的发展,用户量也随着变大。

用户量增大对技术的影响主要体现在两个方面:性能要求越来越高可用性要求越来越高

  1. 性能:单台 MySQL 机器支撑的 TPS 和 QPS 最高也就是万级,低的可能是几千,高的也不过几万。需要从集中式变成分布式存储,复杂度大幅提升。
  2. 可用性:系统宕机造成的口碑影响以及可用性对收入的影响随着用户量增大而增大。

0.2.1.3. 量变到质变

互联网业务驱动技术发展的两大主要因素是复杂性用户规模,而这两个因素的本质其实都是“量变带来质变”。

阶段用户规模业务阶段技术影响
婴儿期0~1万初创期用户规模对性能和可用性没有压力
幼儿期1万~10万初创期用户规模对性能和可用性略有压力,单台服务器可能撑不住,需要多台机器
少年期10~100万发展期用户规模对性能和可用性有较大压力,系统优化同时将大业务拆分为多个子业务
青年期100万~1000万竞争期用户规模对性能和可用性有很大压力,集群,多机房,平台化,服务化
壮年期1000万~1亿竞争&成熟期用户规模对性能和可用性有巨大压力,架构方案可能要推倒重来,机会难得非常锻炼人
巨人期1亿+成熟期行业垄断地位,稳妥

应对业务质变带来的技术压力,不同时期有不同的处理方式,但其核心目标都是为了满足业务“快”的要求,当发现业务快不起来的时候,其实就是技术的水平已经跟不上业务发展的需要了,技术变革和发展的时候就到了。

更好的做法是在问题还没有真正暴露出来就能够根据趋势预测下一个转折点,提前做好技术上的准备,这对技术人员的要求是非常高的。

上次修改: 10 June 2020