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