到今天,云計算的工業實現已經不太難了。現在有開源軟件KVM和Xen,這兩個東西基本把虛擬化搞定;而OpenStack則把管理、控制系統搞定,也很成熟。PaaS也有相應的開源,比如OpenShift,而Java里也有N多的中間件框架和技術。另外分布式文件系統GFS/TFS,分布式計算系統Hadoop/Hbase等等,分布式的東西都不神秘了。技術的實現在以前可能是問題,現在不是了。
一方面,云計算要用廉價設備取代那些昂貴的解決方案。互聯網就是要用便宜的東西搭建出高質量的東西,域名購買 directadmin購買,硬件和資源一定不會走高端路線——比如EMC、IBM小型機、SGI超級計算機等等,你如果用它去搭建云計算,成本太貴。用廉價的解決方案代替昂貴的解決方案是整個計算機發展史中到今天唯一不變的事情。所以如果你要讓夏利車跑出奔馳車的感覺,你需要自己動手做很多事,搭建一個智能的系統。用廉價的東西做出高質量的東西,運維好廉價的設備其實是云計算工程里最大的挑戰。
為了數據的高可用性,你只能使用數據冗余,寫多份到不同的節點——工業界標準寫三份是安全。然而,你做了冗余,又有數據一致性問題。為了解決冗余帶來的一致性問題,才有了paxos的投票玩法,大家投票這個能不能改,于是你就需要一個強大的控制系統來控制這些東西。
另一方面,因為機器多了,加上用的又不是昂貴的硬件,所以故障就變成了常態,硬盤、主板、網絡天天壞。所以,沒什么好想的,運維就必須要跟上。云計算的目標是在故障成為常態的情況下保證高可用——也就是我們所說服務的可用性,是3個9、4個9還是5個9。
另外,公有云人來人往,里面的資源和服務今天用明天不用,有分配有釋放,有凍結,你還要搞一個資源管理系統來管理這些資源的生命狀態。還有權限管理,就像AWS的IAM一樣,如果沒有像AWS的IAM權限管理系統,AWS可能會不會像今天這樣有很多大的公司來用。企業級的云平臺,你需要有企業級的運維和管理能力。
為啥云計算有這么多開源的東西,卻不是人人都能做?
為什么說運維比較復雜,原因有這么幾個。
云計算有兩個東西個人覺得是被人低估的,一個是運維,一個是服務。做服務的需要有生態環境,有人幫你做。所以做云計算要落地并不簡單。還是那句話,云就是服務,只要提供了好的服務,無論公有還是私有都是會有價值的。