Moving to a Software-as-a-Service model isn’t easy, as we highlighted last week. Quite a few design and engineering considerations must be taken into account. Of course, a minimalist approach can be taken while building a SaaS product and that can work very well. For example, Tomcat, MySQL, XML, Struts 2.0, POJO and JSP are all it takes to build a SaaS application/product using Java technology.
However, there are additional techniques and tool-kits that can be made use of when SaaS-enabling a product. While these techniques and tools have not been developed specifically for SaaS and have been around for quite a while, they can come in handy when building enterprise-class SaaS products.
Some of the useful technology concepts to keep in mind, when engineering SaaS applications, are SOA (Service-Oriented Architecture), Web Services, Sharding, SODA (Service Oriented Data Architecture) and AOP (Aspect Oriented Programming).
Today, we’ll elaborate on Sharding, which is basically Entity partitioning. From a SaaS viewpoint, sharding can allow you to have parts of the data stored in different databases, spread across multiple servers. For example, user ids 1-100,000 live on one instance while the next 100,000 is stored in another instance. Tenants A and C can be stored on one server, while data for Tenant B is on another server.
Though sharding is regarded as partitioning, it is not just that. It is more than that. One can also split tables among different and smaller databases on different servers. Though sharding is not perfect, it offers high availability and faster queries of data. This also ensures more bandwidth, which is very essential for SaaS products, as the number of users at any point of time will be huge.
We will continue to highlight the different technologies and tools that can be made use of to develop SaaS products in the coming weeks.