2008年,剛開始接觸網際網路,那時候用的手機還是Windows Mobile,對于iPhone來說根本買不起,當然這一年也是移動網際網路的熱點之年。第一款真正的安卓手機也随之釋出,諾基亞也毫不示弱,Symbian開源了。那時候雲計算在國内也不是很流行,我們都在用虛拟主機。這一年MySQL也被收購了,Windows Server 2008也橫空出世了,十年前的今天,真的是相當精彩!
那麼回顧之前,我們的IDC是一個什麼情況呢?那時候是成千上萬的實體伺服器,每個伺服器上需要安裝作業系統,比如Linux或Windows Server,然後在其之上部署應用。直到有了虛拟化的出現,可以将一系列操作過程鏡像化的批量去做,同時虛拟化可以很好的利用硬體,避免其中的性能浪費。目前整個雲計算的時代已經普及,雲和虛拟化最大的差別就是雲計算賦予了API的能力。
虛拟化是一種技術,允許我們從單個實體硬體系統建立多個虛拟系統,我們管它叫VM。 這些VM依賴于VM管理程式将計算機資源與硬體分離。08年正是虛拟化盛行的一年,KVM、Hyper-V、Xen等虛拟化技術越來越流行。當時最早還是在Parallels(一家虛拟化軟體公司)實習,做技術支援,我們給客戶解決在使用Parallels虛拟化産品中遇到的各種問題。
随着虛拟化的流行,後面又刮來了一陣大風,這就是雲計算的出現,雲給我最大的感觸就是,它有了API,可以讓我們做更多虛拟化做不到的事情。剛開始最早接觸雲計算還是在公司中做OpenStack的PoC(概念驗證),直到支撐着整個生産環境的運作。那時候接觸的最早的版本是Havana,當時走了很多彎路,每一次部署都會失敗,都會有問題。那時候的OpenStack Bug非常多,沒有現在的穩定。那麼當時我們是怎麼一步一步達到生産級别的?這裡面付出了太多的心血。我們為了推向生産的時候保持和測試環境一樣的部署架構,包括每個package版本以及配置檔案,幾乎調研了當時所有可以自動化部署OpenStack的開源軟體,比如:Juju solutions for OpenStack、Autopilot、puppetlabs-openstack、openstack-ansible、Kolla、RDO(Packstack)、TripleO等等。但是這裡面會有一個通病,就是通過這些軟體部署出來的環境并不是我們想要的。而且當時PuppetLabs的Module還不支援高可用部署,我們咨詢了官方,官方給出的答複是在後面版本會支援這個能力。最後,我們決定重複造輪子,一個真正支援高可用部署的OpenStack Provisioning工具。後來,在GitHub上建立了個項目,開始搞起來,這個項目叫Playback,這個項目的作用正如同它的名字(回放)。Playback可以真正按照使用者需求,自定義部署架構,且支援高可用的一個OpenStack的Provisioning工具(提供指令行和API)。最後我們通過Playback将整個OpenStack部署到了生産環境,這是一個很大快人心的事情呀!但後面也會存在很多失落感,這就是搞開源的寂寞,幾乎沒有人用我們的産品,除了我們自己使用。沒有任何人發issue,沒有任何人fork,沒有任何人鳥你。後來我們打算把這個項目進入到OpenStack的Big tent裡,Big tent是OpenStack所有子項目的一個大集合。這個很難進,原因是什麼?我們的速度跟不上,因為官方已經有了Playback具備的所有能力。
雖然這個開源項目可以說是搞黃了,但這些經曆,這些經驗是非常寶貴的。首先,我們一定要明确是否需要重複造輪子?怎麼造?造出來怎麼營運?這都是技術之外的事情。其次,速度不一定是勝利的必要條件,但速度是最基本的條件。技術發展很快,技術颠覆也很快,我們應該如何把握這之間的時速?最後,無論結果如何,一定要堅持,當你決定要下手幹的時候。
但是今天,越來越多的中小企業幾乎不在IDC中建構自己的私有雲了,更多的企業轉而投入了公有雲的懷抱中,這是為什麼?看我們之前搞OpenStack來說,我們付出了很多人力成本,而中小企業不願意去投入這個人力成本。這是原因之一。還有就是之前大家都覺得公有雲不安全,所有資料都放在公有雲上,這樣安全嗎?但是大家目前都在用公有雲環境,進而也慢慢消除了這種概念。我一些朋友所在的公司,幾乎也都在用阿裡雲,這是一種趨勢。