天天看點

走進SaaS應用開發

超越傳統軟體開發技術

51CTO:王老師,阿裡軟體是國内較早進入SaaS領域的廠商,也是目前國内使用者數量最多的SaaS平台之一。作為阿裡軟體的核心開發人員,您對SaaS有怎樣的認識?您如何看待近年SaaS的發展的?

王安全:對于SaaS有兩種了解,一種是Software as a Service,另一種是Service as a Software;無論哪種了解都是兩個關鍵詞:Software和Service。

對于一個軟體開發者來說從SaaS裡引出的關鍵詞有:網際網路、WEB、大規模、Service、定制、軟體、服務,連起來說就是我們在網際網路環境下為大規模使用者開發可定制的軟體和服務(定制是SaaS發展的進階階段)。這個大規模對我們來說其實有兩層含義:一是使用者量大,二是資料量大。

51CTO:SaaS、雲計算、虛拟化……,我們處在一個新名詞,新概念,新技術層出不窮的時代,您覺得SaaS是一個商業詞彙?還是一個技術詞彙?開發人員該如何面對不斷出現的新概念和新技術?

王安全:SaaS既是一個商業詞彙,也是一個技術詞彙;說他是商業詞彙是因為SaaS是一種新的商業模式,在這種模式下軟體、資料都可以成為一種服務,可按時長或次數等多種計費模式進行消費;

說他是技術詞彙是因為SaaS模式下的軟體開發有很了許多新的技術,比如說Multi-Tenant架構、定制、OpenAPI、計費等,也增加了許多限制,如多使用者、大資料量、高并發等,都需要用超越傳統軟體開發的方法去解決這些問題。

51CTO:雲計算也是目前比較熱門的技術;SaaS為雲計算提供了良好的表現和實作形式。您如何看待雲計算與SaaS的關系?商業雲在阿裡的整個SaaS體系中處于怎樣的位置?

王安全:首先要對雲計算有一個清晰的定義才行,目前對于雲計算并沒有教科書式的經典定義,市場上主要的供應商的定義和産品也各不相同,比如Amazon和微軟就各有重點,但是基本上描述的都是計算和存儲能力。

阿裡軟體也有自己的雲計算方案和産品,我們的雲叫做商業雲(Business Cloud),我們認為雲和雲端的出現不僅僅是SaaS的運作和表現容器,更是SaaS的更新模式;如果計算能力總是用最初級的CPU頻率和計算時間來表示,那就太過于底層了,對ISV和終端使用者來說麻煩和抽象,我們認為計算能力的更具象的表現是商業服務,比如處理一個流程,更進階的比如訂一張從北京到杭州的機票,這樣更接近現實生活,對使用者來說更簡單和形象。

我們認為SaaS中的S會構成一個巨大的雲,這些S既有OS層的計算、存儲能力等底層服務,也有流程處理、搜尋等獨立商業服務,更有訂機票、招聘等完整的商務流進階服務,這些服務在雲裡的表現形式或是App,或是API。

51CTO:阿裡軟體通過開放API的方式吸引了大批開發者參與到阿裡平台的建設,同時,開發者也提供了更多優秀的軟體供使用者使用。現在,Open API受到了越來越多廠商和開發人員的關注。在SaaS時代的API與我們傳統API有哪些改變?

王安全:首先API的含義發生了改變。API其實是一種能力的抽象和暴露,在單機上(比如一台Intel + Windows)API隻是将硬體和Windows的能力抽象和暴露出來。

在SaaS模式下,API可以把整個網際網路的能力進行抽象和暴露,每個API後面的含義更加豐富了,不再是冰冷的純硬體或軟體,可能是一個有多人完成的複雜現實業務,比如說一個訂酒店的API就代表了一組呼叫中心的客服代表和酒店間的業務互動,這在單機環境下不可想象的。

API的表現形式也發生了很大的改變。最簡單的API是在單機上同一程式設計語言的API形式,即源碼形式;複雜一些的是記憶體空間相同,程式設計語言不同,像OLE、COM之類;更複雜的就是不同記憶體空間和程式設計語言也不相同,像COM+、CORBA、RMI、WEB Service等;

到了網際網路時代許多不同的平台和技術需要聯通,這就需要更好的API的表現形式和載體,HTTP和URL的提出是一個巨大的進步,SaaS基于網際網路,很自然的采用了HTTP協定,是以SaaS中API開放大規模采用WEB Service方式,在WEB Service的多種方式裡,阿裡軟體更喜歡REST,REST輕量、易懂,語義化更強。

阿裡軟體目前公開的API清單在這裡:

http://wiki.isv.alisoft.com/index.php/%E6%9C%8D%E5%8A%A1%E9%9B%86%E6%88%90%E5%B9%B3%E5%8F%B0_API_%E5%88%97%E8%A1%A8

51CTO:與SOAP相比,REST更加輕量、高效和簡潔。但阿裡平台上的API有些會涉及到交易和使用者方面的業務,對于安全性要求較高的接口,REST是否合适?

王安全:就安全方面來說,REST和SOAP本身是一樣的,可以支援任何方式,包括證書認證,SOAP本身不存在安全規則,僅僅是在WS-Security附加在SOAP上才有了成熟的安全機制。

SaaS時代的程式設計語言

51CTO:SaaS對開發人員所使用的程式語言會産生什麼影響?我們最近經常看到函數語言和動态語言方面的報道,比如函數語言(Erlang、F#)對于雲端高并發、低副作用的優勢和動态語言(Ruyb、Python)在靈活方面的優勢等等。您如何看待程式語言的發展?

王安全:在SaaS初期來看單純就程式設計語言上來看并沒有太多的變化,采用Java、Python、PHP都可以,但是從發展的趨勢來看動态語言越來越流行,主要原因有下面兩個:

1、簡單、易學易用

2、Hosting環境多,成本低

在越來越多的開發者切換到SaaS開發上來了後,就會出現SaaS技術支撐平台(即我們所謂的PaaS),為開發者提供計算、存儲、監控、工作流、任務排程等基礎設施,使開發者快速開發出穩定的、高性能的SaaS應用,此時開發語言就會跟提供計算能力的環境就有些關系,比如Google的AppEngine目前就限定使用了Python。

阿裡軟體目前也在緻力于計算能力的提供,相信在今年就會有具體的産品和大家見面。

51CTO:阿裡平台現在支援.NET、Java和PHP來開發,您比較推薦那種語言?您理想中的SaaS開發語言應該具備怎樣的特性?

王安全:我們目前覆寫了主流的開發語言,單純從言語的角度來說應該是沒有優劣之分,從部署成本來說腳本語言有些優勢,如果不做平台的話我比較推薦輕量級的腳本語言,如PHP、Python都可以;

從長遠來看會依賴于SaaS開發平台,比如Google的App Engine采用了Python,阿裡軟體将來的開發平台會以定義配置為主,小量的地方需要開發人員寫代碼邏輯,采用Java和JS。

說實在的,我沒有什麼理想中的SaaS開發言語,隻要他具備描述業務和調用WEB Service接口就應該可以了。

51CTO:目前阿裡平台隻提供了B/S類型的接入,阿裡何時會推出C/S的接入類型?Web無疑是實作SaaS最理想的載體和實作方式,您如何看待SaaS時代的C/S軟體的發展?

王安全:其實阿裡軟體早就推出了C/S軟體的接入,我們不但做了接入的SDK,還在做将客戶的C/S軟體作為插件插入到我們的阿裡旺旺上的桌面平台,目前已經有很多C/S應用成為了阿裡旺旺的插件。

C/S目前還是數量多、使用者粘度高,C/S軟體的SaaS化還是大有可為的:

1、SaaS化不單是技術和産品的需要,更是軟體公司商業的需要。軟體的付費模式、服務方式要SaaS花才有出路,網遊就是最好的C/S形式的SaaS軟體。

2、原有的C/S軟體改造成B/S軟體成本高。

3、有些軟體必須運作在用戶端,比如有使用到一些硬體特性的軟體,如攝像頭,OS或者平台是不會全部将工作做完的,需要我們進行必要的開發。

51CTO:SaaS的軟體架構與傳統的軟體架構方面有哪些不同?軟體在需求和研發方面有哪些不同?

王安全:建議你購買阿裡軟體9位架構師合著的《網際網路時代的軟體革命-SaaS架構設計》,裡面有你需要的詳細答案。

SaaS時代的程式員

51CTO:面對這種變化,程式員在SaaS時代命運如何?

王安全:說實在的,在SaaS時代,技術将退居二線。因為SaaS是以服務使用者為中心的,任何技術都必須圍繞商業需求轉。在SaaS平台方面,營運才是王道;而在SaaS應用方面,快速滿足使用者需求才是制勝之道。

是以,程式員必須樹立以商業需求為中心的開發思想,程式員的命由使用者需求說了算。特别是SaaS應用的開發,每個應用軟體的功能都差不多,價錢也便宜多點少點也無所為,誰能快速滿足市場需求,誰的軟體就買的好。

這時,在SaaS平台上開發就會有很大優勢,比如,阿裡軟體正在打造的Xplatform就是一個快速開發平台,她的最終目标就是實作大規模內建和大規模定制。

走進SaaS應用開發

51CTO:51CTO網友在看到我們的訪談後,也想進入SaaS開發,他們應該做怎樣的準備?

王安全:SaaS将使程式員産生分化,即SaaS平台開發人員和SaaS應用開發人員。與當年的系統開發和應用開發相似。這取決于你想加入SaaS平台開發還是應用開發。但應用開發一定是占大多數的。

要成為SaaS平台開發人員,最好加入Salesforce, Google,Microsoft, 或者咱們阿裡軟體這樣的公司,平台開發不是小公司能做的。如果想在SaaS應用方面大展拳腳,也建議大家在SaaS平台上開發,最起碼也要調用SaaS平台提供的API。

平台并不僅僅是一個開發平台,更重要的是一個資源平台。比如,阿裡軟體互聯平台就包含阿裡巴巴1個億的客戶資源,還有大量及時的B2B, C2C資訊資源,她既是資源平台也是SaaS市場平台,開發人員可以直接在這個平台上開發和銷售的。

51CTO:SaaS平台開發人員和SaaS應用開發人員的分化對他們的技術結構有哪些不同的要求?這兩類開發人員都需要具備哪些知識呢?

王安全:首先是要會一門程式設計語言。目前WEB是主流,是以确切的說是一門WEB開發語言,如Java。

第二是資料庫技術。熟悉基本的SQL和資料調優技術。

第三是WEB前端開發技術。WEB成為主流,使用者體驗要求越來越高,目前JS仍然是WEB的重器,掌握一到兩個JS架構是不可少的,如jQuery;Flex、JavaFx等技術目前還沒有成為主流,可以關注一些。

第四點是WEB Service技術。在SaaS下的Open基本上都會采用WEB Service來進行,你必須知道WEB Service技術和相關的知識,如REST。

最後,第五點就是3G在中國已經發牌,未來3~5年手機上的應用一定會火起來,你的應用是否需要一個手版本這就很重要了,目前手機端的開發技術有WAP、OS Native、J2ME、Widget、中間件等模式。Apple和Google的AppStore和Android Market是不錯的模式,他們的開發都是基于自己的一套标準開發,相信不久的将來就會在手機上出現更接近Native的中間件。

51CTO:SaaS開發的學習難度怎樣?我們需要留意那些技術?

王安全:世上無難事,隻怕有些人。其實,學習SaaS開發與傳統開發并沒有多大不同,隻是你得适應SaaS開發的模式,适應SaaS那些WEB API調用形式。剛開始接觸SaaS應用開發的程式員會覺得SaaS平台那些API長得很奇怪,調用模式也不同,有同步的。有異步的,涉及一大堆確定調用安全的必備參數,甚至還要對每次簽名等等。其實,适應之後就好了。

SaaS目前還處在高速發展階段,技術上遠沒有成熟,需要不斷的吸收各個方面和領域的技術和知識,WEB2.0技術是讨論很熱的區域,很多技術我們都需要用到:

◆ LAMP,成本效益很高的SaaS環境搭建技術,無論是用來搭建單個SaaS應用,還是搭建一個SaaS技術平台;目前阿裡軟體就采用了MySQL來搭建分布式的結構化存儲叢集,很多關鍵應用已經開始跑在上面。

◆搜尋,比如說Lucene,搜尋是一個很重要的技術,阿裡巴巴有完整知識産權的高性能搜尋引擎,我們也采用Lucene這類優秀的開源産品。

◆前端技術,SaaS對前端技術有很高的要求,目前以JS為主,相信接下來Flex等RIA技術會大放異彩。

◆Hadoop,分布式計算設施,對于要搭建SaaS平台的公司來說是一個高成本效益、快速的方案。

◆SNS,SNS在SaaS營運中會起到巨大的作用,一般來說,很多SaaS産品都可以植入SNS,達到病毒式營銷的效果。SNS技術的重點有好友關系、好友搜尋、好友動态。

◆OpenID, 可以稍微了解一下,目前支援的公司不是很多,但是OpenID的技術思想可以借鑒。

51CTO:現在有很多的SaaS平台,開發人員應該如何面對?怎樣挑選适合自己的開發平台?

王安全:平台的差異比作業系統的差異更讓程式員頭痛,這的确是個大問題。

我想,在SaaS平台還沒有完全進化為WEB OS之後,相關的WEB API規範都成熟之後,問題會好很多。不過,阿裡軟體有一個SIP中心,也就是WEB API調用中心。這個SIP集中了淘寶、支付寶、以及衆多第三方的WEB API,這些WEB API在阿裡軟體互聯平台上有一個統一的調用規範。而且,SIP還在不斷地引入其他公司的WEB API。

是以,如果使用阿裡軟體的SIP,開發人員隻會面對一套WEB API,不會面對衆多的SaaS平台。這也是阿裡軟體互聯平台與其他SaaS平台不同的地方。

51CTO:網友看過我們的訪談後,想到阿裡平台上開發自己的應用,您又哪些經驗可以跟我們分享?需要注意什麼問題?

王安全:首先,一定要認識到未來的開發一定是很大一部分基于網際網路的開發,網際網路作業系統一定會出現,我們要把眼光放遠些。

其次,開發人員不再處于單打獨鬥的年代,求伯君很難再現,協作、共享、平台化是開發的新模式,重用能力比開發能力更重要,不要成天想着發明輪子,用現有的輪子搭個車更有價值。

最後,創新力是差異化的殺手锏,在網際網路時代,小小的創新可以被放大到非常驚人的經濟效益,我們要善于發現現實和網絡生活中的不便,思考出更簡單、高效的方法改造這些不便的地方。

3G已經來臨,我們應該試着開發幾個手機應用了!

51CTO:通過本次訪談,我們基本了解了SaaS時代的開發人員應該具有怎樣的技術結構和知識儲備,深入了解了如何在SaaS平台上進行應用開發,王老師向我們全面展示了SaaS應用開發的過程和相關的開發技術,與我們分享了阿裡平台應用開發的相關經驗。讓我們對SaaS時代的開發技術有了一個全面深刻的認識,感謝王老師細緻耐心的講解。

網友精彩問答

網友子非:雲計算描述的是計算和存儲能力嗎?

王安全:雲計算原本是強大分布式計算和存儲能力的一個代名詞而已,本質上就是計算時間和存儲能力的提供。在雲上開發出不同的軟體或服務隻不過是将計算和存儲具體化,更接近客戶。

網友Jack:在阿裡的SaaS平台上開發應用是不是跟以前內建支付寶接口是一樣的嗎?

王安全:有些不一樣了,我們提供了一個叫做SIP(Service Integeration Platform)的基礎設施,通過RESTFul Style形式進行服務調用,保證接口技術是統一的,以後我們會逐漸提供業務語義标準化的接口,如如何買一張機票的接口

網友lokke:一般,在阿裡平台開發一個應用軟體要多久?一般的,像流量統計什麼的

王安全:目前開發一個應用要視什麼樣的業務類型,如淘寶類型的,就會很快,因為我們已經接入了淘寶的API;我們還會逐漸将許多不同行業的API接入,提供給我們的開發者,這是從業務層面說。從技術層面,我們會提供用一些非常有用的基礎設施,如搜尋、流程、任務、性能監控、使用者等,極大的減少開發時間,隻需要調用我們的服務即可,像流量統計就不需要開發了,我們已經提供了基礎的服務;另外我們試圖提供一個線上的開發平台,這個平台內建了我上面列舉的基礎服務和業務元件,我們也提供了一系列的開發标準,如UI元件标準。

網友Jack:在阿裡平台上,是不是可以想開發什麼就開發什麼?阿裡有沒有一些使用者需求方面的引導?

王安全:沒有限制,但是阿裡軟體會将使用者需求提供給我們的開發者,一方面讓開發者可以一對一提供開發服務,另一方随着開發者需求的積累完全可以把這個軟體開放給更多的人來使用,獲得更多的客戶,阿裡軟體就是幫助開發者開發軟體,撮合使用者和開發者的軟體交易。

網友DSDC:王老師可不可以給我們介紹一下阿裡軟體的電子商務雲計算中心

王安全:首先,我們不可避免的會提供計算和存儲的服務,但是我們肯定和google、amazon會有非常大的差異,差異目前還是商業機密,不好意思,暫時不能暴露,相信大家在不久的将來就會看到我們的商業雲産品了(business cloud)

51CTO網友:阿裡現在開放的API能全部滿足軟體需求中的功能嗎?如果不能滿足怎麼辦?要自己寫API?自己寫了API 能放到阿裡的雲上嗎?那些api應該都是webservices實作的吧?

王安全:阿裡軟體提供的API肯定不能完全滿足開發的需求。如果不滿足可以自己寫,寫好後同過我們的SIP接入到阿裡軟體的平台上,提供給自己或别人用,可以按調用次數或包月等方式進行交易。另外我們也一直會不斷的引入各種各樣的API,你也可以成我們的服務提供商(ISP),我們希望這個平台上有非常多的API,而且希望這些API背後不是一個簡單的機器計算,而更多的是一個商業服務。

目前是的,但是我們會逐漸在技術上将很多東西轉化成一個API,比如一個網頁,以友善開發者将自己的東西變成服務。

網友kkdk:在校的計算機專業的學生能做SaaS開發嗎?您提倡一開始就做SaaS開發嗎?

王安全:能,非常好的嘗試。未來的開發者一定會是SaaS開發模式,因為我們開發出來的應用要給很多人用,希望有好的收入,希望能夠快速開發。。。做網站就是SaaS的初級階段,軟體互聯化一定是潮流。

51CTO網友:這種SaaS開發對技術有怎樣的要求?比如兩年經驗,三年經驗,開發過幾個項目,有類似的技能要求嗎?

跟你依賴的平台有關,平台越完整,開發者就越簡單和快速。但是我們來說對使用者的了解和使用者體驗的改進是需要時間的,這一點時間我們不能節約,但是我想阿裡軟體SaaS平台上的龐大使用者群和衆多的基礎設施、API會幫助到你。對于技術,必須要知道一門開發語言,知道XML、Web Service、Http等相關的知識,門檻還是不高的。

繼續閱讀