我要重构“软件行业”......
这几天突然有个想法,要是我们把整个软件行业想象成一个项目,而我是整个项目的架构师,该如何重构这个项目。
图片来自 Pexels
这个假设当然是不可能的,没有一家软件公司会"听我的",但如果我"重构"的好,还是很可能成为现实,因为科技总会趋向于好的方向发展,一个好的重构搞不好就和未来不谋而合了。
我们先来整体看下我们"软件行业"这个项目:从范围来说,它包括用户界面,各种应用软件 APP,再到操作系统,都是我们的管辖范围。
然后,我们再来采访下我们的客户:
资深宅男甲:我先提一个,以后我看电影能不能不用下载,一个蓝光动作片几十个 G,我换了新电脑还要拷贝下载。
游戏玩家乙:你都别说下载了,我们有时候根本玩不了,比如 PS4 上的赛达尔,Windows 还不让玩。好多其他软件也是,我想玩 LOL 就要买电脑,想玩王者竟然还要求我买个手机。
独肾王子丙:设备能不能别要钱,随便一个电脑,手机,平板哪个不是动不动就大几千,互相还不兼容,讨不讨厌。
霸道总裁丁:我在家里拷贝的内容,竟然在公司复制不了,你们是不是**,都是我的电脑,这么简单的功能,为啥都实现不了!!!
…
作为一个专业的软件从业人员,用户永远是对的,而架构师的职责就是解决他们的痛点。
之所以存在这些业务痛点,一定是设计在某些地方没有做好解耦和隔离。
从我们个人用的电脑,手机这些智能设备看,也有比较明显的三层:
外设(显示器,手机屏,键鼠,手柄,体感设备等等)
APP(各种应用,游戏,PC 软件等等)
操作系统(连接外设和应用)
那么上面这些客户的痛点是因为这三层没有设计好,有很强的耦合吗?
我们的显示器依赖于操作系统或者某个 APP 吗,并不会,显示器搬到哪都能用,他们之间有非常成熟且标准的接口进行隔离。
那么应用软件依赖操作系统吗,确实如此(即使不依赖 OS 的也是做了适配),这也导致我们的软件在操作系统间可移植性很差。
但这不是根因,因为这个只会影响到软件开发商,而且影响不大(市面上的操作系统类型并不多,一般软件开发商只会针对特定的操作系统进行开发)。
那么问题出在哪呢?其实是耦合层次的问题!
我们上面分析过,外设和操作系统是解耦的,APP 虽然耦合操作系统但无伤大雅,操作系统这一个底层模块更称得上完美,完全不会依赖上层的外设和应用。
但是我们都忽略了一个点:这些解耦都只是接口上的解耦,他们其实有很强的物理距离依赖。
怎么理解,很简单:外设必须和主机放一块。
用户依赖前端设备(用户要使用软件,必须得有显示器,鼠标键盘之类的前端设备才行),前端设备对操作系统的地理位置有强依赖,软件又依赖操作系统,操作系统又依赖硬件。
所以我们为了玩软件,就得把软件,操作系统,主机硬件全部弄到本地放一起才行。
那么是不是我们解决掉这个距离依赖,很多痛点就都不存在了呢?
01
所有人共用一个超级大电脑
以前十个人一人一台电脑打游戏,现在每个人只留一个显示器,键盘鼠标,十台电脑都搬到云上。试想想下,这十台电脑会还是十台吗?装软件还是装十份?
肯定不可能,我相信未来软件开发商应该看不到操作系统,他们只需要跟云厂商谈好要买多少 CPU,多少内存,多少带宽,多少存储空间(或者根据实际使用量动态收费)就好,然后在云上装一份自己的软件就行。
就像一台电脑连了无数根无限长的鼠标键盘线一样。
02
云操作系统出现
当所有软件上云,一定会促使操作系统发生进化。
我们现在开发软件还经常讲高并发,微服务,分布式,动态扩容等等,本质上来说这些东西都是软件对硬件的直接耦合产生的结果(也可以说是操作系统没有做好软件应用和硬件的隔离)。
而且这些东西对任何软件都一样,技术门槛还高,每家公司都搞得头大,大家不同的只是软件的内容本身。
我相信这些雷同的东西最终一定会被云操作系统给收编直至完全不可见。你的每一次下盘,你以为是一次简单的硬盘读写,其实底下是一个超级巨型的分布式智能存储软件,你既不用担心读写性能,也不用担心数据丢失。
简单说就是:就是云操作系统会完全隔离软件和硬件,软件看到的只是一个操作系统,而操作系统去做到万物互联。
现在云厂商让一个传统企业上云跟上坟一样,本质上还是因为我们看得见云,需要做代码架构调整,运维改革。
我相信未来,上云不会有太多代价,因为就是从本地机房的电脑换个更大的电脑而已。
云操作系统也可能只是在现有的基础操作系统上虚拟的一个适配层,不管怎样,我们对未来的技术实现不做过多猜测,但他一定会来。
03
资源利用最大化
当所有的资源都被云操作系统集中接管,资源肯定会被最大化利用。以前一万个人看一部电影,一人要下载一份。现在就只需要一份即可。
以前每个人一台电脑,不用的时候就是浪费,现在共用一台超级电脑,总资源消耗肯定会大大减少(参考二手宽带厂商如何把 100M 带宽卖给 100 户人家,而且每户带宽是 10M)。
对用户来说拷贝任何一个文件,都会是秒级的!
我相信未来的云系统本身就已经做好了各种备份容灾,用户层面的拷贝都只是引用拷贝。
而且即使用户需要修改文件,也会出现非常智能的存储软件能通过延迟拷贝,增量记录等手段节约大量资源,实际情况可能需要考虑存储介质的 IO 瓶颈,还是会有多份,但相比当前来说存储空间依然是成千上万倍的减少。
04
BS/CS 模式慢慢消亡
用户的电脑上云了,软件开发商的应用也上云了,都部署到一块了,还有客户端的概念吗?
没有了客户端,还有 C 端,浏览器的概念吗?所有的软件只需要定义好自己的本地 UI,通过操作系统的接口传给外设即可。
当然,现在我们所谓的 C 端不可能一下子消失,这些东西一定有一个过渡期,但最终一定会慢慢消失。
05
个人操作系统消失,云操作系统崛起
这个不需要太多解释,云上的电脑肯定根本不需要界面,像 Window 这类桌面级的操作系统肯定会慢慢衰落,而面向于云的操作系统肯定会崛起。
这类操作系统要有很强的整合硬件的能力(这个我比较看好华为的鸿蒙,至少他的理念是对的。
鸿蒙有一个流转的概念,其实真正的流转就是"不需要流转",把一个东西从 A 传给 B,总会有同步传输的消耗,如果 A 和 B 本来就是同一个人,还需要流转吗?)。
06
智能存储软件崛起
由于个人电脑普遍上云,专业的存储软件会替换现在的硬盘,存储变得更为智能。相当于一块超级大的智慧硬盘。
主要功能如下:
自动备份,自动修复:再也不用担心硬盘损坏,数据丢失。(基本的存储软件都会有 raid,容灾等功能)
弹性伸缩:可以随时插入新盘进行扩容,也可以自动给没有使用的硬盘下电,节约能耗。
自动整理:自动整理磁盘碎片,比如 100 块同样大小的盘,每个盘都有 10% 的数据,那么可以把这些数据整理到 10 块盘中,其他的 90 块盘可以闲置。
自动压缩:比如存储两个 1G 的文件,其中一个文件是拷贝的另外一个文件仅做了少量修改。最终使用的存储空间约等于 1G+ 修改部分的大小。
极速拷贝:其实和自动压缩很像,你拷贝仅仅只拷贝引用,修改就只存储修改的部分。
07
云操作系统称霸
我不认为前端设备和操作系统的接口能够标准化,我更倾向于到时候会出现几个大的云操作系统厂商,各自有自己的标准。
为什么这样说,因为一旦标准归一,就代表任何厂家都可以生产外设(就跟浏览器一样,百花齐放),而外设又是流量的总入口,这么大快肥肉没人想拱手让出。
软件和操作系统之间的接口会统一标准吗?我觉得答案不重要,统一更好,不统一也会出现类似于 JVM 这样的适配层出现。
08
外设会发生变革
现在的前端设备都是带一些 HDMI 插口,以后可能就只有一个网口,或者 WiFi 模块。
每个前段设备都会自带一个协议解析模块,将云操作系统的数据解析为影音数据。
其实 TC 盒子之类的云桌面早就出现了,只不过 TC 盒子还有点大,像一个小的操作系统,可以接键鼠显示器,未来一定会越变越小,一直小到看不见(比如集成在显示器上)。
我没有去研究 TC 盒子的实现原理,我不知道他是如何把数据传到前端来的,键鼠操作也还流畅,只不过画面不是很清晰,我不清楚这种如果用来玩那种大型的单机或网游,性能会怎么样。
不过不重要,最基础的云桌面都实现了,随着各项技术的发展,那种无限接近于近端连接的云桌面还会远吗?
09
显示器,鼠标键盘这些外设厂家衰落
软件开发商和用户都上云了,接口又是云厂商私有的,以前的外设厂家通过 USB 接口,耳机孔,HDMI 线是没法连到云上的。
所以未来外设厂商会沦落到孙子的角色,好点的情况,云厂商卖协议转换模块给他们,狠点的话云厂商就自己造外设了。
像大米,oqqo 这些没有自己操作系统的终端厂家可就惨了,未来手机就只剩一个屏幕了,下面的接口还是别人的,应该只有西北风了。
10
真正的小程序出现
现在炒的火热的小程序,他至少还是个程序。未来应用商城的 APP,可能连程序都不是了,完全只是个链接,他只是存了个云服务器的地址而已。
11
芯片
这个要特别说一说,现在我们国家芯片被美国佬卡死了,如果手机、终端都上云了,芯片的核心竞争力就变成了性能,而不是体积大小了,我那么大个机房,我差你那几 nm?
当然,某些领域的专业外设可能还是需要高级芯片,但芯片危机肯定不会像现在这么严峻,搞不好到那时候国产芯片超过了美国也不是不可能!
12
软件开发和维护变得更简单
上面已经讲过,云系统会屏蔽掉网络,底层硬件,所有软件在开发上都类似于单体应用,而且不区分客户端和服务端(当然还是有 UI 和后端服务的分层)。
13
网络安全被重新定义
同上,软件和外层网络已经没有了接口,他只跟操作系统和内部网络直接交互,所有的安全问题全部转移到操作系统之上。
我相信安全这个行业会被重新定义。以前还说模拟客户端发个网络请求来攻击服务器,现在你就拿个键盘鼠标,我看你咋攻击!
当然如果你牛逼,把云操作系统和外设的接口都给破解了,又能干嘛,传输一些按钮键盘点击事件过去,能做的估计也很有限(当然到时候外设肯定会有专门的认证接口,只要这个做好防护应该就不会有大问题)。
14
显卡声卡之类的东东
云操作系统肯定是不需要显卡声卡的(到时候肯定有一个本地视频影音数据转网络数据的模块,不知道会叫什么),即使有也很可能会转移到显示器上,我只是感觉这些东西会有很大的变革,等着看吧。
15
其他的一些影响
用户的习惯被改变了,很多东西都会变。像现在这种游戏主机厂商应该会被淘汰,没人会愿意买一台大主机回家,还要下载游戏,还天天更新,而且你支持的那么几款游戏还不兼容其他系统,我呸!
网吧很多年前很多人预研说会消失,因为大家都有钱了买得起电脑了,谁还去网吧,结果呢,还活得好好的。
但这次是真的要凉凉了,电脑都没了,网吧放啥啊,就放个显示器?别说,还真有可能继续活着。
个人数据都上云了,安全和隐私会变得格外重要,应该会有完善的法律法规出现。哪家公司敢挑战这个,一准凉凉。
远程会议,远程定位这种实现会变得格外简单。
现在所谓的网络游戏可能没了,都会变成一个超大的“局域网”游戏,数据全在“本地”交互。
....
16
总结
总体来说:
未来会形成以云操作系统为中心的不同阵营。
一刀把显示器和电脑的的连接线砍断换成了网线,手机也只剩一块屏幕。
用户会以软件为单位购买服务,而不是买整个手机或电脑回去。
以后大家想玩啥就直接玩,没有下载,没有更新。把家里的东西拷到公司怎么整?还需要拷贝吗?记好你的账号,在哪登录都是一样的。
上面这东西总体来说都是假设,是否真的能实现呢?万一技术上不可行,不都是瞎扯吗,而且就算技术可行,大家愿意用上云吗?
其实我觉得这个问题毋庸置疑,试想一下,以前交通不发达的时候,大家会在家里屯粮食,因为出门买东西不方便,现在呢,交通已经很便利了,但是还是不够便利,至少跨个省还是要几个小时。
但是如果有一天交通异常发达了,你今天想去纽约喝杯咖啡两分钟就能到,试问,谁还会在家里冰箱装一堆一堆的东西。
我相信只要解决了个人隐私和安全问题,大家一定还是愿意上云的,买个电脑要占家里空间,自己要装系统,装软件,坏了要修,用个几年还要买新的,万一出个差电脑还带不走,不用的时候还浪费。
上云了这些问题都不存在,按需定制付费。技术问题就更不用说了:云操作系统更多的是实现问题,没有无法逾越的技术难题。
至于网络带宽和时延,短短十几年我们就从 2G,到 3G,4G 再到 5G,网络接口的效率达到和本地接口一样只是一个时间问题,不用操这种咸心。
简介:现任鼎桥技术有限公司架构师,从事软件开发和软件设计十二年,精通 Java,对设计原则和设计模式等有深刻理解,平时喜欢撸代码,做逻辑智力题,打打游戏。
编辑:陶家龙
来源:51CTO技术栈
精彩文章推荐:
2021-07-29
2021-07-26
2021-07-23
2021-07-19
2021-07-16
2021-07-08