雲計算自誕生以來一直備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程序員不屑於學習新技術,特別是前臺開發技術,認爲這些都是美工作的事;但在雲時代,除深刻了項目需求和底層架構外,還須要程序員關注產品的操做響應速度,有效下降服務器壓力須要前臺與後臺的緊密配合,多種技術協同開發。只有不斷的學習新技術,更新開發方式和理念才能適應不斷變化的行業和業務需求。
雲端的程序優化
雲應用雖然將大部分的操做交由客戶端瀏覽器完成,經過異步的方式有效下降服務器的壓力,但云計算高併發的特色依然要求開發人員關注服務器端的程序優化。
除了以前提到的經過提升代碼質量,嚴格監控和測試,有效下降服務器端資源佔用外,雲端的應用程序還須要程序員熟知如下技術:
一、多線程。爲了有效利用雲計算平臺,合理分配資源,雲應用的開發中將大量使用多線程技術把程序對雲資源的佔用減到最小,有效處理高併發的問題。
二、數據庫優化設計。在恩信的雲ERP產品中,系統會對每個新增用戶在數據庫中生成相關的表和字段(因ERP產品的複雜度和規模,每一個用戶會有一個龐大的數據庫),這種生成操做將佔用大量的服務器資源,很難想象一個傳統架構的數據庫服務器能提供幾十個上百個用戶的同時生成,而在雲端,你的數據庫將隨時面臨這種高併發的問題。
解決這些問題,須要有紮實的數據庫理論知識和豐富的項目經驗。須要掌握對SQL語句和存儲過程的優化和處理技巧,積累數據庫鏈接池設計方面的經驗,在架構數據庫時,詳細分析項目需求,合理設計各個表與字段,養成良好的索引習慣。
三、安全技術。雲時代,用戶會將業務數據、財務數據等存儲在雲端,除在機房環境和硬件上保證用戶的數據庫安全外,還須要程序員在項目實施和編碼過程當中具有必定的安全知識,包括像SSL驗證 、CA證書、SQL注入和加密技術。
雲時代提倡創新
雲時代,除須要以上所說的良好編碼習慣、對新技術的學習和應用、豐富的多線程和數據庫設計經驗外,雲時代還須要開發人員有很好的創新意識.
劉有濤先生特別提到但願有更多80後甚至是90後的開發人才加入,由於這個羣體有着豐富的互聯網經驗,創新意識強,能夠打造出更多更好的產品功能。劉有濤說:「雲上的應用不只是對傳統軟件功能的鏡像或替代,這樣是沒有意義的;雲版本的應用,就是要比傳統應用更酷,更實用」。