系統的三個變革對應用開發的深遠影響

操作系統是硬件之上最基礎、最重要的一層,可以說,它長啥樣,應用開發就長啥樣。而操作系統每一次的變革,也就是下一波應用開發的熱潮。因此,瞭解操作系統的發展,就能掌握應用開發的原理和技術發展規律。根據操作系統部署運行的基礎,操作系統的發展經歷了傳統物理機、虛擬機和集裝箱(也叫容器)三個時代,而現在人人皆知的雲及其雲應用就是集裝箱的功勞。

操作系統發展的三個時代

一、傳統物理主機時代:

1、應用部署:獨佔物理服務器

在傳統時代,操作系統只能運行在物理服務器上。而且,每個應用都運行在物理主機上,當多個應用運行在同一臺物理服務器上時,如果某一個應用程序某個時刻消耗資源較大時,則其他應用程序會受到影響導致無法運行或者運行很慢。在企業生產環境下,爲了解決這個問題,人們只能用物理機將應用隔離,用不同的物理服務器安裝部署不同的應用程序。這導致了服務器資源無法充分使用,提高了企業的運維成本。

2、硬件資源:按級分配

你的是你的,我的是我的。IT設備部門實打實的給每人發放電腦,電腦配置如何往往與你的級別有關。問題是你領導的電腦配置比你高好幾個檔位,他可能只不過用用PPT和瀏覽器,他的CPU一直處於閒置狀態。而你打開數據庫、開發環境、各種業務應用等等,CPU一直處於滿格狀態,時不時卡個機。爲了提高你的工作效率,企業只能花錢提升你的電腦配置。

3、應用開發:不會修電腦的網管不是好程序員。

沒有兩臺軟件環境完全一樣的電腦,在這個時代,開發人員最苦惱的莫過於在自己電腦上運行正常的程序,到A電腦不行,好不容易解決了A的問題,到B電腦還不行,當A、B都解決了到C還是不行。爲了解決問題,開發人員把大量的盡力耗費在安裝系統、打補丁,排查環境問題上。

二、虛擬機時代

1、應用部署:用虛擬機共享物理服務器

爲了解決傳統主機時代的問題,人們引入了虛擬機。

虛擬機,顧名思義是一臺虛擬的機器,但是每臺虛擬機都是一個可以運行的完整機器,它有自己的操作系統和虛擬化的硬件。多個虛擬機可以運行在同一臺物理主機上,每個虛擬機運行自己的應用程序,虛擬機之間相互隔離互不干擾。因此,虛擬機解決了傳統時代應用程序直接運行物理服務器上相互干擾的問題,同時也能充分利用物理服務器上的資源,避免閒置資源浪費。

2、硬件資源:按需分配

你用就是你的,我用就是我的。IT部門給你分配的是虛擬機,換句話說,IT部門給你分配的是資源而不是實打實的電腦,實打實的電腦都由IT部統一調度。在虛擬化環境下,剛開始你的領導名義上拿到了一臺高配電腦,而你是低配,但是過不了多久,你經常把你名下的資源用到滿格狀態,這時候你申請提升配置,IT部一看服務器上有很多空閒資源就立即將你升一檔,而這些資源其實是你的領導空閒下來的。在虛擬機下,每個人都沒有固定的實體電腦,但你可以從任意一臺物理電腦上訪問你的虛擬電腦,進入你的虛擬電腦後跟傳統實體電腦一樣安裝運行各種程序,而且其他人無法訪問你虛擬電腦上的信息。這是怎麼做到的呢?就是利用這項新的虛擬機技術,多臺虛擬機可以運行在同一臺物理主機上。

3、應用開發:無污染虛擬機部署排查

虛擬機的出現幫了開發人員的大忙,開人員可以將程序部署到一臺虛擬機上進行測試和運行,避免了與其他應用程序相互干擾,一定程度上降低了排查程序問題的難度。當測試或生產環境出現和開發環境不一致的問題時,快速部署一個無污染的虛擬機環境進行對比是一個不錯的選擇。

三、集裝箱時代

1、應用部署:微服務跨多服務器

集裝箱是一個輕量級的虛擬機,類似虛擬機,但是爲了更好的共享操作系統,它有更爲寬鬆的隔離屬性。像虛擬機一樣,他有自己的文件系統、CPU、內存等,由於它與底層框架解耦,因此可以跨雲和操作系統移植部署。而且集裝箱可以更好地支持微服務,把應用程序切分成更小的、獨立的部分動態部署和管理,而不是將這個應用部署運行在一臺大型機器上,從而讓應用程序性能更可控,讓計算機資源利用更充分。

2、硬件資源按需分配

集裝箱在硬件資源分配上與虛擬機時代一樣,但是它通過對應用程序的集裝箱化管理提升了人們對虛擬機的使用體驗。

3、應用開發:服務微化、集裝箱部署

集裝箱在當今如此流行,與它對開發效率的提升密不可分。集裝箱可以將開發的應用程序連同開發運行環境,包括依賴庫和組建等,打包成一個集裝箱發佈並在測試和生產環境上直接部署,從而徹底解決了運行環境的差異問題。這意味着將一直困擾開發人員幾十年的開發、測試和生產環境一致性問題從此埋入土中。相比龐大而沉重的虛擬機部署,集裝箱的創建和部署都更加敏捷、輕鬆。在持續開發、集成和部署上,由於集裝箱鏡像的一致性,可以快速、高頻的構建和部署並輕鬆的回滾。

總結

傳統時代:應用運行高度依賴物理機。

虛擬機時代:操作系統與物理機鬆綁成虛擬機。

集裝箱:虛擬機輕量化,進一步隔離底層框架。

技術發展:“解耦”是軟件開發永恆不變的主題,無論是大應用還是小開發,解耦都是軟件問題的良藥。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章