What differences do developers need to take into account when developing applications on SaaS platforms?
There are a couple of things that developers of SaaS applications should keep in mind, such as:
- Multi-tenancy - By their very nature, SaaS applications are going to provide services to and manage data for a number of different clients and this will likely be done on pieces of shared infrastructure. Therefore, security is a significant concern. As such, applications should be designed to force authentication and require authorization for access to sensitive resources. These capabilities should be designed in from the outset to prevent a user from accessing data from another organization. In many cases, logging should be performed to track access and modification requests in case there is a requirement later on to demonstrate that clients had not accessed each other’s data or to demonstrate the impact of a breach.
- Scalability and Robustness - One of the chief promises made by SaaS providers is that they can handle the problem of capacity management so SaaS application customers won’t have to worry about adding new users or provisioning additional resources. This forces the application developer to think about a set of concerns up-front when architecting their systems. Questions that should be answered include: How will I add additional storage? How will I accommodate spikes in usage? How will I add additional connectivity? And how will I deal with failures in different parts of the system? Architecting these concerns into SaaS platforms from the outset can help avoid outages and painful upgrades later on.
- Configurability - SaaS software platforms are intended to be "one-size-fits-all" applications that serve the needs of a wide range of organizations and users. Developers building these applications should plan for a high degree of configurability from the outset so that users can make the system conform to their specific business requirements. This need for configurability will require extremely flexible dashboards and reporting, but will extend to areas such as field labeling and extending data that can be stored alongside built-in objects.
- Connectability - A major advantage of SaaS platforms is the ability to customize them and to connect them to other systems. Therefore, SaaS developers should spend time up front designing what application programming interfaces (APIs) should be exposed to third party developers who want to extend the capabilities of the SaaS platform or better integrate with other systems used by their organization. This can help to make a SaaS platform much more valuable but must be done with care to avoid introducing serious security issues that could expose the SaaS platform, API consumers and all other organizations using the SaaS platform to risk.
By addressing concerns such as these from the outset, developers of applications on SaaS platforms can begin to anticipate issues and avoid costly software rewrites in the future.
This was first published in July 2012