專訪恩信科技CEO劉有濤:如何做一個云時代的程序員
原創【51CTO獨家報道】云計算自誕生以來一直備IT業界的關注。就開發人員來說,云計算與傳統軟件開發有那些不同?云時代的來臨會給我們帶來那些改變?我們需要那些技術和知識儲備來適應云計算?帶著這些問題,記者拜訪了恩信科技的CEO兼首席架構師劉有濤先生,請他來為我們講解如何做一個云時代的程序員。
恩信科技是中國開源ERP商務模式的締造者,其恩信開源ERP產品目前擁有上百萬用戶;今年2月,恩信科技通過技術創新和研發,成功上線運營恩信云ERP產品。
恩信科技CEO兼首席架構師劉有濤
劉有濤認為,與傳統ERP相比,云ERP在技術架構沒有太大的不同。但從恩信云的研發經驗來看,一些傳統軟件開發中的問題會因云計算高并發、大負載的特點而暴露出來;而這些暴露出來的問題往往都是老師和項目經理不斷強調的。
優化代碼質量
我們經常看到,那些教父級的程序高手和學院派的編程書籍不斷強調代碼質量,但真正執行“優美代碼”準則并編寫高重量代碼的程序員在我們的身邊少之又少。跟其他軟件公司一樣,恩信科技也有編碼規范,但在實際開發中,由于團隊中個體成員素質的差異,程序員往往依照自己已有的習慣去實現需求;這樣的功能編碼在傳統軟件產品中沒有問題,但遷移到云端,一些問題就暴露出來。
對此,劉有濤有個形象的比喻,"不注重代碼質量的軟件開發就像在普通道路上行駛的汽車,正常行駛沒有什么問題;一旦到高速公路上跑(遷移到云端),什么問題都來。"
比如我們熟悉的else...if的控制結構,也許在C/S結構下沒什么問題,一旦遷移到云端,這樣的代碼會給服務器帶來巨大的壓力;同樣的功能實現,同樣的流程,使用switch...case將會更好,大大提高程序效率。這種程序語句的選擇看似平常,卻牽扯到程序員對項目的責任心和對代碼質量的高追求。其本質是需求實現過程中對內存和CPU資源的優化。這樣的優化在云應用開發中尤為重要。
面對云時代的挑戰,恩信科技的經驗是:大到功能模塊的測試,小到一條SQL語句的檢索范圍都有嚴格要求,只有嚴格把控代碼質量才能把一個傳統軟件研發技術團隊逐步提升到一個云時代的技術團隊。這也是一個傳統程序員進入云時代的必經之路。
學習應用新技術
云計算是一個新概念,基于云計算的特點,出現了很多新的技術。如何讓開發人員適應云計算,接受云應用開發的新技術直接關系到云產品是否真的對用戶有價值。B/S結構的云應用都是由用戶在瀏覽器端操作,這種操作的流暢度直接影響用戶對產品的體驗。除優質穩定的服務器硬件設施外,如何從技術方面有效提升云的響應速度是云時代開發人員面臨的新挑戰;而這種挑戰,不僅僅是開發技術的更新,還有開發人員對新技術的接受和理解。
為了保證云應用的響應速度,恩信科技的云ERP產品大量使用了JavaScript和Ajax技術。對于一個以Java為技術主線的研發團隊,對JavaScript和Ajax這種前端技術可能并不看重。但云應該強客戶端的響應速度和服務器端的資源優化,讓程序員盡快接受和熟悉這種技術尤為重要。
我們可以從恩信云ERP的界面上看到一些很酷炫的應用,這些UI操作在C/S結構中可能不難實現,但在瀏覽器中即要保重響應速度,又要考慮服務器端的低負載,實現起來并不容易。更不容易的是這些功能都是由Java程序員使用JavaScript和Ajax實現的。這意味著恩信的研發團隊對異步傳輸理念的接受和Ajax技術的學習。
云ERP的界面大量采用Ajax技術
通過在線編程功能進行遠程管理
目前,大部分的Java程序員不屑于學習新技術,特別是前臺開發技術,認為這些都是美工做的事;但在云時代,除深入了項目需求和底層架構外,還需要程序員關注產品的操作響應速度,有效降低服務器壓力需要前臺與后臺的緊密配合,多種技術協同開發。只有不斷的學習新技術,更新開發方式和理念才能適應不斷變化的行業和業務需求。
云端的程序優化
云應用雖然將大部分的操作交由客戶端瀏覽器完成,通過異步的方式有效降低服務器的壓力,但云計算高并發的特點依然要求開發人員關注服務器端的程序優化。
除了之前提到的通過提高代碼質量,嚴格監控和測試,有效降低服務器端資源占用外,云端的應用程序還需要程序員熟知以下技術:
1、多線程。為了有效利用云計算平臺,合理分配資源,云應用的開發中將大量使用多線程技術把程序對云資源的占用減到最小,有效處理高并發的問題。
2、數據庫優化設計。在恩信的云ERP產品中,系統會對每一個新增用戶在數據庫中生成相關的表和字段(因ERP產品的復雜度和規模,每個用戶會有一個龐大的數據庫),這種生成操作將占用大量的服務器資源,很難想象一個傳統架構的數據庫服務器能提供幾十個上百個用戶的同時生成,而在云端,你的數據庫將隨時面臨這種高并發的問題。
解決這些問題,需要有扎實的數據庫理論知識和豐富的項目經驗。需要掌握對SQL語句和存儲過程的優化和處理技巧,積累數據庫連接池設計方面的經驗,在架構數據庫時,詳細分析項目需求,合理設計各個表與字段,養成良好的索引習慣。
3、安全技術。云時代,用戶會將業務數據、財務數據等存儲在云端,除在機房環境和硬件上保證用戶的數據庫安全外,還需要程序員在項目實施和編碼過程中具備一定的安全知識,包括像SSL驗證 、CA證書、SQL注入和加密技術。
云時代提倡創新
云時代,除需要以上所說的良好編碼習慣、對新技術的學習和應用、豐富的多線程和數據庫設計經驗外,云時代還需要開發人員有很好的創新意識.
劉有濤先生特別提到希望有更多80后甚至是90后的開發人才加入,因為這個群體有著豐富的互聯網經驗,創新意識強,可以打造出更多更好的產品功能。劉有濤說:“云上的應用不僅是對傳統軟件功能的鏡像或替代,這樣是沒有意義的;云版本的應用,就是要比傳統應用更酷,更實用”。
【編輯推薦】