左耳朵耗子:談雲計算,拼的就是運維

參考連接:https://www.infoq.cn/article/chenhao-on-cloudshell

陳皓(@左耳朵耗子),CoolShell.cn博主。15 年軟件開發相關工做經驗,8 年以上項目和團隊管理經驗。擅長底層技術架構,團隊建設,軟件工程,軟件研發諮詢,以及全球軟件團隊協做管理。對高性能,高可用性,分佈式,高併發,以及大規模數據處理系統有一些經驗和心得。喜歡關注底層技術平臺和互聯網行業應用。技術擅長 C/C++/Java 和 Unix/Linux/Windows。曾於 Amazon 中國任研發經理,負責電子商務全球化業務(全球開店)和全球庫存預測系統的研發。曾在阿里巴巴北京研發中心、商家業務部曾任資深專家一職,負責電商雲平臺、開放平臺,雲監控和電商多媒體平臺。如今阿里巴巴核心系統專家組從事阿里核心系統和阿里雲 ECS 相關的虛擬化平臺的開發工做。數據庫

對雲計算的定義

雲計算其實跟 PC 機有同樣的概念,有 CPU、硬盤、操做系統、應用軟件。雲計算的計算節點(虛擬機)就是 PC 中的 CPU,數據緩存服務就是 PC 的內存,存儲節點就是 PC 的硬盤,提供數據服務,讓數據不丟、高可用,PC 中的控制器就是雲計算的控制系統。PC 機的硬件上面要有操做系統。操做系統很大一塊是給開發人員提供系統的 API 接口,提供系統監控以看運行狀況,而且還要有系統管理——如用戶帳號的權限管理、備份恢復等等。操做系統上面要有應用軟件,這樣才能服務於最終用戶,應用軟件就是真正落地的業務,這樣纔會有用戶;有了用戶,整個體系就運轉起來了。編程

這就是工程師說的 stack,也就是咱們聽到的 IaaS、PaaS、SaaS 三個層。IaaS 層就像 PC 機的基礎硬件加驅動程序,PaaS 層就像 PC 機上的操做系統——把基礎硬件抽象、包起來並屏蔽硬件和硬件驅動細節、調度基礎硬件,而 SaaS 層就是 PC 機裏的應用軟件。另外,咱們還得給開發人員提供各類開發框架、類庫和開發環境,這就是爲何 AWS 還作通知、消息、工做流,這是用於粘合操做系統和業務層的,好比可讓你方便地作水平擴展和分佈式。雲計算天然也會像 PC 機同樣,三個層上都會有用於控制和管理的系統。這就是爲何雲計算會作成這個樣子,其實計算機的發展就在這個圈子裏繞。緩存

其實,最終用戶基本並不關心你 CPU 用的啥,存儲用的是啥,你用什麼框架開發,他們關心更多的是能夠解決什麼問題,有什麼樣的用戶體驗。像之前 Windows 用戶體驗之因此比 Linux 好,就是由於應用層用的舒服;而 Linux 對開發者的用戶體驗比 Windows 好,就是由於其開放和可讓開發人員更靈活、更自由。咱們能夠看到 SaaS 層上有的像 SalesForce、Dropbox、Evernote、Netflix 這樣的給最終用戶的服務,他們更傾向於最終用戶和業務。安全

說到底,雲計算的 IaaS、PaaS、SaaS 最後那個 S 都是 Service。就是說,不管你雲計算長成什麼樣,都得要向用戶提供「服務」而不只僅是軟硬件和各類資源。微信

雲計算的技術難點

到今天,雲計算的工業實現已經不太難了。如今有開源軟件 KVM 和 Xen,這兩個東西基本把虛擬化搞定;而 OpenStack 則把管理、控制系統搞定,也很成熟。PaaS 也有相應的開源,好比 OpenShift,而 Java 裏也有 N 多的中間件框架和技術。另外分佈式文件系統 GFS/TFS,分佈式計算系統 Hadoop/Hbase 等等,分佈式的東西都不神祕了。技術的實如今之前多是問題,如今不是了。網絡

對於雲計算工程方面,如今最難的是運維。管 100 臺、1 萬臺仍是 100 萬臺機器,那是徹底不一樣的。機器少你能夠用人管理,機器可能是不可能靠人的。運維繫統不屬於功能性的東西,用戶看不見,因此這是被你們嚴重低估的東西。只要你作大了,就必然要在運維繫統上作文章。數據中心 / 雲計算拼的就是運維能力。架構

爲何我說運維比較複雜,緣由有這麼幾個。併發

一方面,雲計算要用廉價設備取代那些昂貴的解決方案。所謂互聯網的文化就是屌絲文化,屌絲就是便宜,互聯網就是要用便宜的東西搭建出高質量的東西,硬件和資源必定不會走高端路線——好比 EMC、IBM 小型機、SGI 超級計算機等等,你若是用它去搭建雲計算,成本太貴。用廉價的解決方案代替昂貴的解決方案是整個計算機發展史中到今天惟一不變的事情。因此若是你要讓夏利車跑出奔馳車的感受,你須要本身動手作不少事,搭建一個智能的系統。用廉價的東西作出高質量的東西,運維好廉價的設備實際上是雲計算工程裏最大的挑戰。app

另外一方面,由於你機器多了,而後你用的又不是昂貴的硬件,因此故障就變成了常態,硬盤、主板、網絡每天壞。因此,沒什麼好想的,運維就必需要跟上。雲計算的目標是在故障成爲常態的狀況下保證高可用——也就是咱們所說的,你服務的可用性是 3 個 九、4 個 9 仍是 5 個 9。

最後,這一大堆機器和設備都放在一塊兒,你的安全就是一個挑戰,一方面是 Security,另外一方面是 Safety,保證數十臺數百臺的設備的安全還好說,可是對於數萬數十萬臺的設計,就沒有那麼簡單了。

因此,面對這樣的難題,人是沒法搞得定的,你只能依靠技術來管理和運維整個平臺。好比必須有監控系統。這跟操做系統同樣,對資源的管理,對網絡流量、CPU 利用率、進程、內存等等的狀態確定要所有收集的。收集整個集羣各類節點的狀態,是必然每一個雲計算都有的,都是大同小異的。

而後,你還要找到可用性更好的節點,這須要有一些故障自檢的功能。好比阿里雲就遇到過磁盤用到必定時候就會莫名其妙的不穩定,有些磁盤的 I/O 會變慢。變慢的緣由有但是硬盤不行了,因而硬盤控制器可能由於 CRC 校驗出錯須要要多讀幾回,這就比如 TCP 的包傳過來,數據出錯了,須要從新傳。在這種硬盤處理半死不活的狀態時,你確定是須要一個自動檢測或自動發現的程序去監控這種事情,當這個磁盤可能不行了,標記成壞磁盤,別用它,到別的磁盤上讀複本去。咱們要有故障自動檢測、預測的措施,才能驅動故障,而不是被動響應故障,用戶體驗纔會好。換句話說,咱們須要自動化的、主動的運維。

爲了數據的高可用性,你只能使用數據冗餘,寫多份到不一樣的節點——工業界標準寫三份是安全。然而,你作了冗餘,又有數據一致性問題。爲了解決冗餘帶來的一致性問題,纔有了 paxos 的投票玩法,你們投票這個能不能改,因而你就須要一個強大的控制系統來控制這些東西。

另外,公有云人來人往,裏面的資源和服務今天用明天不用,有分配有釋放,有凍結,你還要搞一個資源管理系統來管理這些資源的生命狀態。還有權限管理,就像 AWS 的 IAM 同樣,若是沒有像 AWS 的 IAM 權限管理系統,AWS 可能會不會像今天這樣有不少大的公司來用。企業級的雲平臺,你須要有企業級的運維和管理能力。

雲計算的門檻

爲啥雲計算有這麼多開源的東西,卻不是人人都能作?我以爲有如下緣由:

一方面,這就跟蓋樓同樣。蓋樓的技術沒什麼難的(固然,蓋高樓是很難的),可是你沒地你怎麼蓋?我以爲雲計算也同樣,帶寬的價格貴得就像土地的價格。其實雲計算跟房地產同樣,要佔地、佔機房、佔帶寬。若是能把中國全部的機房、機櫃、帶寬資源都買了,你就不用作雲計算了,賣土地就夠了——由於這些是有限的。最簡單的例子,IP 地址是有限的。你有帶寬、有機房,可是若是你沒有 IP,這就很差玩了。尤爲是你要提供 CDN 服務,這個就更明顯,由於有多少物理節點直接決定你的 CDN 服務質量。

另外一方面,正如前面所說的,運維是件很難的事,運維這個事並非通常人能搞的事。沒有足夠的場景、經驗和時間,這種能力很難出現。

從用戶的角度來講呢,雲計算是一種服務,你須要對用戶企業內的解決方案要有很好的瞭解,這樣才能提升很好的服務。能提供「好服務」的一般都是把本身真正當成用戶公司。

這跟作汽車同樣,底層作引擎、輪子、油箱、控制系統,給你弄一堆零件,上層能夠拼裝。PaaS 至關於給你一個很快能夠打形成的汽車的工做臺。而 SaaS 就是成品——兩廂、三廂、卡車、轎車,最終用戶要的是這個。後面什麼 Xen、存儲、分佈式,跟我一毛錢關係沒有,我就要知道汽車是安全的,性能好的,省油的,不會拋錨、耐用的,千萬別速度快了或者坡度大了或是別的怎麼樣就失靈了。

賣汽車也是賣服務。造出汽車來,並不表明你搞定這個事了。若是沒有公路、沒有加油站、沒有 4s 店、沒有交通管理、規則等等,你要麼用不了,要麼就是亂七八糟。不能只讓用戶在那看着你的汽車好牛啊,可是用戶不知道怎麼用。因此說,雲計算最終旁邊必需要有一套服務設施,而這套服務設施也是今天被人低估的。

雲計算有兩個東西我以爲是被人低估的,一個是運維,一個是那堆服務。作服務的須要有生態環境,有人幫你作。因此作雲計算要落地並不簡單。

這跟 IBM 同樣。IBM 有段時間也是快不行了,他們的 CEO 寫了一本《誰說大象不能跳舞》,講 IBM 的轉型,從賣硬件的轉成賣服務、解決方案,有流程、諮詢,順便賣硬件,帶着一堆系統集成商一塊兒玩。我給你解決方案,誰來實現呢,就是集成商幫你,而後順便把硬件賣給你。同樣。將來是什麼樣,歷史上已經有了。你看,要幹那麼多事,並且還不是用人堆就能夠堆出來的。這就是雲計算的門檻。

總之,雲計算是須要吃本身的狗食才能吃出來的,毫不是像手機上的 Apps 同樣,你想想、試一試就能搞出來的,你首先須要讓本身有這樣的場景,有這樣的經歷,你纔可能會有這樣的經驗和能力。

雲計算的市場細分

市場細分必然是市場來驅動的。市場變化太快,說不清楚,不過大的方向應該會是這樣的:有類是須要玩計算密集型的(好比大數據計算、網絡遊戲),有類是須要玩 IO 密集型的(好比視頻網站),有類就是爲了建網站的(好比電子商務、門戶網站、無線),有類是爲了數據安全和保密的(好比金融數據)。

從更高的層面來看,社會也須要分工。有的人賣土地,有的人賣房子,有的人裝修,有的人是中介。我相信沒人願意把全部的賭注都押在一個地方。雲計算也是同樣。上面也說過,不管 IaaS、PaaS、SaaS,後面的 S 都是 service,本質上都是提供服務。因此,我認爲,市場的細分本質上就是服務的細分。

看看歷史咱們知道,細分永遠是跟着行業走的,也是跟着業務走的,因此,在業務層會出現更多的細分。

對阿里雲產業細分的見解

政府雲、金融雲不太清楚,不過我很清楚電商雲——就是我以前負責的聚石塔。聚石塔時間不長,2012 年 9 月正式上線,去年是大發展的一年,做爲垂直雲解決的很好。天貓和淘寶作的都是下單前的東西,下單後,商家天天處理好幾百單,須要作訂單合併、篩選,有的商家規模不大但訂單不少。海爾有 ERP,這些商家沒有,可是天天也 1000 多單,若是沒有信息化的系統,人肉是處理不了的,必然要有 ERP 系統處理訂單。另外還要管理用戶,給用戶作營銷、發展忠實用戶。總之,都是賣東西之後的事情。咋辦?

淘寶天貓給了一堆開放 API,你能夠調個人 API 接入,在你那邊有 ISV 幫你作一套東西遠程訪問淘寶 API,把訂單拉過去,倉庫進貨了以後,經過 API 把庫存改一下,就能夠連起來了。天貓用戶下單,到他的系統、他的倉庫,他就發貨了,倉庫補完貨,在他的系統裏一改,自動就到天貓店了。這是電子信息化。

可是一到雙十一就受不了:訂單量太大。正好雲平臺出現了,再怎麼樣,阿里的運維能力也要比你商家的要強吧。你看,聚石塔賣的是服務,不是主機。另外是數據安全:商家的系統每天被黑客盯着,若是咱們把用戶信息都給商家,不是全部的商家的系統安全都作得很好,內部的人插個什麼 U 盤,上面一堆木馬,數據就被偷走了。偷走了以後,別人還說是阿里搞丟的,這固然不行。因此,咱們又要開放,還要保證安全,聚石塔這個雲平臺就這樣出來的:你來我這兒,我纔開放給你,由於安全很重要。

保證性能和安全也是商家的利益訴求也在裏面,商家也不但願用戶數據被偷,他也但願雙十一能抗住。

另外,不少商家本身不會作,因此要 ISV(第三方軟件開發商)來作,因此這個是賣解決方案,跟 IBM 很類似。銀行要一套系統,IBM 提供硬件和解決方案,系統集成商來幫銀行寫代碼和集成系統。聚石塔也很像,聚石塔提供 API、ECS、數據庫,第三方的 ISV 進來幫商家集成一個系統。這是很經典的也是很傳統的 IBM 的玩法,只不過是玩在了雲端。

你看,這也是作本身的長項作出來的細分市場。因此說,吃本身的狗食很重要。

對 PaaS 的見解

不管是 Google 的 GAE 仍是新浪的 SAE 都是給個容器,給個容器的好處是不用管數據鏈接、CPU 什麼,程序一傳就能用,什麼水平擴展都不用管。不爽的是,一個是在編程上限制太多:AppEngine 總會閹割不少系統相關的功能,好比 Java、PHP、Python 的不少系統調用都閹割了,由於若是給你這些系統調用,你就能夠突破沙箱;另外一個是有故障的時候:技術人遇到問題都巴不得本身上去解決,想看看後面在忙啥,可是看不到,很無助,只能等你解決,就看你的人解決的好很差、快不快。因此若是 IaaS 沒作好,運維、故障自動處理、遷移沒作好,出了問題用戶只能乾瞪眼,PaaS 必然很差用。固然 IaaS 層也有這個問題,可是至少你還能夠登到機器上看一看,大不了重啓一下。像 AWS,你重啓一下就跑到別的物理機,問題也許就解決了。

其實,對於 PaaS 中間這層的確很尷尬。怎麼解決?我以爲仍是要依賴某種業務場景。單純一個平臺要閹割不少功能,搞得用戶不舒服,還不如干脆一步到位,根據業務場景給一個編程框架。好比 SAE 能夠就作微博 app,上來就調 API,數據庫都 ready;或者微信若是作個 PaaS,上面只玩微信公衆平臺上的東西,也能夠。我以爲 PaaS 層更貼合業務會更成功。給新浪微博作個插件,你去買個 VM、買數據庫?這種時候很須要 PaaS。我以爲 PaaS 層要成功就要貼近業務場景。好比:騰訊的風鈴系統(雖然不知道企業賬號看見是什麼樣的),就作無線建站,這樣多好。乾巴巴的 PaaS 有點高不成低不就。

對 SDN 的見解

SDN 其意圖是想改變目前超級複雜的網絡結構。意圖是挺好的。想想,若是之後我家的網絡不用由於買個新的路由器都要從新設計一把,只要一次設置,而後對全部的路由器都經過,的確是挺方便的,這點對企業很是好。不過,不知道在操做上怎麼作,也許會從企業內部開始這場革命,這個不得而知。

就像開車同樣,機械式的方向盤和剎車油門系統這麼多年都沒什麼變化,也提過不少更好更高科技的解決方案,可是傳統仍是這樣延續下來了。因此,SDN 真不知道將來會怎麼樣。總之,一個老的事物到一個新的事物須要有一個過程,這個過程當中會出現不少過渡產品或是過渡方案,若是沒有這些過渡產品和方案,也就無法達到新的事物。將來是什麼樣,沒法預知。

對私有云的見解

私有云跟公有云,都會存在。這跟人同樣,私人生活和公衆生活都會須要的。大公司有 1 萬、2 萬人,這麼多數據,要存,須要一個很穩定的解決方案。要穩定能夠買 IBM,可是貴。雲計算出來講,我能夠寫三份,但他不想上公有云,個人數據放在別人那裏,總感受很差的,因此有了私有云作物理隔離,他以爲安全。

安全這個詞對應兩個英文,security 和 safety,其實 security 和 safety 不同:雲計算解決 safety,保證數據不丟;寧肯數據丟也不讓人看到,那是 security。好比私人照片我更願意存家裏,有一個小的雲存儲,全部設備同步,跟老家父母同步,這樣比較好。放公網很恐怖。

必定會有公司不肯意上雲的,好比金融方面的企業,他們以爲互聯網不安全,他們要的更多的是安全。在公網上你的系統的安全攻防能力都要跟上,但若是物理不通的話就不用考慮的太複雜。企業內部私有云確定有市場。你看,好些企業內部目前還被 EMC、IBM 所壟斷着呢。計算機發展史就是廉價的東西取代昂貴的東西,因此私有云必定沒問題,而下降私有云的運維複雜度、提供一個或多個方便的運維繫統和工具就是重中之重中。其中,SDN 之類的東西確定會是其中一個很重要的一塊。

另外,仍是那句話,雲就是服務,只要提供了好的服務,不管公有仍是私有都是會有價值的。

相關文章
相關標籤/搜索