ARC219
Software As a Service (SaaS): The Good, the Bad and the Ugly
Gianpaolo Carraro Architecture Strategy Team
[email protected] http://blogs.msdn.com/gianpaolo
DC-13
Developers Strongly Cautioned
Strong Architectural Language Limited Visual Studio Wizardry
What is SaaS? Software deployed as a hosted service and accessed over the network (Internet). as opposed to: “on premise”
“SaaS Stack”
SaaS Impacts the Entire Consumption Cycle : In particular in the L.O.B. application space
Deployment From: From: Customizatio Long Eval Process n Purchase
Enterprise
To: To: Try before you buy Configuratio n
ISVs
Enable: Try before you buy
Enable: Configuratio n (no custom code)
Management From: Reliance on internal IT To: SLAs Enable: SLA monitoring / enforcement
Importance of Economy of Scale
Economy of scale
Hardware Cost at Provider
ISVs
People Cost at Provider
Enable: Economy of Scale
The Long Tail $ / Customer
Dozens of markets of millions or millions of markets of dozens? Your Large Customers
What if you lower your cost of sale (i.e. lower barrier to entry) and you also lower cost of operations Your Typical Customers New addressable market >> current market (Currently) “non addressable” Customers
# of Customers
Monetization Options Subscription (monthly fee per seat) Transaction based pricing (profit sharing) Ad-based revenue (e.g. pay per click)
ISVs
Enable: Multiple Monetization Schemes
Humans are costly Reduce human intervention No Direct Sales (but referrals and breadth marketing) Self Provisioning Self Customization Delegate Administration Automatic billing Enable: ISVs
Impact on YOUR architecture
Requires Architectural Shift: Single instance – multi tenancy
Multi-tenant efficient Sharing resources (One instance to run them all)
Customizable Customization through configuration
Scaleable Many applications will require Internet scale
“Basic” SaaS Maturity Model
Share vs. Isolate SLA per tenant Data Separation
Share Isolate
Economy of Scale Simpler Management
The right balance is determined by: Business model (“can I monetize isolation?”) Architectural model (“can I run on a single logical instance?”) Operation model (“can I guarantee my SLA without isolating?”) Regulatory constrains “data must be physically separate”)
High Level Application Architecture Smart Client
Browser
Presentation
Meta Data Services
Security Services Process Services
Business Services
Meta Data
File System
Databases
Directory Service
Meta Data Service
UI/Branding Scope
Workflow/Business Rules Data Model Extensions Access Control
Domain-specific ext. 0 or more scopes
Customizable: UI/Branding Workflow Data Model Business rules Domain-specific
Scope: Nested hierarchy of customization Inheritable E.g. Enterprise, department, user levels
“Peopleware”: a multitenant HR application Powered by SuzSoft www.suzsoft.com and Matias Woloski http://staff.southworks.net/blogs/matiaswoloski
High Level Scenario Contoso: Uses PeoplewareHR
Fabrikam: Uses PeoplewareHR
Needs to customize:
Needs to customize:
Data Model
Data Model
Business Process
Business Process
PeoplewareHR: Software to manage training programs Maximize economy of scale: Single Web Server, Single Workflow Engine, Single Database
Multi-tenant architecture
Act 1: Multi Tenant Data Model
Extension Value Pairs Approach
Offers “Unlimited” number/option for custom fields Extension-value pairs in separate tables Metadata table keeps track of data labels and data types for extensions
Metadata Table Tena nt ID
Extensi on ID
764
6729
764 783
Data Tables Tenant ID 764
Name
Score
Ted
56
Record ID 893
673
John
32
Null
783
Sally
99
564
Extensi on Label Status
Dataty pe
Record ID
ntext
7634
StartD ate
dateti me
8903
Univer sity
ntext
Value
893
Extension ID 6729
893
7634
5-29-2006
564
8903
UCLA
Trainee
Extension Value Pairs Advantage “Unlimited” number/option for custom fields
Tradeoff Increase index/query/update complexity and delay
When to use OK to co-mingle tenant data Custom fields are high value features Difficult to predict custom fields
Shared Database
Fixed Set of Extensions Approach: All tenants data in one database. Pre-defined set of custom fields
Advantages: Easy to implement Maximize number of tenants per database server
Tradeoff: Tendency to results in sparse table
When to use: When data co-mingling is OK Easy to anticipate predefined custom fields
Tenant ID
F1
F2
C1
C2
C3
345
Ted
53
Null
p aid
Null
777
Kay
34
23
Null
Null
784
M ary
45
Null
Null
Null
345
Ned
21
Null
owe
Null
438
Pat
26
Null
Null
yes
Dedicated Tenant Database Approach: Separate database for each tenant Database maintains data dictionary
Advantages: Easy to implement Meta data identifies database instance for each tenant
Tradeoff: Number of tenants per database server is low Infrastructure cost of providing service rise quickly
When to use: When tenant has data isolation requirements Able to monetize the data extension/isolation feature
Tenan t Ten ant Ten ant 1 2 3
Scaling Data Data Partition Divide subscriber data into smaller partitions to meet performance goals Schemes: hashing, temporal, etc.
Dynamic Repartitioning Automatically repartition when database size reaches maximum size
http://msdn.microsoft.com/architecture/learnmore/default.aspx?p http://msdn.microsoft.com/architecture/learnmore/default.aspx? =/library/en-us/dnbda/html/ScalOutSQL.asp
Act 2: Multi Tenant Workflow
Workflow Customization: Design Time Hosted Designer Loads “current” workflow definition (from .xoml file) Manipulates workflow object model Seriliaze modified object model Calls Web Service to update .xoml
Customization type Behavioral (decisions/rules) Structural (activities)
Workflow Customization: Runtime XAML Activation
public WorkflowInstance CreateWorkflow (XmlReader workflowDefinitionReader);
Act 3: Running The Application
Demo: Next Steps Make it a publicly available “sample application” Probable additions AJAX UI (Atlas) / Office integration Single sign on Integration with “on premise” L.O.B. (legacy) applications Scale out More sophisticated cross tenant data access control Hooks in “shared services” (billing, monitoring)
Shared Services SaaS Provider
Shared Services: e.g. Billing, Metering, SLA Monitoring… a.k.a. SO Infra, Service Delivery Platform, OSS/BSS
“ Cl ass ic” Ho sting CPU -Sto rag e-Ba nd wid th As provider: do you build or buy the hosting?
SaaS Hoster
“Classic” Hoster
Ask the Zen Master: SOA vs. SaaS
Resources Blogs http://blogs.msdn.com/gianpaolo http://blogs.msdn.com/fred_chong
Web Sites http://msdn.microsoft.com/architecture http://msdn.microsoft.com/isv http://www.skyscrapr.net
© 2006 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.