I’ve been thinking about SLAs recently. People generally have a knee-jerk bad-taste reaction to even the word SLA, probably from loads of legalese and unmet expectations. All an SLA is, though, is an agreement. Short and sweet. Let’s agree on some baseline expectations, and move on to the real value.
With regards to software and SAAS services, and SLA is an agreement to provide the customer with a non-perfect level of service in exchange for non-infinite cost and some room to continuous improve the service.
SLAs can also become an powerful internal tool as well, enabling rapid development iteration. Leveraging social contracts can create effectively incentivize and liberate engineers. Simply agreeing on acceptable tolerances as early in the SLDC as possible, can turn
“Bob, your code is throwing errors again X!^#$( dammit! Your last 3 deploys broke stuff!”
“Bob, it appears as though your code is not behaving within the tolerances you agreed to earlier. Is there anything I can do to help get it up to snuff?”
It’s important that the person creating the software is defining the tolerances, and more importantly, explicitly agreeing to maintain them.
Some SLA references: