云計算:程序員重回個人英雄時代
曾幾何時,那些耳熟能詳的程序英雄的名字漸漸地離我們遠去。隨著Windows和Internet時代的來臨,個人的力量變得越來越渺小。正當我們開始堅信單打獨斗的時代一去不復返的時候,云計算橫空出世了。它強大的計算能力、存儲能力和簡單高效的編程接口,使得一位程序員能夠輕松地操控成千上萬臺計算機,而不必考慮太多的細節。云計算時代,仿佛又讓我們感覺到個人英雄時代伸手可及。
程序英雄時代的衰落
WPS作者求伯君、KV殺毒軟件作者王江民、五筆字型作者王永民、中文之星作者王志東、UDDOS作者鮑岳橋和簡晶、CCDOS作者吳曉軍、自然碼作者周志農、CCED作者朱崇君……每一個名字都代表一個奇跡!
三歲因小兒麻痹癥而落下終身殘疾,三十八歲才接觸電腦的王江民,在1996年帶著他無師自通編寫的KV6殺毒軟件來到中關村,一周就賺了150萬。一年后,KV殺毒軟件占據了通用軟件40%以上的市場份額。一夜之間,王江民成為中關村最受人景仰的軟件英雄——程序英雄們的故事,曾經是多么輝煌!
然而,隨著Internet大浪潮席卷而來,程序英雄們開始隱身幕后。雖然一部分程序英雄成功轉型,鮑岳橋和簡晶創辦了聯眾,王志東創辦了新浪,雷軍創辦了卓越……但誰都清楚,他們是創辦者,是管理者,不再是署在他們網站“封面”上的作者了。從那時起,除了一些小軟件外(其中不乏成功案例,如NetAnts等),已經很少有人能夠與某個知名軟件劃等號了。
日漸沉重的Winux時代
隨著IT從DOS時代向Windows時代過渡,軟件系統開始變得越來越復雜,程序開發變成了軟件工程。軟件除了開發過程外,還有運作過程、維護過程。首先,需要進行問題分析,形成軟件需求規約,再進行需求分析,生成功能規約。然后,要進行概要設計和詳細設計。接著,實現活動把設計結果轉換為可執行的程序代碼。軟件研制的分工越來越細,有的人做數據庫訪問層,有的人做業務邏輯層,有的人做用戶界面層;軟件開發的整個過程,都有不斷確認的活動,保證最終產品滿足用戶的要求;軟件部署后,還有維護活動,包括使用過程中的擴充、修改與完善。伴隨以上過程,還有管理過程、支持過程、培訓過程等。
不僅軟件開發和運維過程越來越復雜,軟件的規模也越來越大。我們從Windows代碼行數就可以看出端倪:Windows 95是1500萬行,Windows 98是1800萬行,Windows 2000是2000萬行,Windows XP是3500萬行,而Windows Vista則高達5000萬行。雖然比爾·蓋茨經常在公眾面前懷念只有幾十KB的BASIC語言,Windows還是不可避免地變得越來越臃腫。
由于坊間流傳安迪-比爾定理,即比爾要拿走Intel CEO安迪所給的(What Andy gives, Bill takes away)。公眾于是懷疑是不是微軟有意為之呢?我以為不是。來看看以簡潔為美的Linux就知道了。Linux各個版本源碼的代碼行數如圖1所示。可以看出,Linux也是越來越龐大。在這一點上,Windows和Linux倒是有幾分相象呢,不妨將之稱作Winux,就像當年的Wintel一樣。
圖1 Linux各個版本源碼行數
由于代碼量巨大,軟件越來越不可能單靠個人的力量就能完成。例如,Windows 2000開發團隊有900位開發人員,還配有1800位測試人員。同時,又由于軟件系統極其龐大,出現各種Bug的可能性大增,給維護工作帶來巨大的挑戰。例如,Windows XP迄今已經打了上千個補丁。每一個補丁都需要耗費大量人力。所以說,在Winux時代,軟件業的個人英雄是很難出現的。
云計算時代程序英雄重現
2006年8月,剛從大學畢業的史蒂維·克里弗頓,發現人們有把照片變成Flash短片的需求,于是架了幾臺服務器,創辦了一家名為Animoto的小公司。當時,Animoto網站每天只有5000位訪客。然而,2008年4月,Facebook向其社區熱情推薦了Animoto,使得在短短的3天里,就有75萬人到Animoto網站注冊。Animoto網站頓時不堪重負,變得慢如蝸牛,惡評鋪天蓋地而來。要扭轉乾坤,必需增容100倍以上。這對既沒有資本又沒有增容技術能力的年輕人來說簡直是災難。在這個緊要關頭,史蒂維的大學同學建議使用亞馬遜提供的計算資源租用服務。從此之后,Animoto不再需要購買任何新的設備,有多少流量,就租用多少亞馬遜的計算能力。用多少,付多少錢,既節省了成本,又獲得了可以無限擴展的計算能力。如今這群年輕人已經賺了大錢。
亞馬遜提供的這種計算資源租用服務就稱為云計算。亞馬遜研發了彈性計算云EC2和簡單存儲服務S3為企業提供計算和存儲服務。在誕生不到兩年的時間內,就有44萬程序員在亞馬遜上注冊,開發各種各樣的應用。
除了亞馬遜外,Google、IBM、微軟和Yahoo等大公司都建有云計算平臺。云計算領域的眾多成功公司還包括VMware、Salesforce、Facebook、YouTube等。Google搜索引擎就建立于分布在200多個站點、超過100萬臺的服務器的云計算平臺之上。Google的一系列成功應用,包括Google地球、地圖、Gmail、Docs、Wave等也同樣使用了這些基礎設施。Google還提供了Google App Engine編程環境,供程序員們開發各種應用。微軟于2008年10月推出了Windows Azure操作系統。Azure是繼Windows取代DOS之后,微軟的又一次顛覆性轉型。Azure的底層是微軟全球基礎服務系統,由遍布全球的第四代數據中心構成。目前,微軟已經配置了200多個集裝箱式數據中心,服務器數量超過50萬臺。微軟最新推出的Visual Studio 2010支持非常方便地開發云計算應用。
以前我們畫網絡圖時,用“一朵云”來代替網絡。現在,云計算之所以稱作“云”,就是因為其計算設施不在本地而在網絡中。云計算是網絡寬帶化發展的必然結果,它是一種商業計算模型,將計算任務分布在大量計算機構成的資源池上,使用戶能夠按需獲取計算力、存儲空間和信息服務。云計算的核心是可以自我維護和管理的虛擬計算資源池,通常由一些大型服務器集群構成。
有了云計算平臺,程序員就可以動態申請所需資源,來支撐各種應用程序的運轉,而無需為煩瑣的細節煩惱。云計算使程序員能夠更加專注于自己的業務,有利于提高效率、降低成本和實現技術創新。這一點,我們可以從一組間接的數據推斷出來。iTunes、Facebook和Myspace都是面向特定應用領域、支持二次開發的公共平臺。在2009年前18周,因金融風暴的影響,開發應用的程序員數量明顯下降,而應用程序數量反而大增(如圖2所示)。之所以如此,就是因為有了Facebook這樣的支撐平臺,程序員需要考慮的問題大大簡化,工作效率大為提高。
圖2 iTunes、Facebook和Myspace的應用程序數量增長
依托亞馬遜的云計算平臺,有許許多多不擁有計算資源的公司取得了成功。例如,99designs是一個大規模的設計交易平臺,目前已經收到超過53,000位設計師提供的多達300萬件設計作品;Livemocha是一家在線的語言學習網站,提供超過25種語言的學習,并已經擁有了超過300萬用戶;Monografias是拉丁美洲的一個資料分享網站,每天有200萬位訪客;著名的互聯網排名網站Alexa在亞馬遜云計算平臺上存儲了超過1200萬個數據對象,每天要提供超過500萬次查詢。
在我國,云計算已經掀起了IT企業轉型熱潮。中國電信與EMC合作,在上海構建了一個擁有2PB存儲空間的云存儲平臺,稱為e云。e云是安全的在線備份服務,可保護數據不受文件損壞、意外刪除、硬件問題等災難的影響。然而,已建的云計算數據中心基本上是以私有云的形式存在的,外界無法訪問其服務。目前,對國內程序員而言,要么可以用外幣信用卡購買國外的云計算服務,要么還需要等待一小段時間才能用上云計算服務。使用國外的云計算服務,除了支付上的困難外,還有網絡訪問速度的障礙——除非你的網站主要面向國外。可以預見,國內的云計算平臺提供商將主要是中國移動、中國電信和中國聯通三家運營商。當前,中國移動已經建成1000臺服務器、5000個CPU核心、3000TB存儲規模的“大云”試驗平臺。2010年5月21日,中國移動在第二屆中國云計算大會上發布了“大云”1.0版本,已實現分布式文件系統、分布式海量數據倉庫、分布式計算框架、集群管理、云存儲系統、彈性計算系統、并行數據挖掘工具等關鍵功能。中國移動已經發放了一些試用帳號,相信很快將開放出來給公眾使用。
由于眾多新技術的運用和規模效應,在性能價格比上云計算相對傳統計算模式能夠驚人地提升5-40倍。目前眾多的企業開始布局云計算,百度、阿里巴巴、瑞星、微軟、天云科技、廣達電腦、訊鳥等公司都在大規模招聘云計算研發人才。廣達電腦居然一次性招聘700位云計算人才。而目前真正接觸過云計算研發的人實在是太少了,所以許多招聘崗位都在虛位以待。對于程序員而言,如果能夠實現向云計算轉型,是一個提升自身含金量的絕佳機會。