雲端軟體(Cloud Software)或雲端服務(Cloud Service)是基於雲端平台之上,對外提供服務的應用程式集合,也是一般使用者真正使用雲端運算的媒介,它也會決定廠商的雲端軟體應用程式是否會成功的關鍵之一,而在行動裝置逐漸當道的現代,雲端軟體可能不是執行在雲端平台上,但卻一定會與雲端上的服務有所關聯。
雲端軟體(Cloud Software)或雲端服務(Cloud Service)是基於雲端平台之上,對外提供服務的應用程式集合,也是一般使用者真正使用雲端運算的媒介,它也會決定廠商的雲端軟體應用程式是否會成功的關鍵之一,而在行動裝置逐漸當道的現代,雲端軟體可能不是執行在雲端平台上,但卻一定會與雲端上的服務有所關聯。
舉例來說,Apple的iCloud就是一種雲端服務,它的用戶端是iPod, iPhone與iPad等裝置,但用戶端都不是在雲端上執行,而是透過雲端服務來共享與同步化資訊。再舉個例子,知名的檔案儲存服務Dropbox,它也是透過使用者安裝在電腦中的用戶端程式(Dropbox Client)和架設在Amazon EC2上的Dropbox Service進行聯繫與檔案同步的工作,沒有Dropbox Service的話Dropbox Client也無用武之地,而這類型的應用也愈來愈多,雲端服務已經成為無所不在運算的要角,透過雲端服務的威力,使用者能以光速的方式將資訊分享出去,不論是給自己的好友或是其他廣大的網路用戶。
雲端軟體與服務(以下稱雲端軟體)也具備雲端運算的基本特質:隨選(On-demand),使用者可以依自己的需求決定要使用的軟體時間與範圍,不像以往的軟體買賣都是授權永久,雲端軟體的授權是由使用者決定的,通常都是按需使用與按使用量付費(Pay as you go),對使用者來說,不必再花一筆永久的授權成本即可享用軟體,而通常這種模式的軟體成本相對較低,以訂閱為主的授權(Subscription-based License)已成為雲端服務的標準商業模式,且同時適用於雲端平台與基礎建設。
對於開發人員來說,一套完整的雲端軟體應該提供授權範圍內所有的功能給使用者,而且對所有的使用者皆同,但這樣就會有一個問題,在雲端的環境上,資料的隔離性(Data Isolation)是很重要的,沒有人想要讓他們的資料讓無關的他人瀏覽,所以應用程式必須要確保每個使用者都執行在自己的環境中,然而這樣的軟體並不容易設計,而且又會有個案客制的問題。一套程式碼多人共用且保持資料隔離性的軟體架構稱為多重租賃(多租戶)架構(Multi-tenants Architecture),使用多重租賃架構設計的軟體通常都具有一套版本多人共用的特性,這樣開發人員在維護時會比較輕鬆,但是壓力也會很大,因為修改有錯誤時就很容易讓資料外洩(例如SQL指令沒設定使用者資料的篩選條件)。而資料的儲存也會視多租的架構來決定,例如可以用篩選方式(Filter-based)、以綱要方式(Schema-based)或是資料庫方式(Database-based),端看應用程式性質以及需求決定要如何實作。
實作多重租賃架構的成功案例為Salesforce.com,其CRM系統即為多重租賃的雲端軟體,使用自行研發的Metadata-Driven資料架構進行開發,已成功的實作出多重租賃的系統特性,相同的技術亦使用在Force.com PaaS平台。
總而言之,雲端軟體的實作除了對使用者端的軟體操作的便利性外,雲端軟體的特性、以服務為主(Service-based)的思維和可支援大量使用者的多重租賃技術也是必須要具備的,以讓雲端軟體可以充份發揮雲端運算應有的威力。
Reference:
http://en.wikipedia.org/wiki/Software_as_a_service
http://msdn.microsoft.com/en-us/library/aa479086.aspx
http://www.developerforce.com/media/ForcedotcomBookLibrary/Force.com_Multitenancy_WP_101508.pdf