Cloud Strategies works with client’s software development organizations to address the many new requirements of development of software for SaaS. We assist software organizations develop the appropriate architectures and processes for SaaS development, and aid in the transition of existing software organization to build SaaS applications.
Software Development for SaaS
Software development is substantially different for SaaS companies. Product cycles are much shorter, sustaining costs are dramatically reduced without the need to maintain multiple older releases, and the technology used must be more current. Existing software companies with development staff more comfortable with client/server than modern web technology may need to enhance their development personnel to improve their capabilities to do multi-tenant, web-centric software. Companies may need to move away from legacy technologies such as Flash, Silverlight, and Windows Presentation Foundation (WPF) in favor of newer (if less mature) technologies such as HTML5, CSS3, and JavaScript.
New products will almost exclusively employ HTML5 technology as a key component of their client software which is well suited for SaaS enablement. Many software companies have been reluctant to adopt HTML5 for their enterprise applications because of the high (40%) penetration of XP in the marketplace which does not allow a Microsoft browser supporting HTML5.
SaaS products will generally want to have APIs to allow development of additional capabilities by VARs and third party developers, integrate with other software packages especially analytics and Big Data applications, and provide services to mobile applications.
Server side development has significant new requirements. The performance requirements for SaaS environment where many tenants share the same (virtual) server are much more demanding than on-premise software supporting a single tenant. Multi-tenant shared databases require additional security to logically isolate data from different tenants on the same server.
SaaS security must be more rigorous since access to the application is not controlled by a corporate firewall. Compliance and audit issues become more complex with multiple tenants running in a remote location. In some cases, such as with PCI compliance, the data locality becomes a mandatory requirement requiring software awareness and control of the location of the data.
Software upgrades become more complex because of the desire to upgrade the software without a service interruption, or at worst, during a brief maintenance window. This precludes being able to perform lengthy operations that may occur during a software update such as a lengthy database restructuring. Some SaaS companies such as NetSuite support two releases simultaneously for a number of weeks to allow their customers the ability to transition to a new software release at their timing, though most SaaS companies upgrade all of their clients simultaneously.
Software uptime becomes much more critical as any unplanned downtime potentially effecting thousands or millions of clients becomes much more visible. SaaS software must be architected to be much more resilient from failure and have a low MTTR.
Additional attention must be considered in the SaaS architecture to ensure that software failover (HA) is well designed and the time to recover from any process of data corruption is minimal.
Other software requirements unique to SaaS are the on-boarding process for new tenants and the the billing for tenant use. While there are third party packages to assist in these requirements, they need to be included in the software architecture.
Finally, the SaaS company is now responsible for the operation of the software such as system monitoring including performance, fault detection, intrusion detection and remediation, security, and audit streams. While other software will be used to perform many of these SaaS operational functions, the company’s SaaS architecture must be designed to work well with these tools.
Cloud Strategies can help you navigate through these software development issues.
A more complete discussion of Software Development for SaaS companies can be found in our blog, “Why Software Development for SaaS is Different“.