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