Observing SaaS based application architecture in cloud computing will enable developers build scalable, fault-tolerant applications at much lower costs and on a pay per use basis. Application design for SaaS or cloud infrastructure requires a number of key considerations to leverage the benefits delivered by the cloud. The design of the traditional applications considered limited resources.
However, applications in the cloud can take full advantage of almost unlimited resources, so architects should consider this change when designing applications on the cloud. When developing SaaS application, the development team should consider these factors to ensure a quality product and viable business.
SaaS Based Application Architecture – Best Practices
Self Service & Personalization
In your design, keep in mind that a SaaS application must be self-serviced. This means that anyone interested should be able to register and start enjoying the service without requiring any help from the admin or support team. In addition, details regarding set-up, including usage of the application, should be availed to the user on the SaaS application itself.
Moreover, the user should be able to enjoy high-level personalization, making changes to alter the look and feel of the application as per their requirements or according to personal preference. Even end-users for a given tenant should be in a position to update some aspects of the application’s look and feel.
This is an architecture whereby a single instance of a software app is meant to serve multiple customers. Because of multi-tenant architecture, developers are able to leverage common infrastructure and even code base to enable them expand their services and make it economical and much easier for them to maintain this application.
A SaaS application must be capable of integrating with other applications. A standard set of APIs should be made available to enable integration with other SaaS and/or on-premise applications.
A highly scalable application with good performance should always be available and able to serve tenants of any size. Since users will be accessing it over the internet, the application must have good performance to enable excellent rendering, data querying, and various transactions.
Security and Compliance
The responsibility of the SaaS application and hardware security solely lies with the application developer. He should ensure that multiple tenants on a shared infrastructure have their data virtually segregated and made accessible to those individuals intended to access it. The issue of security remains a major concern for organizations before they adopt SaaS applications.
Why Multi-tenancy is Critical for the Success of SaaS
Subscription for an application over the internet alone is enough to qualify an application as SaaS. However, this point only is not sufficient to differentiate it from any other ASP application. So, for practical differentiation, the application must be multi-tenant.
When designing SaaS based application architecture, remember that the success of a SaaS application depends on multi-tenancy, which helps in leveraging the efficiencies of underlying infrastructure, including application code, by enabling sharing across multiple clients. By sharing resources, the efficient usage of such resources also reduces the costs of operations, so that such resources can be channeled elsewhere.
In multi-tenant environment, one has to uniquely identify each tenant in order to segregate multiple tenants. To do so, define unique tenant ids for every tenant at both the application and the database layer, of course depending on the level of multi-tenancy. Both the tenant ids and user ids are used in identifying the user gaining access to the application, restricting users to be able to access only the data they have the right permissions.
For shared tenancy, developers can design the application to accommodate separate schema for every tenant or to have the same schema for all tenants. This choice mainly depends on the database selected. For instance, it is possible to have multiple schemas in MS SQL Server and Oracle databases, but MySQL database has no concept of schema. Regardless, the choice of tenancy model would depend on the nature of SaaS application, developer’s skill set, SLAs, Time to market, complexity, etc.
Data security is perhaps the major concern for many customers and this keeps them from migrating to the cloud. Security of the application and that of data residing within the application is a high priority assignment for any SaaS developer. You can provide security in the SaaS applications if you virtually isolate the data using tenant ids in the database. However, it is the responsibility of the developer to ensure the data accessed by the end user is restricted to that particular tenant only.
While traditional applications restrict the number of users accessing the application, SaaS application has no restrictions regarding the number of users accessing the system and this number could be virtually unlimited, so the application must be inherently scalable. Both the application and database must achieve scalability.
(a) Application Scalability
This can be achieved by:
Scaling up or upgrading and moving the application to a more spacious /powerful server
Scaling out or adding identical servers to come and handle the load. Scaling out is easy for application hosted on the Cloud
(b) Database Scalability
For a SaaS application, the size of database will keep expanding with additional users and increasing transactions. Note that an increase in data will obviously impact database performance, especially the high querying and transaction times, which will result in poor user experience.
Consumers of software application have been having the application on-premise (on their own premises), and it has been the responsibility of the internal IT teams to monitor and maintain the application. But with SaaS application it is much different; the responsibility of monitoring, as well as maintaining the application, lies squarely with the developer.
The application should carefully be monitored for downtimes, as well as performance issues, as slow performance result in poor user experience. The developer needs to put in place monitoring tools and processes to ensure high availability of applications.
A carefully designed and well-built SaaS application can offer a win-win solution for both the application developer and the client. SaaS applications present a whole new world of unlimited opportunities, but a number of considerations are critical to ensure properly designed SaaS based application architecture that takes care of security and scalability issues, is easy to use, and leverages on the economies of scale.