1 / 55

... - PowerPoint PPT Presentation

  • Uploaded on

. Point of Sales. Accounting. Customer Relationship. Document Management. E-Government. Human Resource. Content Management. Software-as-a-sevice (SaaS) is REAL. Microsoft Innovation Center. for EMEA ISV Development. SaaS incubation program. Michel Baladi

I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
Download Presentation

PowerPoint Slideshow about '...' - shirin

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

Microsoft Innovation Center

for EMEA ISV Development

SaaS incubation program

Michel@baladisoftware net

Michel Baladi

  • Advisor for architects, CTO’s etc

  • Owner/CTO for SaaS ISV startup

[email protected]

Architectural impact
Architectural Impact


Very Visible Business


Business Opportunities

Architectural Challenges

  • Serving the “long tail”

  • “try before you buy”

  • Subscription model

  • Business SLAs

  • Multi-tenancy / Scale

  • Self service / Automatic provisioning

  • Metering / Billing

  • SLA Monitoring/Enforcement

Often Overlooked

Architectural Challenges

The saas architecture shift single instance multi tenant

Multi-tenant efficient



The SaaS Architecture ShiftSingle Instance – Multi-tenant




Economy of Scale

Simpler Management

SLA per tenant

Data Separation

  • The right balance is determined by:

  • Business model (can I monetize?)

  • Architectural model (can I do it?)

  • Operational model (can I guarantee SLAs?)

  • Regulatory constraints (can we share data?)

High level application architecture
High Level Application Architecture


Security Services

Smart Client




Meta Data Services

Process Services

Business Services

Meta Data


File System

Customization trade off
Customization trade-off

  • Market may want

    • UI/Branding

    • Workflow

    • Data Model

    • Business rules

    • Domain-specific

    • Multi-tier (ISV, reseller, customer)

  • Operations prefer zero customization

    • Only configuration

Metadata driven instances
Metadata Driven Instances

Application Configuration and Designer Tools

Virtual application instance

User Interface

Workflow and Rules

Entity Model


Meta Data Service

Multi-tenant efficiency

Application Runtime (same code image)

Tenant Profile


Configuration Data

Farm of deployed application runtime components


Templatizing configuration
Templatizing Configuration

Design Time



Designer Policy Enforcement Engine

Runtime Policy Enforcement Engine

Security, Fairness and Halting Policies


Standard Customers

Runtime Metadata

Runtime Metadata

Premium Customers

Runtime Metadata

Application Instance

Trusted Partners

Templatized Designers

Configurable ui
Configurable UI

  • Well understood topic on Microsoft Platform

  • For Web Apps:

    • ASP.NET 2.0, AJAX: CSS, Masterpages, Themes etc.

  • For Windows Apps:

    • Use „Windows Presentation Foundation“ (WPF)

Configurable workflow
Configurable Workflow

  • Workflow Foundation

    • Uses Markup

    • Can be stored, manipulated, executed on a per tenant basis

Workflow customization design time

Hosted Designer

Loads “current” workflow definition (from .xoml file)

Manipulates workflow object model

Serialize modified object model

Calls Web Service to update .xoml

Customization type

Behavioral (decisions/rules)

Structural (activities)

Workflow Customization: Design Time

Workflow customization runtime

XAML Activation

Workflow Customization: Runtime

  • publicWorkflowInstance CreateWorkflow

    • (XmlReader workflowDefinitionReader);

Meta data data model extension

we want to track customer colour preferences

we want to keep track of customer visits online

our customers have peculiar address formats

we need to track customer history by product

Meta Data: Data Model Extension

Configurable data
Configurable Data

Tenant B

Tenant A

  • Challenges:

    • Defining custom fields and storing custom data for each tenant.

    • Business logic that can handle custom fields

    • Presentation logic that can handle custom fields

Catalog Item

Catalog Item

Product ID


Category ID

Product ID


Classification Code

Custom fields data and definition
Custom Fields Data and Definition

  • Meta-data/data dictionary required

  • 3 general approaches:

    • Separate database for each tenant

    • Shared database, a canned set of extended fields

    • Shared database, any number of extended fields

  • Tradeoff between each approach

Dedicated tenant database
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

Tenant 1

Tenant 2

Tenant 3

Shared database fixed set of extensions
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 pre-defined custom fields

Same database variable custom extensions
Same database, variable custom extensions

  • Approach

    • All tenants in one database

    • Variable number of custom fields

    • Name-value pair in separate tables

  • Advantage

    • “Unlimited” number/option for custom fields

  • Tradeoff

    • Increase index/search/query/update complexity

  • When to use

    • OK to co-mingle tenant data

    • Custom fields are high value features

    • Difficult to predict custom fields

Data a practical advice
Data: a practical advice

  • Consider design for the most general case, the single shared database

  • If a customer wants isolation, just deploy him on a single instance

  • Pro: This approach gives you the greatest flexibility.

  • Con: More complex queries, may affect performance

Implication on identity architecture
Implication on Identity Architecture

  • Use identity federation to achieve SSO

    • How to manage trust – PKI

    • Standard-based products (WS-Federation, SAML etc)

  • Use claims-centric architecture to communicate access policies

    • Signed attributes and assertions to rely on roles and access rules information:

      • E.g. authorized to purchase if amount < 50

Access control
Access Control

  • Some Platform Technologies to consider

    • ADFS

    • Windows Role Based Access Control (RBAC)

      • Authorization Manager (AzMan)

Meta data considerations
Meta-Data Considerations


Workflow and Rules

Data model extensions

Access Control

… other domain specific considerations…

Sample application

Microsoft hasdeveloped a sample application („Litware HR“)

Addressing all the major architectural challenges of a SaaS application for the „Long Tail“

Is available for download on MSDN


Sample Application

Litware hr a sample saas app
Litware HR: A Sample SaaS App

Retail Shoe Chain

Music School

Contoso Customizations:

UI:“Contoso Orange” L&F

Data:New “Job Level” Field

Workflow:Recruitementbased on Job Level

Roles and Access:HR Manager, CEO

Fabrikam Customizations:

UI:Fabrikam L&F

Data: New “Audition Required” Field

Workflow:based on “audition required”

Roles and Access:Audition Judge, Owner


Web Interface

Web APIs

Web Interface

Public site

Private site

Unauthenticated access

Search & Apply for jobs

Authenticated access

Configuration & Post jobs

Operational Platform

“Internal” SaaS Hosting Platform

Provisioning (try before buy)

Billing (not implemented)

HR App (Recruitment)

Single Instance Multi Tenant

Scaling application
Scaling Application

  • Stateless

    • Improve service memory footprint

    • Improve ability to load balance

  • Asynchronous I/O

    • Do useful work while waiting for I/O to complete

  • Resource Pooling

    • Threads, network and database connections

  • Maximize concurrency

    • Minimize exclusive locking

Scaling data
Scaling Data

  • Data Partition (horizontal)

    • Divide subscriber data into smaller partitions to meet performance goals

    • Schemes: hashing, temporal, etc.

  • Dynamic Repartitioning

    • Automatically repartition when database size reaches maximum size

The ecosystem

Consumption Architecture

Application Architecture

Delivery Architecture

The ecosystem

Saas hosting platform

SaaS Application

SaaS Application

SaaS Application

SaaS Application

Call Center Support System

SaaS Hosting Platform Runtime

Access Control

Order Management

Management Agent


Security Log

Management Log

Usage Tracking

Identity Management


SLA Monitoring

SaaS Hosting Platform


Management Alerts





N tiered multi tenancy

Application tenants


Consumer and application tenant


Consumer and application tenant

Storefront(s) at ISV, hoster and/or aggregator

”Nortwind” store-front

”Litware” store-front

Platform tenants


ISV and platform tenant


ISV and platform tenant

”Nortwind” SaaS hosting platform and services


platform run-time instance


platform run-time


Shared platform services

N-tiered multi-tenancy

Additional information
Additional Information

  • Software as Services consulting

  • Software as Services Architectural Guidance

    • http://msdn.microsoft.com/architecture/saas

  • Blogs about Architecture:

    • http://blogs.msdn.com/fred_chong

    • http://blogs.msdn.com/gianpaolo

  • SaaS sample application (for the long tail)

    • http://msdn.microsoft.com/architecture/saas/sampleApp

  • Service Provider License Agreement

    • http://www.microsoft.com/serviceproviders/licensing