By Arthur Lawida, Managing Partner
SaaS Accelerator
A couple of weeks ago, I was reading several blogs about SaaS where they claimed that the move to SaaS was very similar to the move to client server technology in the 90’s. The claim was that you could not have a SaaS methodology. They said that having a SaaS methodology was comparable to having a “client server” or “mainframe” development methodology and just didn’t make sense without being tied to a particular application.
I think that misses a major point of cloud computing. SaaS means that “software” is fundamentally replaced by “service”. SaaS is not a software deployment model; it is a fundamental shift in the way we think about providing business solutions.
One of the key differentiators between mainframe and client server technologies, and today’s cloud technologies, is that control of the application has become increasingly difficult. In a cloud or SaaS model, an application is no longer highly centralized (mainframe) or tiered (client server). It has the capability to be fully distributed. Depending upon the requirements and the capabilities of the software vendor, these application parts can be customized, semi customized or not customized and each one can be premise based, on-demand or fully SaaS.
What this means is that in order for an enterprise to deploy a SaaS based application today that maximizes the potential of the cloud, even more rigorous planning must be applied up front. Some of this planning tracks with traditional development methodologies but some of it is new. Here are some thoughts on the “new” areas that we have designed into our methodology:
1. Security: When dealing with sensitive data, how do you insure that the cloud is secure? In ecommerce applications and medical applications there are security standards. If one of the software providers has the appropriate certifications, is that enough?
2. Requirements Analysis: Usually business requirements are prioritized on the basis of their value to the business. In a cloud model, another aspect must be analyzed. Customizing SaaS applications is not straightforward. Each requirement must be assessed in terms of its ability to be customized by the SaaS vendor providing that service.
3. Application partitioning: What parts go where in the cloud? What functions are business critical? Disaster planning takes on a whole new aspect when you have to worry about not just the technical infrastructure but the financial health of each participant of the SaaS application. If they go out of business, what are your recovery options?
4. Indirection layers: To support the above requirement, what data and application indirection layers need to be created by the enterprise so that a particular software service of the cloud can be easily replaced by another service if the original service becomes unavailable?
5. Quality Assurance: QA, especially integration and system testing, must take on the role of becoming knowledgeable and proficient in testing disparate software services.
6. Operations: How does the enterprise provide things like uptime guarantees, training, support and user documentation for an application spread among several service providers?
To summarize, I think there are a core set of issues that make a SaaS deployment methodology useful regardless of the application. Our methodology works to mitigate risk and increase the chances that the enterprise will be happy with the result.
SaaS is not just another software deployment architecture. It is much more like the move from structure programming to object oriented programming except at a meta-level. More to come on that point because I have found a lot of thinking has gone on around service oriented architectures at the single service level but I cannot find much that views entire applications as a services linked together to create a business solution.
 
