This action might not be possible to undo. Are you sure you want to continue?
, where customers (referred as tenants in the SaaS vernacular) and their end users have a direct relationship with the company that not only built the application, but that also hosts it. A SaaS application could be hosted on physical infrastructure in some data center, or even in the cloud. Creating a SaaS offering rather than a packaged software offering opens up a myriad of architecture and engineering questions such as: What‟s the best way to architect my SaaS application so I can fit as many tenants as possible on a given server footprint without sacrificing quality? Clearly, being able to offer a service to 1,000 customers on 30 servers is more cost effective than offering the same service to the same number of customers on 500 servers. How can my application take advantage of new server capacity as it gets introduced to my SaaS applications underlying hosting infrastructure? How do I provide application level high availability? How do a patch my software or release a new version if I have hundreds or thousands of customers or am running a farm of servers or virtual machines (VMs) to host different parts of my application? How do I manage provisioning tenants to the service? How do I track what a tenant owes me for access to my SaaS offering? Furthermore, how do I price my offering so when a tenant is provisioned there is some agreed upon charging mechanism?
These questions have a profound impact on an applications architecture and implementation specifics. For example, to achieve high levels of server utilization, many SaaS applications leverage advanced single instance multi-tenant architectures (take a look at the Wikipedia entry for Multitenancy for an in-depth definition).
linear scale-out across your server farm.g. server farm management for a network of peer based nodes. Windows Communication Foundation (WCF) web services. This means that parts of your application. can be written as if they were for one customer (e. storing row data naively with no notion of customer ownership) but when running on SaaSGrid.g. your database will be instrumented to support multiple customer data storage in a way that is transparent to your application queries). and provisioning (either by you or through pre-built storefront widgets that allow your customer to self provision) Enterprise class server mechanics such as automatic high availability.. user/account management. Instrumentation and transformation engines that virtualize your application‟s components across tenants so that you can achieve high efficiency. such as your database.LOGICALLY ? SaaSGrid is an application server and container for SaaS applications where application components and tenants are both first class citizens of the architecture. SaaSGrid provides: A multi machine application Server and runtime for hosting and managing SaaS applications. will concretely behave in a multi-customer fashion (e. multi-tenant.WHAT IS SAASGRID . and failure isolation A set of web portals and tools to manage your applications and customers . SaaSGrid provides an execution fabric for your application components of all types. A user and customer management layer that those SaaS applications can leverage so that the idea of users and account information can be shared across applications An API and set of associated services that provide fundamental building blocks for commercialization. an inheritable SaaS architecture that makes your SaaS application true single instance.NET or Silverlight UIs. and a commercialization system for creating pricing. and SQL Server based databases. managing billings. and dealing with traditional customer related commercial affairs such as on-boarding new customers to your application. An application running on SaaSGrid is one that is composed of some number of fairly traditional ASP..
your application inherits partitioning within application components so your single-tenant data model can be multi-tenant without much effort. while application specific concerns are dealt with by you and your code. In the case of an operating system. When you write code. or any other pure software layer that sits above physical resources and acts as a host and execution backdrop for an application that lives on top of it. everything from memory subsystems. SaaSGrid‟s explicit API accessed services. SaaSGrid is analogous to an operating system. Runtimes like the .Figure 1 The best way to think of SaaSGrid is from a stack-wise point of view. SaaSGrid provide a set of implicit and explicit services to your application from both an architectural and feature point of view. Although this sounds magical. and SaaSGrid‟s kernel which provides an architecture that your application implicitly inherits. you implicitly assume that the OS will take care of fundamental and difficult problems for you. to disk access and thread scheduling is provided as a set of services to the applications built for the OS. As an example.NET application inheriting capabilities such as .NET CLR provide further value through more abstraction for a large subset of applications being developed. Having a conceptual “layered” understanding of SaaSGrid is important. it‟s no different than your . SaaSGrid can host and manage multiple applications simultaneously. an application server like IIS. Much like an operating system or other application container. SaaSGrid leverages separation of concerns where most SaaS-specific concerns are dealt with by SaaSGrid automatically or through simple interactions between your application and an API. Figure 1 provides this layered view of SaaSGrid where clear demarcations can be seen between your application components. and that the hardware resources are abstracted away from your code to some extent.
Application Versioning & Deployment Manager: SaaSGrid provides tools to manage deployment of your application components (UIs. Application Component Multi-tenancy Engine: SaaSGrid acts as a hosting container to relatively plain . application. which are covered elsewhere). or database server. databases) and tracks changes in deployment through a versioning system. 3. 1. providing an abstraction layer for those resources. and provide a number of facilities that are directly and implicitly instrumented into a hosted application‟s runtime. WCF. Authentication & Authorization System: SaaSGrid provides an authentication perimeter around all applications hosted on top of it.NET technologies. Rather than calling specific instances of a web service. Different Services offered by SaaSGrid are: 1. allowing a single instance of any component to be shared by multiple tenants. these descriptions are simply to introduce some detail into the picture. WCF proxies within SaaSGrid are dynamically configured to target logical definitions of web services so that requests can be distributed across many instances of your web service through direct peer relationships. SaaSGrid takes these standard . images. Server Provisioning System: SaaSGrid‟s desktop and web based provisioning tools. and are not comprehensive descriptions. 5. These descriptions should give you a general idea of the specific technical functions SaaSGrid takes over in your application‟s architecture. SaaSGrid stamps it as your first version and creates a versioning log roll.memory management from the CLR.NET application components(ASP. SaaSGrid Kernel: A collection of runtime components responsible for managing network resources. and SQL Server assets). and as little time as possible on sticky architecture issues or boilerplate auxiliary systems required of nearly every SaaS application. Let‟s dig into a brief description of the major kernel and business services identified in Figure 1 (to be clear. including . allowing you to create new versions through which you can publish and deploy delta based upgrades and/or bug fixes to specific application assets (think DLLs. 4. 2.NET components and creates “virtual partitions” within the components. P2P Web Service Distribution Fabric: SaaSGrid provides a custom distributed hosting container that can dynamically deploy and host instances of your web service across a server farm. you can easily add new capacity to a SaaSGrid network by pointing SaaSGrid to a standard Windows machine and instructing it to provision that server as a web. The end goal is that a developer will spend as much time as possible writing the application code using standard . web service.NET. database definition alterations).
and that provide a full commercialization framework. 1. 3. Billing System: SaaSGrid provides a billing system that allows you to map your deployed applications to specific billing merchants so that when your customers sign-up for applications. but will defer all billing and account control to you and your customers through SaaSGrid‟s web portals. the developer.NET login screens. If your processes don‟t call for automatic billing through credit cards or bank accounts. the SaaSGrid Business Services captures a set of high order SaaS business workflows and functions as web services.g. Pricing System: To close the loop on metering and billing. where. 6. SaaSGrid can reconcile usage based on your API calls to what functionality your customer purchase or how much of something they‟ve purchased. SaaSGrid can take their information and appropriately charge the customer. during execution. the simple act of logging information from that code can create an unmanageable amount of data across many. many files. SaaSGrid provides a web portal for defining pricing for your application through meta-data. Logging Services: When your application code is deployed dynamically to one of many servers. 2. Silverlight authentication APIs. SaaSGrid Business Services: While the SaaSGrid Kernel provides a number of low level architectural features and abilities. and SOAP level authorization and tokens for remote calls into your web services running on SaaSGrid. HTTP & Database scale-out Services: Web sites and databases deployed to SaaSGrid are treated as „partitions‟ where one or more tenants can share a partition. and APIs. management portals. The metering system provides a measurement backdrop for SaaSGrid pricing engine. 4. The SaaSGrid API exposes specific functionality for posting and retrieving metered events to and from SaaSGrid. 2. and your customers plan on paying by check. all of which are accessible to you. Metering Services: Tracking specific events and usage that can later be billed against requires a metering infrastructure. This authorization is tightly integrated with SaaSGrid‟s user system and leverage application subscriptions as access control certificates that dictate application level authorizations. At a high level..ASP. you can instruct SaaSGrid to track and charge based on periodic pricing models (e. you can configure SaaSGrid to run your application in “manual” mode so that it can continue to generate invoices for reference. You can define tiered pricing plans . The SaaSGrid API can help you post log messages that are captured in a centralized log store and augmented with all available contextual information. per user per month).
allowing for easy coordination of pricing to functionality. . pronounced ‘sock. SaaSGrid as a whole product is composed of: 1. Because of this. PHYSICALLY? SaaSGrid is an application server/application container technology with SDKs and APIs for interacting with its components and services and a set of web portals allowing different constituents to interact with SaaSGrid in various capacities. 6. and payment information. but are also first class citizens from a business perspective. 5. roles. SaaSGrid acts as host to guest applications deployed on it. All price points defined in the web portals are reconciled against API calls made in code. SaaSGrid Operations Center (or SOC. and the server fabric. SaaSGrid is a distributed. SaaSGrid provides your customers with their own management portal to manage profile and account information such as defining users. and a number of other “contract” components.com where „yourSaaSGridRoot. SaaSGrid Server 2.com‟ is the root URL you provided while installing SaaSGrid. documentation. recurrence schedules for repurchasing. set tier specific pricing. However. global settings. your application components. multi-tenant application. 3. This information gets used by SaaSGrid for billing purpose and repurchase workflows. locations. and even provide descriptive information if you plan to expose the pricing matrix through SaaSGrid‟s embeddable web storefront widget for self provisioning. Subscription Management System: Subscriptions serve two primary roles in SaaSGrid: an access control certificate that dictates whether a user can access a given application based on whether that user is assigned a subscription for that application and as a “digital contract” that outlines specifically purchased access rights to metered functionality in the application. samples.’ for short): A web portal for backend management of network infrastructure. and local development and deployment tools and Visual Studio hooks that aid with the development process or allows a developer to emulate running an application on a live SaaSGrid instance. from a physical point of view. multi-server hosting layer. The SOC can be accessed via the URL http://soc. Application SDK: The SDK consists of API . WHAT IS SAASGRID.yourSaaSGridRoot. As an application container.where you bundle a la carte functionality into individual plans. Tenant Account Profiling System: Tenants are first class citizens in SaaSGrid from an architecture point of view.
allowing all aspects of the application to be modified. they and their users are actually provisioned at the SaaSGrid level. defining configuration information such as custom URLs. Those executables interact with one another in a peer-based fashion to stitch together all the servers in the network you‟ve dedicated to SaaSGrid into a single logical deployment and execution runtime. A hybrid profile combining the above two. which gives them access to manage their SaaSGrid account. The „Development‟ stage allows for the modification of application assets through uploading.In promoting to this stage. Test Stage . This functional segregation matches the typical components that make-up modern web application architectures (3 physical tiers). data deployment style (“commingled” or “isolated”). Each application is assigned a unique ID (of a GUID type) and each version of the application is also assigned its own unique ID. Tenant Portal: A skinnable/brandable web portal that provides your customers with account management functionality. A set of stages an application must undergo to be available for customer provisioning: 1. In addition to this role. a server may take on other roles: 1. puts a heavy emphasis on supporting full-fledged 3-tier applications that take on a Service Oriented Architecture (SOA). However. When SaaSGrid is installed. it places executables on a collection of servers that you specify. Data Server Role – A server that will host databases (requiring that it have SQL Server installed to match this profile) 2. The Tenant Portal can be accessed via the URL http://tenant. Web Server Role – A front-end server (requiring that it have IIS installed to match this profile) 3. When a new customer signs up for your application. Every server managed by SaaSGrid is of the „Web Services‟ role meaning it can host WCF web services. This stage is the most mutable stage. this stage is . as well as other configuration. although not requiring a web services tier but as evidenced in its requirement that all servers have the „Web Services‟ role. SaaSGrid. SAASGRID SERVER – A SYSTEM OVERVIEW SaaSGrid is best described as a composite of simpler technologies that aggregate server resources into a homogenous hosting layer. effectively creating a peer-to-peer (P2P) mesh of servers.4. 2.yourSaaSGridRoot. Each server node can communicate via SaaSGrid protocols directly with other server peers or indirectly through intermediaries.com. Development Stage – An application that is first uploaded is uploaded during this stage. your application is physical deployed to the SaaSGrid infrastructure and can be launched for use.
LocalDeployment.Core. customers cannot be provisioned to the application but users belonging to your organization can be assigned subscriptions for testing or exploration.Core.SMART.Core.ServiceBootstrap.Services.‟ it can be promoted.exe 8. The application assets are redeployed in production mode to the SaaSGrid fabric.exe 9. as you would see them in the Windows Task Manager). Archived Stage – The „Archived‟ stage is an end of life stage that preserves all application assets and configuration. SaaSGrid. Through these daemons. SaaSGrid. For purposes of orientation. SaaSGrid. while those prefixed with a indicate that although not required to function. Production Stage – When an application has been tested and approved for „Production.exe 3. Any executable names prefixed with a indicate that all servers participating in a SaaSGrid fabric are required to have an instance of this daemon running.SMART. but is no longer accessible in a deployed context. SaaSGrid. This publishing process provides a structured means for ensuring a safe deployment of your application to the underlying SaaSGrid fabric.Manager.SMART.ServiceBootstrap. User Interface Manager 10. SaaSGrid. SaaSGrid.considered to have „internal‟ visibility only. SaaSGrid accomplishes the task of coordinating server resources on your behalf and providing a networked execution runtime. Only one version of the application can be in this stage at a time.exe 6. To accomplish these management and hosting feats. Storage Manager 11. Applications in „Test‟ stage can either be demoted back to „Development‟ or promoted to „Production. Specialized ‘SaaSGrid. most nodes will have this daemon running: 1. SaaSGrid will „demote‟ the current „Production‟ version to the „Archived‟ stage.PeerResolver.SMART. let‟s start with a full inventory of all SaaSGrid daemons (by process named. SaaSGrid leverages a number of its own components as daemons.‟ 3. At this stage.SMART.exe 4.PhysicalHostManager. the application version has „public‟ visibility meaning customers can be provisioned to the application. Which daemons run on what server is entirely dependent on what role the server was intended for. If this version of the application is a new version.SMART. SaaSGrid.exe 7. 4.Router.exe 5.Services.exe 2.exe’ Infrastructure Nodes . SaaSGrid.Services.Caching.
This allows multiple tenants to share single components while maintaining an isolated functional experience. etc. where each partition can be host to many tenants (where physically. The number of tenants hosted on a partition is typically limited by the physical capacity of the server (CPU. SaaSGrid introduces shards (i. Each partition is either managed by SaaSGrid or shares a memory space with a SaaSGrid bootstrapping system.) Figure 3 Partitions are physical instantiations of your application component somewhere on the SaaSGrid fabric. Both through actual transformations of the physical partition as well as runtime instrumentation. disk.SaaSGrid defines a “partition” as one of your application components deployed to a SaaSGrid managed server.. RAM. . we refer to a tenant‟s individual isolation unit as a “shard”). sub-partitions) into each partition. A partition may be either volatile (such as a web service instance) or non-volatile (such as a database instance running on SQL Server).e.
while tenant shards map physically to IIS virtual websites mapped to that data and application. SaaSGrid leverages a sub-domain to formally address a tenant shard on a specific partition as follows: http://<applicationAlias>[--<versionAlias>][. http://myApp.com If no tenantAlias is provided (e. fully qualified target URLs.<tenantAlias>]. A SaaSGrid managed load distributor sitting in front of (1). Custom application URLs such as http://www. .yourSaaSGridRoot. Custom URLs are implicit. Custom tenant URLs such as http://www.acmeIncCustomer. SaaSGrid allows your customers to assign their own domains to their application accounts on SaaSGrid. This allows for a high level of personalization for your customers.yourSaaSGridRoot. The following examples both represent explicit. fully qualified URLs on SaaSGrid: http://myApp--v2. coordinates deployment and runtime execution efforts across multiple servers.g. The URL pattern for custom application URLs is as follows: http:// [<tenantAlias>. fully qualified names since they definitively target a specific application on SaaSGrid and are capable of accepting requests targeting a specific tenant.1wt.yourSaaSGridRoot. SaaSGrid supports HAProxy (http://haproxy.com that are linked to your application running on SaaSGrid (configured in the Provider Portal).com SaaSGrid will automatically manage header information on your applications behalf using the custom application URL. fully qualified name.eu/) installed on a Linux server with a Java Virtual Machine The SaaSGrid fabric recognizes actor 1. This defines a clear tenant to architecture affinity. UI partitions are physically defined on a SaaSGrid web server as the set of files for your website plus a defined application pool.acmeIncsApp.com SaaSGrid considers a URL with all parts and of this form to be explicit.]yourCustomApplicationURL.mySaaSGridApp.com http://myApp. SaaSGrid. Your responsibility is simply to point a CNAME record for this custom application URL.acmeIncCustomer. Currently. Any number of SaaSGrid managed Windows servers with IIS installed 2. the “front end” web server.yourSaaSGridRoot. as a first class server role.com) SaaSGrid will auto-resolve the tenantAlias based on the logged in user and resolve the partially qualified name to the appropriate explicit. while recognizing each web server individually.com.SAASGRID WEB TIER The SaaSGrid Web Tier is composed of two primary actor types: 1.
button click deployment of new service instances) Modifiable request/response pipelines as well as swappable routing strategies Distributed instance garbage collection (i. where SaaSGrid redeploys your service elsewhere on the network transparent to clients) Single click instance activation (i.e.. All servers on SaaSGrid are of the „Web Service‟ role and are all capable of hosting non-Queue WCF web services (WCF Queue support may be introduced at a later date). 2. and dispatch network: 1. hosting. Specifically.e. Each are assigned a unique GUID for identification. For each web service. 3.. Service Container Router Service Bootstrap Service Meta-Typing System : SaaSGrid maintains an inheritance tree for versioning your web services and to provide other system components with a way to logically reference your web services. 4. SaaSGrid creates „Service Type‟ meta-data representing the abstract WSDL proposed by your web service‟s WCF ServiceContract. however. decentralized) SOAP routing capabilities High availability with built-in service revival and displaced service recovery (i. The full service fabric capabilities.. This allows SaaSGrid to perform targeted. Because of this.SAASGRID WEB SERVICE TIER SaaSGrid‟s most core architectural quality is that of a web services fabric.. SaaSGrid can ensure that clients can be guaranteed that some instance of the web service will satisfy a request without knowing the physical location of any instances. and a majority of SaaSGrid‟s own services are defined as WCF web services. Protocol bridging services (e.. go beyond hosting WCF services. a few of the high level functions that SaaSGrid provides your web services include: Linear scale-out and load distribution across a server grid through P2P (i. version based routing and gives a uniquely identifiable logical system to target web service calls.e. automatic unused instance teardown) Integrated instance awareness through dynamic integration of „heart-beating‟ systems. bridging HTTP based requests to net.g. it is highly recommended to maintain a stateless posture in web services.tcp) SaaSGrid‟s general web service fabric capabilities are rooted in 4 main components that coordinate with one another to create a peer-based instantiation.e. . Because of this.
3. pushed to the local Router service.Lifecycle of a WCF service on a SaaSGrid : Figure 4 1. This architecture provides a number of key advantages: 1. At the time of promotion. The Router service then takes over dispatching as described earlier. centralized “be all” service bus and SOAP router. 1. 2. After performing simple configuration. The best place to start is at the time of uploading a brand new application that contains web services as a part of its archive. Rather than proving a single. through inter-process communication. and will not flood and starve a centralized shared Routing service. Localized demands where certain “greedy” clients may be generating significant load only overload local services. SaaSGrid prefers to conserve its resources and not to pre-deploy a web service until its absolutely necessary. it scans your archive and recognizes web services. flagging the presence of this tier. no server instance was created. A better topological profile tightly aligning dispatch activity with client activity. SaaSGrid recognized an availability risk and invoked recovery mechanisms to insure availability. The meta-data defined at this stage defines a logical representation that SaaSGrid user to target arbitrary web service instances deployed on the grid. All service requests are. application is promoted to „Test‟ stage. This unique identification results in SaaSGrid defining „Service Type‟ and „Service Implementation‟ meta-data. 3. 2. When an application is uploaded to SaaSGrid. SaaSGrid performs a deep analysis of uploaded service assemblies and configuration. . Upon first request. SaaSGrid runs local routing services on each individual server node. SaaSGrid‟s architecture is based on decentralized peer based routing. SaaSGrid recognizes web services as unique based on the WS name and namespace of the service. ROUTING A REQUEST IN SAASGRID: SaaSGrid provides a high availability mechanism. targeting a well known service. During this promotion.
Higher level of overall resiliency when under duress.‟ SaaSGrid provides deploy time determination of your tenant style: 1.Figure 5 2. Commingled tenancy 2. SaaSGrid marks servers that have both SQL Server installed and the Storage Manager installed as „Database Role‟ servers. This multicustomer dimension will be referred to as the „tenancy style. the best thing to do is to think of the database abstractly as the “data model. SAASGRID DATABASE TIER SaaSGrid manages database definitions supplied by your application archive as first class citizens. Lack of a risky central point of failure. SaaSGrid‟s responsibility is to introduce a new architecture dimension that defines a data model in which data for multiple customers can be stored.” Data model typically refers to the layer through which your application will store and retrieve data. Isolated tenancy . When creating a database for your application. SaaSGrid can ensure that failures are isolated to only certain parts of the network. 3. Decentralized architectures prove to be more resilient when taxed and can provide more consistent aggregate guarantees.
each time a tenant is provisioned to your application. and load in a scale-out fashion. the first partition will undoubtedly grow in actually size and shard count. . Given that isolated provides each tenant with their own database. Any data requests are directed to this single partition that is dedicated entirely to their data. As your application grows in usage. SaaSGrid defers all database provisioning work to tenant onboarding. the partition is capable of accepting shard creation requests. Each time a tenant is provisioned to the application SaaSGrid creates a new shard on the partition ensuring that the partition can accept any SQL queries originating from requests executed by that tenant. you can create a new partition on a different Database Server and request that SaaSGrid migrate some of the shards from the original partition to the new partition. Once in the „Production‟ stage. essentially reducing the overall duress on the original partitioning by “splitting out” actual data. Isolated – In this model. SaaSGrid will create a single partition of your database and perform the transformations described earlier. Commingled – During publishing. SaaSGrid creates a database on their behalf. shard count. 2. Through the Provider Portal.Figure 6 Your choice as significant implications on what happens after publishing your application: 1.
which passes through SaaSGrid‟s shard filtering.tenant1.‟ An ASPX code-behind makes a call to your web service.com‟ When SaaSGrid‟s HTTP load balancer receives the request. The physical instance of the web service receives the request along with identity information for the tenant. When „Tenant 1‟ makes a request to the application they will do so via the explicit.saasgrid. which includes selecting and inserting data into a database. fully qualified production URL of „http://app. .FULL 3-TIER ARCHITECTURE. The tiers unwind their stacks and return the result of the application to the user‟s browser. which is dynamically selected based on whether it contains data for „Tenant 1.SUMMARY Figure 7 Lets focus on the what happens in a 3-tier interaction. which is intercepted and dispatched by the SaaSGrid router to a specific physical instance of your web service. it directs the HTTP payload to the appropriate IIS server (partition) that is registered as the owner of the web site for that tenant (shard).NET. excluding row data from other data and performs the requested queries. The shard filtering keys into „Tenant 1‟s‟ rows. The service performs some work. The website receives the request. established an in-memory context to isolate and identify „Tenant 1. Using standard ADO. the web service makes a call to a SQL database. Let‟s assume that for this discussion we‟ve deployed an application named „app‟ to a SaaSGrid cloud with root URL „saasgrid.‟ The SQL request reaches the SQL server.com‟ and have instructed SaaSGrid to use a commingled database for the data model.
This action might not be possible to undo. Are you sure you want to continue?
We've moved you to where you read on your other device.
Get the full title to continue listening from where you left off, or restart the preview.