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