Scalability is a desirable property of any SAAS based architecture to have the ability to handle growing amounts of work in a graceful manner. Typically there can be two types of scalability issues- increase in load and administrative scalability. |
SAAS Architecture |
|
Different Tiers |
• Data Storage Tier • Data Access Tier • Application Tier o Identity Management . Separate Identity Management solution. . Authentication using LDAP. . Sun Java Identity Management Suite2 / Microsoft Active Directory. o Application server . What frame-work to use. o Integration Server . How the corporations integrate to the existing data sources. . Build a Web Service API to interact with Corporate data source. . Enterprise integration Server (EI) for corporate data access. . Host an EI Server. . Need to handle the data security for each corporations security needs. o Scalable Communication Server . Inbound and outbound communication. . Notify data changes. . SMTP (email), SMPP (SMS), SNPP (pager) o Other Services using ESB • Distribution Tier o Distribution of Load to different servers (load balancers). • User Tier • Administration o Metering, invoicing and payment processing o Handle within the same SAAS system or a different system. o Can be outsourced if this is a separate sub-system o Monitor Resource Usage, back-up, recovery o How does the support work. . Need a 24/4 support. . Need to integrate with a ticketing system to track the issues and resolutions. . Help- online video, discussion groups, knowledge base, user groups |
A well-designed SaaS application must be scalable to a large number of servers, each running one or more identical instances of the application. The following are some of the design guidelines:
SaaS applications, which often use the same databases to serve thousands of customers, are particularly susceptible performance degradation, and therefore it's important to plan adequately for growth. One fairly simple way to scale a database is through partitioning, dividing the data into smaller "chunks" in order to improve the efficiency of queries and updates. Consider developing a partitioning strategy to determine the best way to partition your data. Write your database operations in such a way as to maximize concurrency and minimize exclusive locking. For example, don't lock records when performing read-only operations. Design the application to conduct I/O operations asynchronously, so that the application can perform useful work while waiting for input and output to complete. Pool resources such as threads, network connections, and database connections; this helps maximize your computing resources, and it improves your ability to predict resource usage.
Comments