微軟技術(shù)研究員Mark Russinovich恐怕比世界上大多數(shù)人更了解Windows的內(nèi)部原理。自從2006年加盟微軟以來他擔(dān)任過好多角色。微軟在2006年收購了Winternals,這是他與別人共同創(chuàng)辦的一家系統(tǒng)恢復(fù)工具廠商。如今身為Azure首席技術(shù)官(CTO),他肩負(fù)的重任是,讓微軟的公有云運行起來如同上足了油的機器那么順暢。
多年來,Russinovich一向是微軟最受公眾歡迎的演講者之一,主要是由于他是那種為數(shù)不多的有遠(yuǎn)見的技術(shù)專家,能夠以一種連門外漢也聽得懂的方式講解和詮釋信息。眼下Russinovich在微軟剛謀得了也許最重要的職位,因為Azure儼然就是首席執(zhí)行官Satya Nadella倡導(dǎo)的“云優(yōu)先,移動優(yōu)先”戰(zhàn)略的基石。
Russinovich最近接受了我們的深入采訪,他探討了微軟處理最近Azure停運事件的方法,積極接受Docker容器以及整個開源軟件,它與谷歌一起支持容器管理方面所做的工作,以及他為何認(rèn)為跨云移植工作負(fù)載這一概念仍然難以實現(xiàn)。以下是那次訪談的文字記錄,內(nèi)容略有編輯。
現(xiàn)階段微軟是否在云方面摸到了門道,還是說你們?nèi)栽诟闱宄恍﹩栴}?
我認(rèn)為,付出多年的努力之后,我們已到了成熟階段。如果你看一下Azure,發(fā)現(xiàn)它在2006年年底還是個孵化項目,如今運作范圍卻擴大到了全球19個地區(qū),其規(guī)模達到了100多萬臺服務(wù)器。而且,我們在將幾十種服務(wù)堆放在該平臺上面。
話雖如此,Satya對于我們應(yīng)如何作為一家公司來運營抱有愿景,這種運營方法名為growth hacking(按照維基百科的定義,growth hacking是科技初創(chuàng)企業(yè)開發(fā)的一種營銷手段,運用創(chuàng)意、分析思維和社交衡量指標(biāo),來銷售產(chǎn)品、提高曝光率。)也就是說,從不滿足于現(xiàn)狀,總是考慮顛覆自己,不斷發(fā)展、不斷學(xué)習(xí)。這就是我們對待Azure的方式。
我們知道,我們做得不夠好,所以這始終是不斷逼迫和推動自己變得越來越好的問題。
在過去幾個月,出現(xiàn)了幾起小小的局部停運事件。盡管這些停運事件只是區(qū)域性的,但還是讓一些客戶和合作伙伴很頭痛。微軟在如何竭力防止未來出現(xiàn)停運事件呢?
我們趨于成熟的一個表現(xiàn)就是,深入根源分析每一起事件,了解問題的根源。然后,我們提出短期內(nèi)解決的方案,另外考慮從長遠(yuǎn)來解決問題。
就拿最近一起停運事件來說,它之所以會發(fā)生,是因為我們往其中一個工具中輸錯了一個命令,結(jié)果影響了意料不到的其他服務(wù)器。我們需要在加固工具方面做得更到位,以免有人犯那樣的錯誤。這是系統(tǒng)中的一個缺口,我們之前沒有做好認(rèn)真審查的工作。而現(xiàn)在這種類型的問題不會再出現(xiàn)。但愿,一整批這種類型的問題不會再出現(xiàn)。
這始終是我們力爭實現(xiàn)的目標(biāo),尤其是在軟件總是不斷變化的環(huán)境下。你總是在引入新的軟件,改動現(xiàn)有軟件。我們還在以驚人的速度發(fā)展,規(guī)模變得相當(dāng)龐大。系統(tǒng)一定要適應(yīng)這樣的規(guī)模。這關(guān)系到能否讓向云遷移的這趟旅程充滿樂趣。我們在構(gòu)建和完善運作系統(tǒng),以便能夠在這種規(guī)模下運行。
如果你看一下其他云服務(wù)提供商,大家都在經(jīng)歷這個學(xué)習(xí)階段,學(xué)習(xí)如何讓自己的系統(tǒng)變得越來越好。
微軟如何測試Azure 處理繁重使用量的能力?你們有沒有像Netflix的Chaos Monkey那樣的工具對Azure進行壓力測試?
我們稱之為故障注入系統(tǒng),它們可以對軟件施加壓力,那樣你能看出軟件在不同尋常的情況下會有怎樣的表現(xiàn)。有時候,如果你把軟件放到生產(chǎn)環(huán)境中,偶爾會出現(xiàn)異常情況。你要確保軟件忍受得了那種情況。
說到我們將軟件部署到生產(chǎn)環(huán)境中,早期階段之一就是進行特殊的部署,也就是完全注入故障,然后給系統(tǒng)添加負(fù)載,確保它能夠以我們期望的方式順利運行。
如今大家都在談?wù)摶旌显疲④浬孀慊旌显祁I(lǐng)域已有一段時日了。為什么混合云對客戶來說很重要?
在過去幾年間,客戶的態(tài)度發(fā)生了變化,之前是“云到底是啥東西?”,現(xiàn)在想弄清楚如何邁向云端。但這不是說你輕輕撥動開關(guān),就可以說“OK,現(xiàn)在我們到了云端”,事情沒有這么簡單。
一旦你開始用云來做任何事,都會出現(xiàn)這個問題“我如何將我在內(nèi)部部署的系統(tǒng)與云聯(lián)系起來?”而這意味著“我如何安全地聯(lián)系起來,如何配置網(wǎng)絡(luò),如何管理那個系統(tǒng)?要是我想編寫一個既在云端運行又在企業(yè)內(nèi)部運行的應(yīng)用程序,會怎么樣?”
我們讓客戶能夠按自己的步伐開始這趟旅程,為他們提供能夠做到這一點的工具。一個例子就是ExpressRoute,這種服務(wù)能夠以一種安全、高帶寬的方式連接到云端,并確保你從現(xiàn)有服務(wù)提供商獲得的服務(wù)級別協(xié)議(SLA)有保障。
我們說,如果你想要一種辦法來管理、部署、編寫在企業(yè)內(nèi)部或云端都能運行的軟件,那么你可以關(guān)注Azure平臺的這個一致的子集(公有云),獲得在兩種環(huán)境之間易于移植和易于移動的那種優(yōu)點。
微軟很早就有所行動,積極支持Docker。為何容器技術(shù)那么重要呢?
我們與Docker的合作在往縱深方向發(fā)展。我們在幾個方面進行了密切合作。我們有一種基礎(chǔ)設(shè)施即服務(wù)(IaaS)擴展模式,這是我們的云特有的模式,它讓人們可以將自己的代理注入到虛擬機中。那樣,客戶來到門戶網(wǎng)站后,可以使用命令行工具,然后說‘我想要反病毒軟件注入到該虛擬機中。’
首批代理之一是Docker。假設(shè)我想要Docker代理安裝到虛擬機中。我們在Azure市場(Azure Marketplace)中的映像一并預(yù)先安裝了Docker。你只要輕松點擊幾下鼠標(biāo),可以在Azure中將Docker系統(tǒng)建立起來。
我們還在與Docker合作,確保Docker API與Windows容器兼容;確保同一API可以用來支持兩種容器。
微軟還在開發(fā)Docker和容器方面的其他什么技術(shù)?
Docker擁有可將代碼部署到系統(tǒng)上的容器。下一步就是如何編排協(xié)調(diào)一大批虛擬機上的容器。我們與包括谷歌在內(nèi)的許多公司合作,在Azure上支持Kubernetes(一種開源容器管理技術(shù))。
容器編排方面還有大量的創(chuàng)新工作要做;另外,大規(guī)模管理容器以及使用大規(guī)模資源集群上的容器,以整體性的方式支持應(yīng)用程序生命周期,這方面也有大量創(chuàng)新工作要做。我們在與許多公司合作,確保它們的容器編排系統(tǒng)在Azure上順利工作,我們對此非常關(guān)注。
您可以更具體地介紹一下微軟與谷歌一起支持Kubernetes方面所做的工作嗎?
這有點像是草根做法。我們的現(xiàn)場工程師有朋友在谷歌,實際上,Kubernetes團隊就在西雅圖。所以,之前一直就有某種相互得益的交流。所以,這是一種友好的事情,在咖啡館碰碰面,相互探討。
與其說是這是一種戰(zhàn)略性宏偉愿景,倒不如說我們在一起工作,我們看到有機會合作,對我們雙方和整個社區(qū)都能帶來好處,既然這樣就不妨做一下。
云正在消除相互競爭的廠商之間由來已久的障礙,而微軟與谷歌在Kubernetes方面的合作可以看作是這方面的一個典例,這個觀點正確嗎?
絕對正確。我認(rèn)為,你看到舊的一套理念(有點愚笨的理念)漸行漸遠(yuǎn),一種更極其周到、極其合作的理念開始流行起來。
如果公司都彼此你爭我斗,試圖各自為政,那會傷害他們的客戶,最終會傷害自己,因為客戶不再尋求這種局面,他們在尋找選擇。
我們覺得,我們該合作的時候就要合作,該分開的時候就要分開。但是千萬不要因為彼此的公司標(biāo)識不一樣而豎起一道無形的屏障。
微軟支持開源技術(shù)繼續(xù)讓許多行業(yè)觀察人士大跌眼鏡。這給微軟帶來了哪種好處?
明顯的一點就是,客戶找上門來;如果客戶為整個架構(gòu)的某個部分選擇的技術(shù)迫使他們離你遠(yuǎn)去,或者迫使他們陷入孤島環(huán)境,對話就會變得簡短而尷尬,也就是說話不投機。
就拿Linux上的.NET或Mac中的.NET來說,如果有人非要為Linux或Mac做一個技術(shù)上的選擇,現(xiàn)在他們就能選擇放到上面的微軟技術(shù),他們想要這么做的話。
而一旦他們做出了這樣的選擇,這讓他們成為潛在客戶,可能會購買.NET生態(tài)系統(tǒng)中在其上面的一些服務(wù)。比如說Visual Studio。它確實讓人們利用可以添加到上面的一些微軟服務(wù)更有助益,因為他們是在整個架構(gòu)的某個地方利用核心的微軟技術(shù)。
如果三大云服務(wù)巨頭聯(lián)合起來,確保各自的架構(gòu)彼此能協(xié)同操作,那將意味著什么?
這正是我們有意識地探討的話題。如果我們完全聯(lián)合起來、實現(xiàn)標(biāo)準(zhǔn)化,會怎樣?這項工作做起來有多難?而阻止我們做這項工作的其中一個障礙就是,即便在低層,虛擬機和存儲仍不太成熟,不過這方面仍有創(chuàng)新工作要做。
所以我認(rèn)為眼下還沒有到那些種類的服務(wù)已完成差異化的地步,即便在整個堆棧的那個層面。還有更多的工作有待完成,未必是從中賺錢,而是有一種方法能夠在這上面支持獨特的使用場景。所以,不是說每個人的云都是用水泥搭成的,剩下來要做的事情就是,想辦法在上面放一個合理的層,可將底層的那些差異隱藏起來。
我們聽說微軟對嵌套虛擬化(nested virtualization)頗有興趣,也就是在虛擬機里面運行虛擬機管理程序。微軟怎么看待這項技術(shù)?
這是我們之前絕對關(guān)注的技術(shù),如今也在關(guān)注。如果你談?wù)撨@些平移(lift-and-shift)場景,即有人部署了面向基礎(chǔ)設(shè)施的管理系統(tǒng),遷移到云意味著將其中一部分留下來,然后揀選出其中較高層面的部分,將它移到云端。
如果你有嵌套虛擬化技術(shù),一個優(yōu)點就是,你基本上可以將整個管理系統(tǒng)(從下到上)平移到云平臺。你沒必要做一些工作將應(yīng)用程序的管理和基礎(chǔ)設(shè)施的管理分開來,這兩種管理在一些情況下可能緊密聯(lián)系。
我們確實認(rèn)為這是嵌套虛擬化技術(shù)的一個潛在優(yōu)點。當(dāng)然,還有技術(shù)成本、復(fù)雜性以及支持它的開銷需要考慮。所以,我們?nèi)栽诳疾爝@項技術(shù)。
微軟在Azure中如何使用軟件定義網(wǎng)絡(luò)(SDN)?
早在SDN成為熱門的新技術(shù)之前,微軟就在Azure上使用它了。就因為你的產(chǎn)品組合中有這項新技術(shù),你能以10億美元的價格賣掉貴公司。夸張一點來說,公有云的立足之本是虛擬網(wǎng)絡(luò)或者說軟件定義網(wǎng)絡(luò)。
我們在Azure中有第3層虛擬化網(wǎng)絡(luò),這個我們一開始就有了。我們后來逐漸完善了這項功能,加入了VPN解決方案,以支持點到站點到云、站點到站點到云以及ExpressRoute,后者是客戶站點與Azure之間的一條專有連接。
另外,我們在Azure上最早做的工作之一就是虛擬負(fù)載均衡,現(xiàn)在它可以擴展到成千上萬臺服務(wù)器這種環(huán)境。我們還使用虛擬網(wǎng)絡(luò)用于分布式拒絕服務(wù)保護。我們還在關(guān)注面向容器的虛擬網(wǎng)絡(luò)支持,因為這增添了另一種規(guī)模,甚至增添了另一個動態(tài)層,這是哪怕在虛擬機規(guī)模下也看不到的。