SLA-Service Level Agreement Class

I am in the process of finalizing some SLA code. The issue of SLA or Service Level Agreement is as follows:

You create a service or set of services that depend upon certain systems being up and running. However, you know that at certain times during the day underlying systems will be down. This is especially an issue when connecting to a database. Let's say you try to connect and your timeout is set for 10 seconds....or thereabouts. If your client applications attempt to execute your service and your service cannot connect then you are guaranteed to make your clients wait at least 10 seconds.

Now the service itself doesn't care. It will do what is asked and if many applications attempt to ask it for information, it will just queue up requests.

The issue is client applications. If the service starts rejecting requests, then client applications start having issues. What is needed is something the service can quickly check to see if its underlying dependencies have “registered” as being offline for a period of time. For example:

The code to use it looks like this:

public class SLATest

{

      public bool Example()

      {

         SlaCheck slaCheck=new SlaCheck(“Application”);

         // throw a SlaException() if problem occurs.

         slaCheck.Check();

      }

}

This allows me to define a set of rules such as  b/w 1:00AM and 2:00AM everyday. Or every wednesday...you get the idea. Then I associate each application with a set of these rules. Or I associate an application with a set of other applications with rules. This allows me to quickly check if an application is up or down. Now I am trying to decide the following if I should I create a soapExtensionType or should I put the check in my Business Logic Layer. Any idea out there?

-Mathew Nolton

No Comments