Skip to main content

SAAS – Scalability Challenges



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
saas-overview
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

    Popular posts from this blog

    SAAS Simple Maturity Model

    There are two architectural models – commonly referred as SAAS Maturity models- that describe the transition of a service to what is called Multi-tenant efficient, highly scalable application. The SAAS Maturity model described by Microsoft has four distinct stages and is illustrated below. Another similar well-known model for SaaS-maturity is known as Forrester-model but adds another stage known as "Dynamic Business Apps-as-a-service". The three key Attributes of a SAAS Architecture: Configurability: Metadata used to configure the way the application behaves for customers Multi-tenant Efficiency : Maximizing the sharing of resources across tenants Scalability: Maximizing concurrency, resource efficiency SAAS Simple Maturity Model (Microsoft, 2006) SaaS Maturity Model (Forres

    SpringBoot : Performance War

    Reactive Systems are designed to address challenges posed by modern software systems - the challenges related to large number of users and high throughput. Reactive systems are expected to be highly responsive, resilient, elastic and message driven. In this article we will: Build a set of fully non-blocking REST API using SpringBoot 2.0, WebFlux and Reactive Redis. Performance test the above Reactive APIs against the traditional non-reactive APIs. The code used in this example can be downloaded from GitHub Step 1: Create a skeleton Reactive WebFlux SpringBoot project Create a SpringBoot maven project using - https://start.spring.io/ Add the following dependencies: spring-boot-starter-web spring-boot-starter-data-redis spring-webflux spring-boot-starter-data-redis-reactive Refer to the dependencies in pom.xml Step 2: Create Domain Objects The demo project uses the domain objects Customer and Account . A customer can have multiple accounts.

    Web Service Framework comparison

    Web Services is one of those concepts made all the more difficult to understand because of the myriad acronyms and abbreviations that are superfluous in any discussion. Covering all the concepts and standards associated with Web Services is a vast topic in itself. There are a large number of standards around Web Services. These standards define the norms of a Web Services implementation and ensure that a Web Services is accessed independently of the client platform. There are numerous frameworks available to select to build web service today. Below is the most widely used ones. Product Does it fit my need? Axis2.0 Apache Axis2 is a complete re-design and re-write of the widely used Apache Axis SOAP stack to build on the lessons learnt from Apache Axis. An advantage of Axis 2 is its support for the binding frameworks XMLBeans. Axis 2 with XMLBeans is widely