影響SaaS落地的三座技術“大山”
在當下的世界中,軟件應用無處不在,隨處都可見電子產品的身影,一個沒有任何電子產品的生活是什么樣子讓人很難想象。而支撐起這些電子產品的是無數個應用程序和其背后所隱藏的實現技術。 無論你需要做什么,都可以找到大量的應用程序供你選擇。軟件的本質工作是簡化復雜的業務流程,讓生活更簡單,更有趣。然而,在享受軟件帶來便捷的同時,也伴隨著一定的副作用,比如你需要安裝大量的應用軟件,且需要為這些應用軟件支付一大筆費用,同時還需要關心軟件升級維護的問題。為了最大程度的降低使用軟件所帶來的副作用,SaaS(軟件既服務)應勢而生。
? 在當下的世界中,軟件應用無處不在,隨處都可見電子產品的身影,一個沒有任何電子產品的生活是什么樣子讓人很難想象。而支撐起這些電子產品的是無數個應用程序和其背后所隱藏的實現技術。
? 無論你需要做什么,都可以找到大量的應用程序供你選擇。軟件的本質工作是簡化復雜的業務流程,讓生活更簡單,更有趣。然而,在享受軟件帶來便捷的同時,也伴隨著一定的副作用,比如你需要安裝大量的應用軟件,且需要為這些應用軟件支付一大筆費用,同時還需要關心軟件升級維護的問題。為了最大程度的降低使用軟件所帶來的副作用,SaaS(軟件及服務)應勢而生。
? 在開始探討本文的主題之前,先花一分鐘了解什么是SaaS應用程序以及使用SaaS軟件的優勢。
1. 什么是SaaS應用軟件?
? SaaS是Software as a Service(軟件即服務)的縮寫,它是云計算的主要體現形式之一,其他的還有諸如平臺即服務(PaaS),基礎設施即服務(IaaS)以及數據即服務(DaaS)等。簡而言之,SaaS是一種軟件交付模式,旨在以“即用即付”服務的方式為客戶提供軟件服務,客戶不需要安裝軟件便可獲得應用程序提供的所有功能。
? SaaS是一種基于云計算的軟件交付系統,客戶只需要通過瀏覽器便可輕松訂閱應用程序所提供的功能。這種“按需使用”或“軟件+服務”的軟件交付系統,被廣泛應用于各大中小企業,組織中,以幫助他們降低軟件的使用成本。當下,SaaS軟件正被用于各種行業的業務領域中,例如:客戶關系管理軟件(CRM),企業資源規劃軟件(ERP),信息管理軟件(MIS),人力資源管理軟件(HRM),地理信息管理軟件(GIS)以及學習管理軟件(SIS)等等。
2. 使用SaaS應用軟件的優勢
? SaaS軟件交付模式的概念最早于20世紀60年代被提出,到20世紀90年代,隨著互聯網技術的不斷發展,SaaS的發展速度也隨之加快,許多軟件提供商開始通過互聯網托管和提供軟件服務,而SaaS(軟件即服務)這個術語也是在這一時期確定下來的。使用SaaS軟件在以下幾個方面可以獲得較大優勢:
- 1 在軟件使用早期,可以大幅度降低硬件,帶寬,安裝和運營成本。
- 2 可以以更小的人員和資金的開銷,準確的預測業務數據,更快的完成軟件的升級和維護工作。
- 3 與傳統軟件相比,用戶通過互聯網獲的軟件服務,從而降低了管理軟件所帶來的安全風險。
- 4 快速部署,快速接入。由于不需要自行安裝和部署軟件,只需要向服務提供商注冊信息,并為訂閱的服務付費,便可獲得軟件服務。從而減少了獲得軟件的等待時間。
- 5 跨平臺操作。借助互聯網,客戶可以在任何時間,任何地點,通過瀏覽器便可接入服務。
? 任何有價值的東西,在其出現之前都會歷經各種困難與挑戰,沒有什么事物是一蹴而就的。接下來,將介紹構建一個SaaS軟件在系統測試,數據安全和升級維護三個方面面臨的巨大挑戰。
3.實現SaaS軟件挑戰一#測試
? 任何有價值的軟件在交付之前,都需要進行大量的測試。這和我們買衣服一樣,在確定付款前,都需要在試衣間試穿各種樣式的衣服。SaaS軟件的測試與傳統的軟件測試基本相同,通過執行各種邏輯驗證,確保作為服務提供的軟件在質量上是否符合客戶的需求。SaaS軟件的測試通常會包含數據安全測試,業務邏輯測試,數據集成測試,接口兼容測試,可伸縮測試和高并發測試。但SaaS軟件的測試也有有別于傳統軟件測試的地方。
? 與傳統軟件開發相比,SaaS軟件的測試在測試周期和實施等方面都面臨著諸多的挑戰。盡管實現SaaS軟件的技術框架會有所不同,但在測試環節都將面臨一些常見的技術挑戰。
3.1. 安全性測試
? SaaS軟件可以為使用者帶來巨大的好處,但仍然有很多用戶在質疑SaaS應用軟件的數據安全?;谠朴嬎銘玫臄祿踩恢币詠矶际且粋€居高不下的熱點話題。因此,針對SaaS軟件的安全性測試必須慎重對待,需要有專門的測試策略和工具。
? 與其他任何的云計算平臺一樣,在云計算環境下維護數據的安全性和完整性具有很大的風險與挑戰,和傳統的軟件相比,SaaS應用軟件的安全性測試更為復雜。在SaaS應用軟件測試中,需要模擬多個租戶下,不同安全級別的隱私要求,權限分配粒度,資源隔離等級和用戶行為模式。傳統的測試手段很難測試并發現SaaS軟件中存在的安全漏洞,軟件測試場景也很難完全發現漏洞并消除這些安全威脅。
3.2. 可伸縮和高可用測試
? 可伸縮(也稱可擴展)性是SaaS軟件服務提供商重要的商業模型指標之一,要求SaaS應用軟件可以根據客戶量的大小進行水平方向的伸縮。簡單來說,SaaS平臺可以根據當前用戶量的多少,動態地增加或者減少運行實例的數量;而高可用(性能)是客戶衡量SaaS軟件好壞的一個重要指標。
? 如何成功的測試SaaS軟件的可伸縮和高可用性,需要有專門的測試策略,才能組織出可用的測試場景,并且需要比傳統軟件測試更多的測試樣本數據和測試標準。這些數據和標準需要仔細的考慮SaaS軟件的應用場景,才可能被量化和設計。另外,還需要考慮如何在不同租戶類型,不同的用戶數量組合,不同使用環境(移動端,PC端)的復雜條件下,對系統的性能,峰值和負載能力進行測試。
3.3. 集成和開放API接口測試
? SaaS應用軟件在一定程度上需要集成第三方的業務系統,同時還有可能需要開放一定的API接口,以支持從其他平臺集成或遷移數據。在何種情況下,保護數據的安全性和完整性將給測試帶來巨大的壓力。在SaaS應用軟件的集成測試和API測試中,需要對入站和出站數據進行驗證,以及對所有API的功能,安全性,性能以及文檔的完整性進行測試。即便是這樣,你也很難提前組織起所有的測試場景,而且這個過程非常的耗時。也許第一版的API還沒有測試完,新版本的API已經添加到測試列表。實現SaaS軟件是一個不斷迭代的過程,因此很難在短時間內一次測試就涵蓋所有的API。
4. 實現SaaS軟件挑戰二#數據安全
? 對于SaaS軟件而言,更為復雜和艱難的工作是如何保障SaaS平臺中用戶數據的安全。不管是大型企業還是小公司,他們對于數據的安全性要求都是一樣嚴苛的。例如常見的CRM系統,HR系統,ERP系統和財務管理系統等,它們都存儲了大量高度敏感的用戶信息,如果SaaS軟件的數據安全無法得到保障,不僅是客戶的數據會遭受破壞,服務提供商的信譽也會收到嚴重的影響,甚至會伴隨著相關法律的處理。因此,相比于傳統的軟件,SaaS軟件的安全性要求更高,系統結構更為復雜,實現難度也更大。
? 構建一個SaaS平臺,在滿足高性能和可伸縮的條件下,還需要著力保障用戶數據的高度安全,這主要體現在以下三個方面:
- 1 多租戶數據隔離:多租戶架構是SaaS軟件的一個重要評定標準,如何對各個租戶的數據進行識別,分割和存儲需要在效費比,安全性和性能上取得一個平衡。
- 2 數據備份與恢復:由于各租戶訂閱服務的組合不同,使用軟件的時間段也不盡相同,對不同租戶的數據進行備份和恢復的難度也相當大。另外,在操作其中一個租戶數據時,需要保障其他所有租戶的數據不會受到影響。在發生系統故障時,還需要及時恢復租戶數據,面對龐大的數據量,數據恢復的復雜度和難度都比單體應用高很多。
- 3 數據入站和出站校驗:SaaS軟件允許用戶在任何地點通過瀏覽器獲取服務,這就要求SaaS軟件在數據傳輸,用戶輸入,系統輸出等環節有著更高的安全性要求。相比于單體架構的應用程序,需要更高級別的安全傳輸加密/解密手段,更細粒度的用戶認證和鑒權措施。另外,對用戶的日志的收集,追蹤和審計工作比單體軟件更難。
? 保護存儲在SaaS平臺中的數據安全,需要仔細的分析平臺中每一個業務流程,細化權限下放的粒度,嚴格把控訪問接入設置以及數據的存儲規則。即便如此,由于SaaS系統通常需要面對比單體架構軟件更為龐大的數據量,且業務流程更為復雜,更新周期相對較短,因此如何確保存儲在SaaS平臺中的數據不易被破壞或者泄露是一個永久存在的工作。
5.實現SaaS軟件挑戰三#升級維護
? SaaS應用軟件免去了客戶使用軟件時的安裝,維護,升級等工作,但這些繁雜的工作并未因為SaaS而消亡,而是轉移到了SaaS軟件服務商的手中,且工作變得更為復雜和艱難。
? SaaS軟件需要全天候為客戶提供可用的服務,因為你完全不知道客戶會在什么時候登入系統開展工作。這就要求SaaS服務提供商在升級和維護軟件的工程中不能影響當前用戶使用軟件。簡單來說,SaaS軟件的升級維護不能采取“冷啟動”的方式來完成,需要采用“熱部署”的方式,讓客戶基本上感覺不到升級工作正在進行。反觀傳統軟件上線或更新過程,往往會出現各種問題:不一致的運行環境,過多的人為干預系統的構建和部署,代碼改動引起不可控的質量,向下不兼容,服務中斷,更長的更新時間,數據丟失等問題。
? 對于SaaS系統,系統的升級維護工作不能暫停當前客戶正在執行的業務,避免業務數據丟失,因此需要一種全新的軟件發布機制,通過可視化,自動化的操作,實現持續,無縫,零重啟的軟件交付過程。在升級維護時,SaaS軟件主要面臨以下幾個挑戰:
- 1 版本可回退:如果新上線的功能模塊遇到重大問題,可以回退到之前的版本而不影響用戶的正常業務。
- 2 系統向下兼容:新版本的系統需要盡可能的向下兼容舊系統的數據。在最壞的情況下,當升級過程發生時,用戶正在使用舊版本提交數據,如果適配舊版本提交的數據,需要慎重考慮。
- 3 灰度發布:灰度發布包含兩個方面:前后端灰度發布和移動端的灰度發布。
- 4 零重啟:零重啟要求在不終止服務的情況下完成系統的升級工作,這就要求SaaS平臺具備熱部署的特性,確保SaaS平臺能夠保持7x24小時的持續服務能力。
? SaaS軟件易于使用是相對于軟件使用者而言的,對于SaaS軟件的提供者來說,軟件的復雜性,安全性和可用性都面臨者全新的技術難題,克服這些問題并不容易。作為SaaS軟件的實現者,不能看著油漆是干燥的,就想當然的坐上去,在油漆真正干燥前,一切都是脆弱的,需要耗費大量的時間去處理諸多問題,才能讓用戶放心的坐上去。
? 市場對于SaaS軟件的需求逐年遞增,各種類型的SaaS軟件產品也層出不窮,但真正成功的SaaS軟件卻鳳毛麟角。究其原因,主要還是SaaS化的軟件并不是簡單的將傳統軟件改造成多租戶架構那么簡單,用戶對于易用性,集成性,安全性,靈活性和定制性的要求越來越高,作為SaaS軟件的實現者和提供者,需要付出比對待傳統軟件更多的精力,更嚴苛的要求,更謹慎的考慮,才能正確認識到實現SaaS軟件將要面臨的技術難題與挑戰。
? 基于云計算的SaaS軟件交互模式,其多租戶,多平臺環境,高并發等特點給SaaS軟件的實現帶來了諸多的技術難點,作為SaaS軟件的締造者和提供者,需要全面和謹慎的考慮和處理這些技術問題,方可縮短軟件承諾與用戶期望之間的差距。提前識別并跟蹤不斷變化的需求與技術走向,謹慎的考慮架構與實現之間存在的問題,才能在打磨出一款有商業價值的SaaS產品。