In its current version, LitwareHR is focused very much on the challenges an ISV faces while building a SaaS delivered app: multi-tenancy, configurability, etc.
In the last few weeks I've been working on exploring the implications of hosting LitwareHR on a hypothetical hosting platform. The goal was to twofold: identify changes that have to be made in LitwareHR code base to support specific hosting scenarios and explore the interaction points between hoster & ISV.
I've published some of this work already in previous post which focused on Provisioning. As described there, externalizing Provisioning required changes in LitwareHR, but it was pretty straightforward because it was functionality well encapsulated.
But of course Provisioning, as important as it is, is just one aspect. This series of articles will cover what I've found. As usual, any feedback is greatly welcome.
Eventually we hope to publish this content and the collateral generated (code, demos, etc), but realistically that will take some time as we need to invest more on polishing, testing, etc.
So lets start with a first article on the the scenario itself. Who are the actors? What motivates Litware to search for a Hoster as opposed to self-host? what characteristics is Litware looking in a hoster? What attributes are important for them?
The Actors in the exercise are:
Litware is searching for a hoster to run and operate their flagship SaaS delivered application (LitwareHR). Litware is a startup ISV that lacks the funding, skills and experience to operate their solution. They want to enter a global market and therefore searching for a hoster with presence in different geographies. Quality is important, so they are also looking at contracting high SLAs.
Other Litware requirements can be summarized as follows:
Litware is willing to make changes into the app to make this happen, increasing the level of compliance of their app to follow the hoster's environment capabilities.
Among different hosters available they have found that Northwind Hosting is a "SaaS" hoster, that goes beyond “power, ping & pipe”, has a good coverage worldwide with datacenters in the principal markets Litware is interested in expending and offers advanced services like:
Northwind specializes in hosting applications built with the Microsoft distributed applications technology stack: .NET, ASP.NET, WCF, SQL Server based transactional systems. They offer high availability systems and good coverage for a good price, if the application is built according to certain rules.
Northwind has streamlined their operations for applications that are compliant with a specific model (Figure 1), in which:
Figure 1: Northwind Hosting - Application Model
This might might sound quite restrictive, but NWH is able to offer competitive pricing with high SLAs if the application is built according to this principles. Coincidentally, LitwareHR design is very close to this. (By pure chance of course :-))
However, NWH has some additional requirements and constraints, for example:
Anything that differs from these rules can be negotiated, but it is guaranteed that for the same SLA, the costs will be higher as illustrated in Figure 2.
Figure 2: Cost increase for increased SLA with different levels of compliance
NWH of course, publishes these models and restrictions together with an SDK with APIs to be called for specific services. In its current implementation, NWH publishes an SDK for the following services:
The ISV is required to call these APIs for these features.
Finally, Northwind Hosting requires ISVs to package the application in a predefined way and supply additional information for deployment and operations in an "Application Manifest". Northwind requires this so they can fully automate the on-boarding of a new app. We will call the "stuff" that the ISV hands over to the hoster, the "Hosting Pack". Think of it as an "MSI for hosting".
On next chapters we will drill down on these different pieces in the context of Northwind Hosting and Litware's LitwareHR. What is in the "Hosting Pack"? What does the "Manifest" describe? How is it authored and consumed? How intrusive are Northwind APIs?