從開源社區到云計算
UNIX編程藝術講到UNIX為何如此成功的***個原因就是開源。當時的一些計算機大牛們,為了彼此間更好的合作,為了提高團隊的效率,選擇選擇將源代碼開放出去。在那個蠻荒的時代,因特網沒有誕生,甚至最開始連TCP/IP都沒有誕生,人們依賴脆弱的計算機網絡進行一些文檔的傳輸和技術上的交流。開源這件事是那些大牛比如Kim Tompthon,Dung Mcllroy的一些協作的習慣。后來誕生在伯克利大學的hacker們在編寫Unix程序以及各種工具軟件的時候也選擇了這種開源。可以說開源軟件是計算機歷史中有史以來的一種優良的傳統。
我們來分析一下為何那些人愿意把自己的勞動果實告訴其他人。我覺得原因有一下幾點,首先是為了提升效率,那本書在講到Unix文化的時候講到,人們開放自己的源代碼給別人首先是因為這樣可以提升效率,別人做過的事自己可以不用再做。對自己對他人都有利。第二點是,炫嗎,hacker們從事計算機事業,在那個時代首先是一件很刺激的事,非常高大上。開源這種高大上人士的習慣自然就被很多其他的hacker所沿用。第三點就是很多機構都從Unix的開源中獲利,包括官方的和非官方的,所以開源這種行為當然得以快速發展,成為國外程序員的一種時尚。
開源軟件促進了計算機技術的高速發展,全世界的計算機工程師,組成一個個開源社區,也許他們都不曾謀面,但是確完成了一個個偉大都工程。他們的開發模式是分布式的,每個開發者都無私的貢獻著自己的代碼,自己的智慧,這些程序員以一種非常單純的目的從事這項事業。那些開放出去的源代碼是每個后來者學習的珍貴資源,所有的程序員在構建屬于自己的程序代碼的時候都在直接或者間接的享受開源代碼帶來的好處。我們今天使用著一個個開源框架,開源代碼庫,快速構建著我們自己的應用,可是試想一下我們沒有這些東西,沒有開源的C++STL,沒有開源的JDK,tomcat,netty這些東西,可能我們就意味著要么使用商業軟件,使用商業軟件的成本總的來說比較高的,可能不是每個公司都能承受,而且對于一個企業來說核心東西如果還是使用別人的東西,并不是每個公司都能接受。商業軟件從目前的角度來說可能在某些領域還超越著相應開源軟件,但是隨著開發者的努力,開源軟件的能力也會更加的完善。第二種選擇是使用我們不知道實現并且也不收費的東西去做一些東西,這些東西廉價但是危險,因為他可能就是你后期的系統運維期間的一個定時Boom,而且你不知道怎么拆除他。或者我們要重頭開始構建這些基礎構建,這對于每個程序員來說都是一個災難,你要加更多的班,也許收效還沒那么明顯,因為基礎構建的bug可能讓你頭疼到炸。
國外開源從社區數量到規模到質量都比國內要好很多。原因一個就是上面說到的歷史嗎,人家有那種傳統,hacker們崇尚開源。開發者們好凝聚,協作也很專業。另一個當然是國內外程序員生存的現狀決定的。國外程序員可能覺得自己干著一份十分瀟灑的職業,每天固定可能8小時不到的上班時間,剩下的時間就是自己,當然可以根據自己的興趣愛好,干點想干的,并且這樣收入依然是很高。國內就截然相反,程序員大多數都很苦逼的從事這項職業,每天加班到很晚,午夜之后除了孤魂野鬼,大多數都是還在加班或者下班回家的程序員,及時這樣中國程序員的收入依然比較低。而且如果多余的時間去做開源軟件的話,這項事業在國內幾乎不產生收入。所以大多數人一是沒有多余精力去做開源,二是不愿意去做開源。只有少部分對技術真正有情懷對開發者活躍在國外的開源社區,貢獻自己的力量。
開源模式從生產力角度來說是通過提升生產效率的方式來促進生產力的發展。這種模式是免費的幾乎不增加任何IT成本。這是一項非常偉大的事業,因為你的每一份努力,都優化著軟件本身,都貢獻著每一個業內人士,每一個程序員。多少程序員因為他們而少加班,多活了幾年!
再說到云計算技術,這是一個被炒了十多年的概念。概念一度被炒的神之又神。分析一下這三個字,主語是云,謂語是計算,是云去計算,沒有賓語或者對象,那計算的對象就是everything或者他能夠計算的一切。那么就牽扯到兩個東西,***云是什么,第二怎么去計算。我覺得從字面理解,弄懂這兩個問題基本就可以了。業內有個劃分,從三個層次闡述了云計算,也就是著名的IAAS(Infrastructure as a Service),PAAS(Platform as a Service),SAAS(Software as a Service),從軟件架構角度來劃分,應當說是不存在問題的。IAAS關注的是云計算的基礎設施,包括機器硬件資源,網絡帶寬資源,DB,文件系統,緩存存儲資源等。這是每個IT互聯網公司都必須投入的東西,是一塊非常大,不可忽視的成本因素。大的互聯網公司每年在這方面的投入達到幾十上百億的規模。問題不是在預算的規模,而是是否在每一個時間都需要這么多規模的基礎設施。可能對于一個電商公司來說,在淡季他的基礎設施資源很多處于閑置,CPU利用率和內存利用都很低,那么一開始的預算是不是在這個時間點就浪費了許多。所以在基礎設施這一塊如何做到彈性的支出是云計算的關鍵所在。所以很多云計算廠商提出了很多彈性的基礎設施方案,比如亞馬遜的ES3,EC2,阿里云的ECS等。可以按需擴展。再談到PAAS層,這也是偏底層等軟件服務,開發者要在云平臺之上構建他們自己的應用,勢必到牽扯到各種服務或組件,比如各種中間件(服務容器,消息隊列系統,數據層等)。這些服務是應用產生的必需品。對于PAAS層來說,如果一般的軟件服務商,如果從頭構建這些基礎構建的話,那將耗費非常大的時間和成本,而且開源的系統在某些情況下可能未必能立馬滿足你的需求,這個時候如果選擇去修改開源軟件然后可能要自己維護跟自己特性相關的分支,這也是一件成本比較高的事情。對于這種基礎軟件來說,開發成本相對于運維成本還是很低的。大部分公司招聘了很多人其實都是想讓他們運維出一個更好的三代或者四代軟件,這里的運維比較廣義,一是處理系統出現的問題,bug,二是為了滿足某些用戶的需求而開發。其實從開發和運維的角度來說,大多數的互聯網公司,對于運維的投入其實可能要高于初期開發,無數的程序員其實是疲于運維,疲于不休止的處理問題,疲于改需求,滿足新需求。所以在云計算的各個層面,降低運維成本,讓生長在云平臺上的廠商付出更少的運維成本是個非常關鍵的問題。否則他們從將自己的應用部署在云平臺上沒有太多的意義。再講到SAAS層,互聯網軟件廠商一旦到了云平臺上,除了部署自己的平臺應用之外自己本身也需要各種服務,比如對于一個電子商務公司來說,ERP服務可能是個必須的服務。對于這類服務,有些云平臺可以自己提供出來,但是更好的方案是讓那些ISV(Independent Software Vendors )廠商提供,一是他們更有經驗,更了解用戶,二是這對于云生態來說非常有必要。讓更多的ISV廠商活躍在云上,整個生態環境才能更好,你的用戶才能被你粘住。這里簡單分析了一下各個層面,不是很全面。但是我們從分析中能得出的是,一是,云計算是在降低成本,包括,硬件,軟件開發,系統運維,服務接入,二是,云計算大大提升了效率。對于告訴發展的當今互聯網來說,如果你的老板足夠有良心,有遠見,如果云計算廠商都有“良心”,胸懷更寬廣,就應當擁抱云計算,快速讓你的應用構建起來,然后去抓住市場,發展自己。
云計算技術的發展,很多人把他和蒸汽機的發明和電氣的發明應用對于時代的作用相提并論。也許他不能算是一項純粹的發明,因為當中用到的虛擬化,中間件,軟件技術都是都是成熟現有的技術。但是他在歷史當中所起的作用,或者將要起的作用,都足以和前兩者相提并論。極大都提升了社會生產力,勢必導致行業或者產業結構發生巨變,導致生產關系的變化。這當中孕育著巨大的商機,除了云計算本身。
對于我們這些苦逼中國程序員來說,我們也希望看到這項技術的高速成熟發展,我們希望我們能用到各種云計算服務快速滿足用戶的需求,產品經理提出的需求,不用再加那么多班,不用再去半夜起立處理問題,不用再像個孤魂野鬼一樣在夜間游蕩回家。所以從事這項事業對于一個有情懷的程序員來說還是非常愿意去做的,其一真的蠻有挑戰的,面臨很多新的問題,其二產生的價值非常深遠,對于開發者,對于用戶,對于這個行業,對于這個行業會影響波及到的其他,更大一點的是社會生產力及可能的變革。
向開源社區的開發者及耕耘在云計算行業多年的有情懷的程序員,有良知的決策者致敬!
不寫了。。。