對話阿里架構師:走進SaaS應用開發
原創
王安全:2006年加入阿里巴巴(www.alibaba.com)集團研究院,任軟件架構師;2007年阿里集團分拆,進入阿里軟件(www.alisoft.com),從事架構和管理工作,目前司職阿里軟件研究院資深經理。
以下為聊天實錄,51CTO略有整理。
超越傳統軟件開發技術
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上才有了成熟的安全機制。#p#
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就是一個快速開發平臺,她的最終目標就是實現大規模集成和大規模定制。#p#
走進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時代的開發技術有了一個全面深刻的認識,感謝王老師細致耐心的講解。#p#
網友精彩問答
網友子非:云計算描述的是計算和存儲能力嗎?
王安全:云計算原本是強大分布式計算和存儲能力的一個代名詞而已,本質上就是計算時間和存儲能力的提供。在云上開發出不同的軟件或服務只不過是將計算和存儲具體化,更接近客戶。
網友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等相關的知識,門檻還是不高的。
【編輯推薦】