Editorials

Multi-tenant Application Resource Separation

Previously we considered the needs of Multi-tenant applications to maintain separation of data in the application and persistence. Separation by schema, vertical or horizontal partitioning, sharding or simple pointers techniques are possible techniques.

Resource separation is also important in multi-tenant applications. Many of us have experienced sluggish performance of applications because a high-demand process is utilizing a majority of the resources available on a some layer of the application.

Microsoft has found this problem to be real and has recently released versions of their Azure platform assuring a more predictable performance profile, at a higher cost.

The problem we face lies in limited resources. CPU, network, and even disk resources are limited in capacity. So when you have a multi-tenant application you have to determine how you are going to share the limited resources fairly. For example, SQL Azure throttles back SQL processes that are taking too many resources on a database server so other processes are still responsive.

The short story is that you need some form of load balancing in a multi-tenant application. You may have to roll your own, purchase an appliance, or utilize a multi-tenant infrastructure with built in load sharing as part of the service.

Are you experiencing the need to share resources in multi-tenant applications or even internal loads? Share you’re thoughts or tools for addressing this issue here online, or drop me an Email at btaylor@sswug.org.

Cheers,

Ben