我要重構“軟件行業”......
原創【51CTO.com原創稿件】這幾天突然有個想法,要是我們把整個軟件行業想象成一個項目,而我是整個項目的架構師,該如何重構這個項目。
圖片來自 Pexels
這個假設當然是不可能的,沒有一家軟件公司會"聽我的",但如果我"重構"的好,還是很可能成為現實,因為科技總會趨向于好的方向發展,一個好的重構搞不好就和未來不謀而合了。
我們先來整體看下我們"軟件行業"這個項目:從范圍來說,它包括用戶界面,各種應用軟件 APP,再到操作系統,都是我們的管轄范圍。
然后,我們再來采訪下我們的客戶:
資深宅男甲:我先提一個,以后我看電影能不能不用下載,一個藍光動作片幾十個 G,我換了新電腦還要拷貝下載。
游戲玩家乙:你都別說下載了,我們有時候根本玩不了,比如 PS4 上的賽達爾,Windows 還不讓玩。好多其他軟件也是,我想玩 LOL 就要買電腦,想玩王者竟然還要求我買個手機。
獨腎王子丙:設備能不能別要錢,隨便一個電腦,手機,平板哪個不是動不動就大幾千,互相還不兼容,討不討厭。
霸道總裁丁:我在家里拷貝的內容,竟然在公司復制不了,你們是不是**,都是我的電腦,這么簡單的功能,為啥都實現不了!!!
…
作為一個專業的軟件從業人員,用戶永遠是對的,而架構師的職責就是解決他們的痛點。
之所以存在這些業務痛點,一定是設計在某些地方沒有做好解耦和隔離。
設計領域一個流行很久的詞叫 MVC,主要理念是一個水平分層的概念。
從我們個人用的電腦,手機這些智能設備看,也有比較明顯的三層:
- 外設(顯示器,手機屏,鍵鼠,手柄,體感設備等等)
- APP(各種應用,游戲,PC 軟件等等)
- 操作系統(連接外設和應用)
那么上面這些客戶的痛點是因為這三層沒有設計好,有很強的耦合嗎?
我們的顯示器依賴于操作系統或者某個 APP 嗎,并不會,顯示器搬到哪都能用,他們之間有非常成熟且標準的接口進行隔離。
那么應用軟件依賴操作系統嗎,確實如此(即使不依賴 OS 的也是做了適配),這也導致我們的軟件在操作系統間可移植性很差。
但這不是根因,因為這個只會影響到軟件開發商,而且影響不大(市面上的操作系統類型并不多,一般軟件開發商只會針對特定的操作系統進行開發)。
那么問題出在哪呢?其實是耦合層次的問題!
我們上面分析過,外設和操作系統是解耦的,APP 雖然耦合操作系統但無傷大雅,操作系統這一個底層模塊更稱得上完美,完全不會依賴上層的外設和應用。
但是我們都忽略了一個點:這些解耦都只是接口上的解耦,他們其實有很強的物理距離依賴。
怎么理解,很簡單:外設必須和主機放一塊。
用戶依賴前端設備(用戶要使用軟件,必須得有顯示器,鼠標鍵盤之類的前端設備才行),前端設備對操作系統的地理位置有強依賴,軟件又依賴操作系統,操作系統又依賴硬件。
所以我們為了玩軟件,就得把軟件,操作系統,主機硬件全部弄到本地放一起才行。
那么是不是我們解決掉這個距離依賴,很多痛點就都不存在了呢?
確實如此,上面那些刁鉆客戶的問題全部迎刃而解,而且整個行業會有翻天覆地的變化!
1、所有人共用一個超級大電腦
以前十個人一人一臺電腦打游戲,現在每個人只留一個顯示器,鍵盤鼠標,十臺電腦都搬到云上。試想想下,這十臺電腦會還是十臺嗎?裝軟件還是裝十份?
肯定不可能,我相信未來軟件開發商應該看不到操作系統,他們只需要跟云廠商談好要買多少 CPU,多少內存,多少帶寬,多少存儲空間(或者根據實際使用量動態收費)就好,然后在云上裝一份自己的軟件就行。
就像一臺電腦連了無數根無限長的鼠標鍵盤線一樣。
2、云操作系統出現
當所有軟件上云,一定會促使操作系統發生進化。
我們現在開發軟件還經常講高并發,微服務,分布式,動態擴容等等,本質上來說這些東西都是軟件對硬件的直接耦合產生的結果(也可以說是操作系統沒有做好軟件應用和硬件的隔離)。
而且這些東西對任何軟件都一樣,技術門檻還高,每家公司都搞得頭大,大家不同的只是軟件的內容本身。
我相信這些雷同的東西最終一定會被云操作系統給收編直至完全不可見。你的每一次下盤,你以為是一次簡單的硬盤讀寫,其實底下是一個超級巨型的分布式智能存儲軟件,你既不用擔心讀寫性能,也不用擔心數據丟失。
你以為你就是單機部署了一下,云操作系統早就根據實時流量跟你做了云化部署和動態擴容,這些你都看不見而已。
簡單說就是:就是云操作系統會完全隔離軟件和硬件,軟件看到的只是一個操作系統,而操作系統去做到萬物互聯。
現在云廠商讓一個傳統企業上云跟上墳一樣,本質上還是因為我們看得見云,需要做代碼架構調整,運維改革。
我相信未來,上云不會有太多代價,因為就是從本地機房的電腦換個更大的電腦而已。
云操作系統也可能只是在現有的基礎操作系統上虛擬的一個適配層,不管怎樣,我們對未來的技術實現不做過多猜測,但他一定會來。
3、資源利用最大化
當所有的資源都被云操作系統集中接管,資源肯定會被最大化利用。以前一萬個人看一部電影,一人要下載一份。現在就只需要一份即可。
以前每個人一臺電腦,不用的時候就是浪費,現在共用一臺超級電腦,總資源消耗肯定會大大減少(參考二手寬帶廠商如何把 100M 帶寬賣給 100 戶人家,而且每戶帶寬是 10M)。
對用戶來說拷貝任何一個文件,都會是秒級的!
我相信未來的云系統本身就已經做好了各種備份容災,用戶層面的拷貝都只是引用拷貝。
而且即使用戶需要修改文件,也會出現非常智能的存儲軟件能通過延遲拷貝,增量記錄等手段節約大量資源,實際情況可能需要考慮存儲介質的 IO 瓶頸,還是會有多份,但相比當前來說存儲空間依然是成千上萬倍的減少。
4、BS/CS 模式慢慢消亡
用戶的電腦上云了,軟件開發商的應用也上云了,都部署到一塊了,還有客戶端的概念嗎?
沒有了客戶端,還有 C 端,瀏覽器的概念嗎?所有的軟件只需要定義好自己的本地 UI,通過操作系統的接口傳給外設即可。
當然,現在我們所謂的 C 端不可能一下子消失,這些東西一定有一個過渡期,但最終一定會慢慢消失。
不過更加可能的一種情況,以后的 C 端就僅僅是指我們的顯示器,鍵鼠這些了。
5、個人操作系統消失,云操作系統崛起
這個不需要太多解釋,云上的電腦肯定根本不需要界面,像 Window 這類桌面級的操作系統肯定會慢慢衰落,而面向于云的操作系統肯定會崛起。
這類操作系統要有很強的整合硬件的能力(這個我比較看好華為的鴻蒙,至少他的理念是對的。
鴻蒙有一個流轉的概念,其實真正的流轉就是"不需要流轉",把一個東西從 A 傳給 B,總會有同步傳輸的消耗,如果 A 和 B 本來就是同一個人,還需要流轉嗎?)。
6、智能存儲軟件崛起
由于個人電腦普遍上云,專業的存儲軟件會替換現在的硬盤,存儲變得更為智能。相當于一塊超級大的智慧硬盤。
主要功能如下:
- 自動備份,自動修復:再也不用擔心硬盤損壞,數據丟失。(基本的存儲軟件都會有 raid,容災等功能)
- 彈性伸縮:可以隨時插入新盤進行擴容,也可以自動給沒有使用的硬盤下電,節約能耗。
- 自動整理:自動整理磁盤碎片,比如 100 塊同樣大小的盤,每個盤都有 10% 的數據,那么可以把這些數據整理到 10 塊盤中,其他的 90 塊盤可以閑置。
- 自動壓縮:比如存儲兩個 1G 的文件,其中一個文件是拷貝的另外一個文件僅做了少量修改。最終使用的存儲空間約等于 1G+ 修改部分的大小。
- 極速拷貝:其實和自動壓縮很像,你拷貝僅僅只拷貝引用,修改就只存儲修改的部分。
7、云操作系統稱霸
我不認為前端設備和操作系統的接口能夠標準化,我更傾向于到時候會出現幾個大的云操作系統廠商,各自有自己的標準。
為什么這樣說,因為一旦標準歸一,就代表任何廠家都可以生產外設(就跟瀏覽器一樣,百花齊放),而外設又是流量的總入口,這么大快肥肉沒人想拱手讓出。
軟件和操作系統之間的接口會統一標準嗎?我覺得答案不重要,統一更好,不統一也會出現類似于 JVM 這樣的適配層出現。
8、外設會發生變革
現在的前端設備都是帶一些 HDMI 插口,以后可能就只有一個網口,或者 WiFi 模塊。
每個前段設備都會自帶一個協議解析模塊,將云操作系統的數據解析為影音數據。
其實 TC 盒子之類的云桌面早就出現了,只不過 TC 盒子還有點大,像一個小的操作系統,可以接鍵鼠顯示器,未來一定會越變越小,一直小到看不見(比如集成在顯示器上)。
我沒有去研究 TC 盒子的實現原理,我不知道他是如何把數據傳到前端來的,鍵鼠操作也還流暢,只不過畫面不是很清晰,我不清楚這種如果用來玩那種大型的單機或網游,性能會怎么樣。
不過不重要,最基礎的云桌面都實現了,隨著各項技術的發展,那種無限接近于近端連接的云桌面還會遠嗎?
我猜測,未來外設會特別便宜,甚至免費,因為你使用了我的前端設備,就代表你選擇了我的云操作系統和我所支持的所有軟件,前端設備的費用最終可以轉嫁到軟件服務費中。
9、顯示器,鼠標鍵盤這些外設廠家衰落
軟件開發商和用戶都上云了,接口又是云廠商私有的,以前的外設廠家通過 USB 接口,耳機孔,HDMI 線是沒法連到云上的。
所以未來外設廠商會淪落到孫子的角色,好點的情況,云廠商賣協議轉換模塊給他們,狠點的話云廠商就自己造外設了。
像大米,oqqo 這些沒有自己操作系統的終端廠家可就慘了,未來手機就只剩一個屏幕了,下面的接口還是別人的,應該只有西北風了。
10、真正的小程序出現
現在炒的火熱的小程序,他至少還是個程序。未來應用商城的 APP,可能連程序都不是了,完全只是個鏈接,他只是存了個云服務器的地址而已。
你通過賬號密碼登陸上去,和云電腦通信直接就能享受軟件服務,軟件和系統早就已經準備好了,你只需要告訴我你想玩啥。
11、芯片
這個要特別說一說,現在我們國家芯片被美國佬卡死了,如果手機、終端都上云了,芯片的核心競爭力就變成了性能,而不是體積大小了,我那么大個機房,我差你那幾 nm?
當然,某些領域的專業外設可能還是需要高級芯片,但芯片危機肯定不會像現在這么嚴峻,搞不好到那時候國產芯片超過了美國也不是不可能!
12、軟件開發和維護變得更簡單
上面已經講過,云系統會屏蔽掉網絡,底層硬件,所有軟件在開發上都類似于單體應用,而且不區分客戶端和服務端(當然還是有 UI 和后端服務的分層)。
軟件和用戶之間不再直接關聯,而是通過云操作系統連接,那么外掛問題,安全問題,版本升級,硬件的性能瓶頸可能都沒了,不要太香。
13、網絡安全被重新定義
同上,軟件和外層網絡已經沒有了接口,他只跟操作系統和內部網絡直接交互,所有的安全問題全部轉移到操作系統之上。
我相信安全這個行業會被重新定義。以前還說模擬客戶端發個網絡請求來攻擊服務器,現在你就拿個鍵盤鼠標,我看你咋攻擊!
當然如果你牛逼,把云操作系統和外設的接口都給破解了,又能干嘛,傳輸一些按鈕鍵盤點擊事件過去,能做的估計也很有限(當然到時候外設肯定會有專門的認證接口,只要這個做好防護應該就不會有大問題)。
14、顯卡聲卡之類的東東
云操作系統肯定是不需要顯卡聲卡的(到時候肯定有一個本地視頻影音數據轉網絡數據的模塊,不知道會叫什么),即使有也很可能會轉移到顯示器上,我只是感覺這些東西會有很大的變革,等著看吧。
15、其他的一些影響
用戶的習慣被改變了,很多東西都會變。像現在這種游戲主機廠商應該會被淘汰,沒人會愿意買一臺大主機回家,還要下載游戲,還天天更新,而且你支持的那么幾款游戲還不兼容其他系統,我呸!
網吧很多年前很多人預研說會消失,因為大家都有錢了買得起電腦了,誰還去網吧,結果呢,還活得好好的。
但這次是真的要涼涼了,電腦都沒了,網吧放啥啊,就放個顯示器?別說,還真有可能繼續活著。
個人數據都上云了,安全和隱私會變得格外重要,應該會有完善的法律法規出現。哪家公司敢挑戰這個,一準涼涼。
遠程會議,遠程定位這種實現會變得格外簡單。
現在所謂的網絡游戲可能沒了,都會變成一個超大的“局域網”游戲,數據全在“本地”交互。
....
16、總結
總體來說:
- 未來會形成以云操作系統為中心的不同陣營。
- 一刀把顯示器和電腦的的連接線砍斷換成了網線,手機也只剩一塊屏幕。
- 用戶會以軟件為單位購買服務,而不是買整個手機或電腦回去。
以后大家想玩啥就直接玩,沒有下載,沒有更新。把家里的東西拷到公司怎么整?還需要拷貝嗎?記好你的賬號,在哪登錄都是一樣的。
上面這東西總體來說都是假設,是否真的能實現呢?萬一技術上不可行,不都是瞎扯嗎,而且就算技術可行,大家愿意用上云嗎?
其實我覺得這個問題毋庸置疑,試想一下,以前交通不發達的時候,大家會在家里屯糧食,因為出門買東西不方便,現在呢,交通已經很便利了,但是還是不夠便利,至少跨個省還是要幾個小時。
但是如果有一天交通異常發達了,你今天想去紐約喝杯咖啡兩分鐘就能到,試問,誰還會在家里冰箱裝一堆一堆的東西。
我相信只要解決了個人隱私和安全問題,大家一定還是愿意上云的,買個電腦要占家里空間,自己要裝系統,裝軟件,壞了要修,用個幾年還要買新的,萬一出個差電腦還帶不走,不用的時候還浪費。
上云了這些問題都不存在,按需定制付費。技術問題就更不用說了:云操作系統更多的是實現問題,沒有無法逾越的技術難題。
至于網絡帶寬和時延,短短十幾年我們就從 2G,到 3G,4G 再到 5G,網絡接口的效率達到和本地接口一樣只是一個時間問題,不用操這種咸心。
作者:王兵
簡介:現任鼎橋技術有限公司架構師,從事軟件開發和軟件設計十二年,精通 Java,對設計原則和設計模式等有深刻理解,平時喜歡擼代碼,做邏輯智力題,打打游戲。
編輯:陶家龍
征稿:有投稿、尋求報道意向技術人請添加小編微信 gordonlonglong
【51CTO原創稿件,合作站點轉載請注明原文作者和出處為51CTO.com】