Inevitability of Multi-Tenancy & SAAS in Product Engineering
an in-depth overview of the SAAS requirements and introduction multi-tenancy by Prashanth B Panduranga
2. Servitizationof productsis abouttransformingproductsintoservices. Services are an integral part of
mostproducts. Itis importantto notethat in the services economy that we live in, enterprises have an
emphasizedfocus on services. This Blog talks aboutsomeof the mostimportantSAAS requirements and
providesinsightinto somearchitectural considerations, while introducingconceptssuch as Multi-
tenancy.
Before getting deeper into SAAS, let’s take a cursory look at the productlife cycle. The productlife cycle
consistsof the following steps:
• Requirement
• Usability Engineering
• Architecture andDesign
• Prototyping
• Development
• Testing andQA
• Documentation
• Deployment
• Support
• Maintenance
SAAS affects every step of the productlife cycle quite significantly, some more thanthe others. Most
impacted steps in my view are deployment, supportandmaintenance. Thefollowing steps extendsthe
life cycle.
• Evaluate
• Purchase
• Provisioning
• On Boarding
• UsageTracking
• Monitoring
• Billing
• Updates
3. Figure 1 Extended SAAS Life Cycle
SAAS development imposes an architectural paradigmshift. The following diagramrepresents a few of
the features that cloud introduces/enhances. I shall notbe covering all the features thathas been
represented in the diagram below, however feel free to Email me at Prashanth.panduranga@gmail.com
with any questionsyoumighthaveand will try andrespondat the earliest.
4. Figure 2 Cloud paradigm shift
So what is SAAS?
Software as a Service: Is a software licensing and delivery model, in which the software is licensed on a
subscription basis and is centrally hosted. It is sometimes referred to as "on-demand software". SaaS is
typically accessed by users using a thin client via a web browser.One of the biggest selling points for
these companies is the potential to reduce IT support costs by outsourcing hardware and software
maintenance andsupporttotheSaaSprovider-- Wikipedia
While any software product delivered as service can be called so, enterprises building SAAS need to
build aroundrequirementswhich makesit easier to deploy, maintainand support.
While a system can be built separately for each consumer, a single instance where every consumer
sharesevery part of the systemis at the extreme other end. Building a systemwith the right amountof
sharingand reuse is absolutely necessary for a successful implementationof a SAAS system.
Let’s first look at SAAS requirementsthat are importantarchitectural considerations:
SAASis built tobe consumedtypically by morethanoneconsumerandhenceneedssegregation
built in place. Datasegregation, service segregation if needed, rules segregation, customization
segregation andmore
Functional Modules: When the application features are built as modules, not all consumers
would want to subscribe to all the modules, obviously every new feature would come with an
Asynchronous
Messaging
Distributed
Caching
Compute
Partitioning Data
Consistency
Multiple
Zones
Parallel
Security
Dynamic Vs
Static Data
Isoloation
Software
License
Model
Performance
Environments
Prod/Non Prod
Storage
Virtualization
Enterprise
Scale
Infrastructure
Global Data
Replication
Elasticity
Automation
Resource
Optimization
Service
Metering
DR
Network
Client
Caching
Big Data
NoSQL
HA
Multi-Tenancy
Instrumentation
Telemetric
5. increased cost. Even when there aren’t cost differences some of the consumersmight choose
notto use few modulesfor simplicity. Needcapability to group consumers by functionalitywhile
buildingmulti-tenantedarchitecture.
Consumer organizations come in various sizes, only certain business units might consume the
service. Few organizations might have 10 users while other organizations might use the same
service for 10,000 users. Let’s say there are 2 modules, one being calculation engine and the
other analytics engine. One consumer might have 70% of users using calculation engine and
40% of users using the Analytics service, while another consumer might have 90% users using
Analytics engine, such variance when the user base is large will need special consideration for
grouping customersbased onexpected usage patterns.
Enterprises create multiple modules based on the functionality, however there are lot other
considerations such as performance, workload, number of users using the system, scale etc
which imposes different subscriptionlevels –standard, premium, etc.
Consumersofthe services while usingthe features also would like to limit the spending, onthe
other side Enterprises would like to ensure that there are restrictions on the number of users,
licenses etc basedon the cost model or for performance reasons, for technical reasons or due
to operationalreasons. This imposes different usage limitations.
With Various consumers having different requirements, the Enterprises need to cater for
different SLA’s (Service Level Agreement). Examples include: Availability, Downtime, Disaster
Recovery, Business Continuity, mean time to repair and respond, clearly defined escalation
paths, uptimes, back up, upgradetimes and more.
InSAAS productswhere new consumersoruserscan join at any time, the productshouldallow
provisioning capability. While registration of users are examples of self-registration, there are
scenarios in which consumers are organizations and need extended functionality to use the
system such as administration, provisioning for the organizations users etc. On-Boarding the
customers can be built as separate modules, some of these could mean setting up new
infrastructure, network etc. involvingvery high complexity.
What’sa user experience without customization?Mostorganizationswantstheiremployeesto
have a similar experience, look and feel, ease of use, etc. White labelled solutions, well
integrated solutions, Single sign-oncustomizationshavevariousflavour to it. Application need
to provide the capability such as adding or removing features, changing themes, logos,
sometimeseven code or script. Movableweb partsandmore. This doeshavequite asignificant
architectural impact and the amountofallowable customizationsneeda careful consideration
When there are multiple consumers the maintenance cycles need to be carefully architected
and managed, be it upgrade, back-ups, downtimeor other maintenance tasks. The complexity
increases when the availability of the system is expected to be 24 X 7 and further increases
when the users are geographically distributed. All data must be preserved when an product
update/upgradeis performed.
With multiple consumers and their expectation of the feature upgrades being different,
handling and managing the changes during product launch/feature updates will be quite
challenging.
When there are multiple consumers and shared architecture, isolating the issues and
troubleshooting gets more complex if not handled correctly. Monitoring activities of all the
consumersand at all tiers and levels is key.
6. While providing self-service and other facilities, the scope for automation in cloud based
systems can go far and beyond, such as auto provisioning the infrastructure, auto scaling,
ensuring security across tenants, on boarding, rules and other tasks, tasks involved in
maintenance, tasksinvolvedinloadbalancing, checking for conformity of systems, checkingfor
latencies, checking for performance bottlenecks, configuration management changes,
monitoring and other tasks. While the need for automation is undeniable, finding the right
balance of automationis key
Evaluatingproductsisnotonly a requirement of SAAS, howeverwith the variationsin features,
confusion to an extent in licensing models, and lot of factors impacting the usage, more and
more users want to evaluate extensively before committing to software for longer periods.
Introducing features such as Free trial, and either providing all features or restricting certain
features for the free versions, mightbe need from an enterprise pointof view and enabling all
the abovefeatures for the evaluation version might be a consideration
Involvingthesales force, while mightnever lose its charm dueto personaltouch, the capability
toupsellandcross sell via thesoftware itself iskey tothe growthandhencemostSAASproducts
include the purchasingcapability builtin.
Enterprises need an option, whichallows extending core capabilities such as processing,
storage etc. ondemand, this feature is also called as “Capacity onDemand”.
Apart from the abovementionedmonitoringcapabilities, Usage Trackingby itself is quite
important. Thisprovidesinsight for the enterprises onthe usage of different parts of the
systems, andanalyzefor further development.
The productshouldalso haveinbuilt Analytics.
Billingtheconsumersbasedonthe subscribedmodels.
Capability to offer different packages atdifferent prizes. Prize catalogue and capability of tying
the same to the subscription models, capability to change the models and record the usage
underdifferent models at different times.
Individual consumers do not want the activities of other consumers to affect their use of the
system. Isolation ofeachconsumeractivity in a shared systemis important.
Consumers need to be sure thatother consumers cannotaccess their data. Data Privacyisone
of themostimportantfeatures. Thiscan evenextend tothelevels of necessity of the databeing
with in a particular geographic region, the regulations around the sanitization of certain data
andmore.
With multiple consumers, each consumer need to have their data secure and private to their
usage. The data needs to be protected both from other consumers using the system and
external public.
Exclusivity:Consumers wantthe applicationto appear asthoughthey have exclusive use of it.
Someconsumers want the applicationto be constantly available, while someconsumersmight
want the application available during working hours, these however will be defined with
guarantees in an SLA, making sure that the software meets these availabilityrequirementshas
architectural considerations
Whether the application is being shared or not, the consumersexpect, the applicationto scale
and meet their expected demand. Some of the software such as ticket booking etc can have
very sporadic scaling demands, Spikes with very little lead time, while other software’s might
haveknownlevels of scale demand. While the demandoccursthe applicationscales up or out,
naturally if the subscription is usage based the cost goes up, consumers will also want the
7. architecture to consider these sporadic nature of scaling and scale down immediately or
gradually and thusreduce costs.
An enterprise consumer if is willing to use a system not deployed on premise, has cost
considerations. Thecost hastobelower thandedicated applications. The cost modelhas tobe
relatively easy to understand, anticipate/estimateanduse.
Large enterprises are geographically distributed witha wider global reach. Productshostedand
consumedonlinenaturally isexposedtotheglobalreach. Consumersinonegeographiclocation
accessing content and data hosted in another geographical location will have performance
impact. While implementing CDN’sfor static content, to replicating data and other content to
multiple locations introduces complexity at different levels. However performant application
requirement precedes thosecomplexities.
Most software products aren’t self-contained. The data being used for the product could be
shared across business or would need to integrate with other products, the system needs to
have advanced integration capabilities such as adapters to known products or flexible
architecture which enables easy integration.
The SAAS product might be built with a pre-configured database, self-contained data or
dependent data. The product might also be built in such a way that it does not have its own
database but rather works on any consumer database. It might also need to integrate into
variousunstructureddata. SAAS might imposevariousstorage models orhybridmodels.
Omni-Channel: The presentation layer created should work on any device the consumer
choosesto use.
Someof the other general architectural requirements are:
Capability to work on Hybrid Cloud environments – While it is an architectural decision, some
enterprises have hybrid/multi cloud environments as their DR/BCP strategy which might force
thoserequirements.
Fault tolerantsystem
Distributedcomputing
Globally located Data centres
Stability
Security
ALM
State management basedon chosenstate managementstrategy
Caching
Rapidly roll outnew features for existing services
Regulatory constraints
Performance
Reliability
Maintainability
Polyglotpersistence
Flexibility
Configurability
Usability
8. Portability
Conformanceto Standards
Internationalizability
Responsive
The cost advantage of using SAAS is in using a shared model. Multi-Tenancy is an architectural pattern
which enables multiple consumers share resources, be it servers or database or other components that
makesup the product. Application and databasecan be of a single instance deployedon multiple servers,
or multiple application instances with a single database, there are a lot of different ways SAAS can be
architected. As an example: Salesforce handlesmulti-tenancy in the all of the following components/tiers:
Kernel:which is theforce.com PAAS, Metadata-drivenKernel, runtimeengine, polyglotpersistence –which
includes transaction engine, queues, in-memory data and metadata caching, search engine, data model,
metadata, indexes, relationships, filed history, partitioneddata, metadata andindexes, App development
– A browser based development framework, API, Query Languages, Processing, Query processing, search
processing, index processing, bulk operations, schemamodifications, etc.
At this point, let’s look at couple of famousquotesonmulti-tenancy
“Multi-Tenancy is a requirement for a SAAS vendor to be successful” – Marc Benioff, CEO,
Salesforce.com
“It’simpossibleto be successful in SAAS without multi-tenancy”– Treb Ryan, CEO, OpSource
Managing product hosting, servers, storage, load balancing, network, data, code and their versioning,
updates, maintenance, etc. especially when there are multiple consumersinvolvedgetscost effective only
via sharing of underlying resources. Asimpleanalogy is, anindividualhousecompared toan apartment. An
individualhousetohaveamenitiessuchas24 X 7 generator, swimmingpool, tenniscourt,badmintoncourt,
basketball court, Gymnasium, children’s play area, security etc. would be extremely expensive and
unaffordable. However, in an apartmentsince youare sharing the facilities with other tenantsit becomes
much cheaper and affordable. Concept of Multi-tenancy in SAAS is exactly the same and while there is
complexity involved, adoptingthe same is inevitable.
It is important to note that Multi-Tenancy is more vulnerable to failure and it effects larger number/all
consumersthanin a single instancearchitecture.
I wouldlike toemphasizethat multi-tenancy isnotjust aboutsharingthe“database”as perceived by lot of
people, Presentation layer, Service layer, Queue, cache, Virtual Network, Storage, throttling, rules
processing, batch processing, query processing, etc. any architectural tier can be architected to be multi
tenanted.
Cloud helps with lot of the above mentioned requirements, and can be utilized effectively in various
different ways. To know more or if you have questions you can reach me at
Prashanth.panduranga@gmail.com