云環(huán)境下的軟件開發(fā)需進行重新思考
編者注:此文是 Eucalyptus Systems CEO Marten Mickos 的文章。
軟件自出現(xiàn)以來模式就未曾改變:運行應(yīng)用,然后應(yīng)用則是在平臺上面跑的。但是由于基礎(chǔ)設(shè)施的飛躍發(fā)展,應(yīng)用設(shè)計和部署的基礎(chǔ)原則的確會不時改變—有時候這種變化還很激烈。
比方說,1980 年代出現(xiàn) PC、x86 架構(gòu)的出現(xiàn)以及客戶機 / 服務(wù)器模式的誕生令應(yīng)用應(yīng)用設(shè)計原則發(fā)生了巨大的改變。然后,隨著 web 和開源技術(shù)在 1990 年代中期的出現(xiàn)又再次劇變。每每發(fā)生這種巨變,開發(fā)者都被迫要對軟件的開發(fā)和部署方式進行反思。
現(xiàn)在的基礎(chǔ)設(shè)施能力又有了新的飛躍,其主導(dǎo)是 Amazon Web Services(尤其在網(wǎng)絡(luò)速度有了飛躍提升的前提下)。顯然,為了能夠充分利用新的云設(shè)施,那些在 AWS 上取得成功的應(yīng)用必須與運行在企業(yè)服務(wù)器上的應(yīng)用有著本質(zhì)的不同—哪怕是與運行在虛擬服務(wù)器上的應(yīng)用也不一樣。除此以外,還有其他一些因素決定了云應(yīng)用在設(shè)計上必須與過去有所不同。以下列舉的就是其中一些關(guān)鍵因素,這些因素也決定了新舊世界演變的方式:
伸縮性
舊世界的伸縮是通過擴容實現(xiàn)的—要想容納更多的用戶或數(shù)據(jù),只需購買更大對的服務(wù)器。
而在新世界里,伸縮性通常是通過橫向擴展實現(xiàn)的。要增加的不是更大的機器,而是同類的多臺機器。在云世界中,那些機器是虛擬機。
彈性
以前,軟件是不可靠的,彈性是在硬件層實現(xiàn)的。
今天,底層的基礎(chǔ)設(shè)施硬件被視為是薄弱環(huán)節(jié),所以應(yīng)用必須自我調(diào)整來適應(yīng)。應(yīng)用并不會保證每一個虛擬機實例都工作正常。單臺虛擬機一段時間失效也沒關(guān)系,應(yīng)用必須對此做好準(zhǔn)備。
就拿 Netflix 來說吧,這可以說是***進的云用戶了,它在云應(yīng)用的道路上邁出的步伐是最遠的。他們有一個過程叫做 ChaosMonkey,會隨機地殺死應(yīng)用負(fù)載下的虛擬機實例。這么做的目的是什么呢?就是為了確保應(yīng)用的正常運轉(zhuǎn)和彈性:通過讓應(yīng)用面對隨機的實例損失來迫使應(yīng)用開發(fā)者開發(fā)出更加彈性的應(yīng)用。
爆發(fā)性
在舊世界里,像財務(wù)和工資單這樣的應(yīng)用其負(fù)載一般都是很穩(wěn)定和可預(yù)測的。特定時刻的系統(tǒng)用戶數(shù)、待處理記錄數(shù)基本上都是已知的。
在新世界里,工作負(fù)載是多變的、不可預(yù)知的。今天的軟件系統(tǒng)的觸角必須伸得更遠,要到達有服務(wù)需求的消費者和設(shè)備那里,時間不可預(yù)測,負(fù)載無法衡量(想想看那個成為眾矢之的的 12306 網(wǎng)站吧)。要想適應(yīng)獨立應(yīng)用負(fù)載這些不可預(yù)見的波動需要新的架構(gòu)。雖然我們現(xiàn)在已經(jīng)在云上面了,但是顯然還處在初級階段。
軟件多樣性
在過去,軟件并沒有太多的多樣性。每一款應(yīng)用都是用一種語言編寫的,使用的是一種數(shù)據(jù)庫。公司一般都是依托與一個或少數(shù)幾個操作系統(tǒng)。軟件棧簡單到令人乏味的地步(至少從現(xiàn)在看是這樣的)。
而在云的新世界里,情況截然不同。一個應(yīng)用里面可能就會用到許多不同的語言,不同的庫,不同的工具包以及不同的數(shù)據(jù)庫產(chǎn)品。同時由于在云端時你能夠創(chuàng)建和啟動自己的鏡像,根據(jù)特定需求進行定制,一家公司的應(yīng)用必須能夠運行在各種不同的配置上。
從虛機到云
哪怕是相對較新的 hypervisor 和現(xiàn)代的云思維方式之間也是有區(qū)別的。虛擬化的的先鋒和*** VMware 所開發(fā)的 hypervisor 表現(xiàn)基本上與物理機器并無二致。
而在云端,虛擬的并不是物理服務(wù)器的代表,而是計算單元的代表。
用戶的耐性
在舊世界,用戶受到的教育是要有耐心。因為系統(tǒng)的響應(yīng)可能需要很長一段時間才能完成一些簡單的提取或更新請求,新功能的添加也很緩慢。
在新世界里,用戶是沒有耐心的。他們幾乎無法容忍時延,不愿意等待。他們希望軟件經(jīng)常更新,如果說不是每天的話,起碼也是每周。你可以在自服務(wù) IT 找到相關(guān)證據(jù)。在那里,你不是遞張條子給 IT 部門然后等待幾天后回應(yīng)了事,用戶所需的資源可以實現(xiàn)自提供。