一個開發(fā)者的視角:未來云會是新的操作系統(tǒng)
譯文【51CTO.com快譯】迄今為止,在計算機編程領(lǐng)域,開發(fā)人員所處的抽象級別已經(jīng)提高了好幾倍。我認(rèn)為計算機編程的抽象級別將會再次提高。
也許,這個世界永遠(yuǎn)需要會編寫和理解匯編的人,但是對絕大多數(shù)開發(fā)人員來說,在日常工作中,只需學(xué)會利用系統(tǒng)調(diào)用或者編程語言提供的API就能與操作系統(tǒng)進行交互。這也是他們能操縱的***級別。他們無需關(guān)心CPU每天到底處理了哪些指令,甚至無需手動分配內(nèi)存。
在不久的將來,開發(fā)人員習(xí)再也不用考慮程序具體運行在哪個物理機器上。
1.用戶習(xí)慣云
我們正遷移到云。
當(dāng)然,這已經(jīng)不是一個新想法。但我花了一段時間才明白“遷移到云”這句話的真正含義。
請原諒我用了這么一個時髦的詞——云。因為云是我目前聽說過的,關(guān)于那些隱藏了硬件相關(guān)信息的軟件的***描述。
也許從消費者的角度來看,云聽起來并不新鮮。因為我們早已習(xí)慣從任意設(shè)備上訪問在互聯(lián)網(wǎng)上的文件、數(shù)據(jù),而不用關(guān)心這些數(shù)據(jù)到底在哪里。
很久以前,人們就不再關(guān)心云實際部署在哪里了(德國人也許是個例外:他們認(rèn)為國外的云服務(wù)商不可控。作者是德國人,此處為自嘲)。我們的社交、工作的工具基本上都能“移動”化了。我們擁有的筆記本電腦和手機正在成為大眾都能消費的起的商品。它們無需提供太多復(fù)雜的功能和高端的硬件,僅僅只需提供了一個可與云交互的窗口,就可以滿足日常社交娛樂的需要。雖然在某些情況下,比如玩游戲,硬件要求仍然非常關(guān)鍵,但隨著云游戲的出現(xiàn),高端游戲PC也終將成為過去。
對于用戶來說,使用云后他們再也不用去關(guān)心硬件帶來的問題。這給他們帶來了巨大的便利,所以遷移上云也是理所當(dāng)然。因為人們不關(guān)心、也不想知道這些工具是如何工作的,他們只是希望它們簡單易用,可以順利幫助自己完成特定的工作。工具的維護則交給別人去做。
2.開發(fā)需要云
2.1.控制是負(fù)擔(dān)
對大多數(shù)人來說,控制你的電腦實在是一種負(fù)擔(dān)。
開發(fā)人員崇尚技術(shù)。我們想要完全控制我們的系統(tǒng)和數(shù)據(jù)。是嗎?我對此表示懷疑。至少對于像我一樣的大多數(shù)開發(fā)者而言,我們也只是創(chuàng)業(yè)或者打工的普通人,只要新的方法能夠使得開發(fā)和管理更有效、收益更大,我們就會采用。
完全控制系統(tǒng)和數(shù)據(jù)費時費力,因此我們把大部分生產(chǎn)系統(tǒng)放在云上運行。我們從亞馬遜、谷歌和微軟租用虛擬服務(wù)器,將靜態(tài)資源推送到CDN。我們能想到的、越來越多的功能現(xiàn)在都已作為服務(wù)提供,而不需要去管理它們。如數(shù)據(jù)庫、搜索引擎、防火墻、消息隊列、文件存儲、負(fù)載均衡、Web服務(wù)器、構(gòu)建服務(wù)器、測試運行器、注冊中心、密鑰管理、用戶身份驗證等等。基本上軟件的每個通用組件都有一個服務(wù)可以取代。
我們自定義的業(yè)務(wù)邏輯,即如何將各個通用組件連接在一起,才是唯一的,能讓我們的軟件,變得***的東西。
但是,在我們將業(yè)務(wù)邏輯表示為軟件的過程中所用到的編程語言、運行時工具,仍然需要考慮物理機器。我們努力在物理機器裝上Windows和Linux、或者在上面創(chuàng)建虛擬機并安裝操作系統(tǒng),然后在一系列無用的、嵌套的操作系統(tǒng)中執(zhí)行我們的業(yè)務(wù)邏輯。
2.2.云平臺的意義
如果我們拋開過去,舍棄控制,創(chuàng)建那些更適合表達(dá)業(yè)務(wù)邏輯的高效平臺,會怎么樣?
如果我們想解決更復(fù)雜的問題,我們需要一個堅實的、具有更高抽象層次的基礎(chǔ)。更復(fù)雜的業(yè)務(wù)領(lǐng)域要求我們只關(guān)注業(yè)務(wù)邏輯,而不是其他。因此,我們必須把構(gòu)建抽象基礎(chǔ)和處理業(yè)務(wù)邏輯所在的層次分離開來。
抽象基礎(chǔ)是解決復(fù)雜問題的成功的關(guān)鍵,因為我們永遠(yuǎn)都需要優(yōu)秀人才在此基礎(chǔ)上工作。然而大多數(shù)開發(fā)人員正試圖解決或者在將來想要解決的問題卻不是它。殊不知,抽象基礎(chǔ)才是現(xiàn)在世界上所有問題的根本,在此之上,技術(shù)才有潛力幫我們解決其他問題。
因為我們要有效地使用技術(shù),而不是在一些無意義的抽象層上解決復(fù)雜問題。是時候承認(rèn)我們需要新的抽象層了。讓我們構(gòu)建一個可靠、高效的抽象層,讓現(xiàn)有的語言、平臺和工具做它們各自擅長的事情。
2.3.云平臺的特征
相比低級平臺,這種表現(xiàn)級別的編程平臺有著一些不同的特征:它通常只是連接低級組件的“膠水”,通過原語級別的API來與這些組件進行通信。啟動和停止該系統(tǒng)由低級平臺處理,這讓編程平臺可以按需動態(tài)加載相應(yīng)資源。一些性能優(yōu)先的關(guān)鍵任務(wù)是由低級原語處理的。除此之外還有許多屬性來定義諸如此類的系統(tǒng)。
2.4.壟斷與開放
還記得我之前提到過的舍棄控制嗎?你也知道,那些賺取豐厚利潤的大型軟件公司正在控制這個世界。如果我們不希望所有的權(quán)力最終掌握在這些巨頭手中,你***學(xué)會這么做。因為一個健康的市場需要競爭。我們不應(yīng)該等待大公司拿出一個平臺,把我們束縛在他們的想法和產(chǎn)品上。我們需要創(chuàng)建一個選擇眾多、想法多樣的健康系統(tǒng)。很高興看到現(xiàn)在有不少大型云提供商的替代品出現(xiàn),如netlify,fastly,DigitalOcean,在此我向它們表示感謝 !
2.5.規(guī)范與工具
與操作系統(tǒng)和編程語言的多樣性類似,我們要確保云平臺的多樣性,并保證它們之間能夠相互兼容、共享標(biāo)準(zhǔn)和協(xié)議,就像現(xiàn)在被廣泛采用的電子郵件和網(wǎng)絡(luò)技術(shù)一樣。在這方面,CNCF做出了巨大的努力,制定了cloudevents和openmetrics這樣的規(guī)范!
除了規(guī)范,抽象層要解決的另一個重大問題是開發(fā)工具。開發(fā)人員往往習(xí)慣在自己的系統(tǒng)下測試、監(jiān)控和調(diào)試代碼。我認(rèn)為,在筆記本電腦上創(chuàng)建虛擬機、創(chuàng)建容器、并進行開發(fā),并不是一個好的方法。取而代之的是,我們應(yīng)該將開發(fā)環(huán)境移到云上。 這光靠Web接口是遠(yuǎn)遠(yuǎn)不夠的。更好的方法是,我們有可以利用的實時API,并在此之上來構(gòu)建產(chǎn)品,幫助開發(fā)人員提高生產(chǎn)力。這方面的工作還有許多要做,將IDE遷移到云上只是其中的***步。
3.小結(jié)
本文反映了作者對于云計算的深入思考,從開發(fā)者的角度辨別了業(yè)務(wù)邏輯與控制的關(guān)系,并給出了心目中云平臺的特征,***針對云平臺的規(guī)范與開發(fā)工具提出了自己的暢想。目前來說,AWS的serverless也許已經(jīng)做得不錯,但離作者的藍(lán)圖仍然相去甚遠(yuǎn),同樣壟斷也是他不愿看到的。也許不久的將來,軟件開發(fā)的學(xué)習(xí)曲線會越來越平坦,開發(fā)人員可以集中更多的精力在業(yè)務(wù)邏輯上,而其他則交給云平臺去做。
譯者簡介,邱仁博,多年運營商商業(yè)分析、數(shù)據(jù)中心數(shù)據(jù)庫方向工作經(jīng)驗,現(xiàn)任職于某地市事業(yè)單位信息技術(shù)部。日常關(guān)注國內(nèi)外極客新聞、前后端技術(shù)。海外知識搬運工。
原文標(biāo)題:The Cloud Is the New OS - A Developer’s Perspective, 作者:jorin
【51CTO譯稿,合作站點轉(zhuǎn)載請注明原文譯者和出處為51CTO.com】