Search This Blog

Sunday, April 4, 2010

Release It! - Chapter 4.10 SLA Inversion

The best SLA you can hope to achieve is the worst SLA that any of your dependent services can provide -- DNS, credit card processing, etc. 
A chain is only as strong as the weakest link.  The number of dependent services also affects the SLA calculation.  SLA Inversion is when a system must provide high availability but depends on systems of lower availability.  One solution is to decouple from the services such that your system can continue to function despite a loss of service from a dependent service.  Try Decoupling Middleware or Circuit Breakers.  Another solution is to carefully craft your SLAs.  Do not say 99.9% uptime -- instead break it down around specific services.   That way, you can provide higher levels of SLA for services that do not depend on other services and specify lower SLAs for those that do.
  • don't make empty promises - if you have an SLA inversion then you cannot exceed what your dependencies support
  • examine every depenency - look in unexpected places, like network infrastructure such as DNS, SMTP, message queues, etc.
  • decouple SLAs - maintain your service even when your dependencies go down.  If you fail when they  do, your availability will always be less than theirs.

No comments:

Post a Comment