People often wonder about the difference between SLA and SLO. In my opinion, all service agreements are SLAs—don’t call them SLOs.
What are SLAs?
SLAs, or Service Level Commitments, are measuring a commitment to a given level of reliability and performance. In software terms, SLAs are usually described by commitments given to customers on the availability and operational readiness of a software application or system.
SLAs are a commitment to provide a given level of reliability and performance. They are used to create a solid contractual relationship between service owners and customers.
An overnight delivery service, for example, might have an SLA that states it will deliver a package before 9 a.m. the following day. An airline might have an SLA expressing its ability to deliver checked baggage within 30 minutes after a flight arrives. A power company might have an SLA that states how fast it will fix power outages after a storm. In a software application, an SLA may indicate that an application will be available 99.9% of the time, or provide answers or results within a specific number of seconds or milliseconds.
These are all examples of external SLAs—commitments that companies make to their customers.
SLAs are external, SLOs are internal
So, what are SLOs? Here, there are differing points of view. Some people say SLOs are somewhat like individual SLAs: they are used by the services that construct an application to provide specific, individual performance objectives for the application. Some say SLOs are “internal SLAs”: they are used to measure contractual agreements between services inside an application. The fact that this is so unclear is enough of a reason not to use the term. But the problem with SLO is more serious than that.
The most common belief is that SLOs are considered internal agreements made between services that define their individual service needs. In other words, if Service “A” requires a certain level of performance from Service “B,” then Service “A” needs an SLO defined on Service “B.”
In other words, SLAs are external customer commitments, SLOs are internal commitments.
We often say SLO when we mean SLA
In my mind, there is no difference between an internal customer and an external customer. As such, there should be no difference in the importance of the commitments you make to internal customers than there is to external customers. If your service is designed to provide capabilities to an internal customer, you have commitments to that customer just as important as if the customer were external.
Calling internal commitments “objectives” while external commitments are “agreements” reinforces the mindset that “these are less important.” An objective is a goal. An agreement is a requirement.
Therefore, you should use the same terminology for describing your performance agreements internally as you do externally.
Because, after all, your internal customers are providing capabilities that, ultimately, do eventually impact real, external customers. Internal customers are no less important than external customers. The commitments one service makes to another service within a company are just as critical as the overall application’s commitments are to its customers. How can a service meet its commitments to external customers if the services it depends on are not meeting their internal commitments?
The answer, of course, is it can’t. Failed internal commitments turn into failed external commitments. Failed internal SLAs turn into failed external SLAs.
And failed external SLAs mean unhappy customers.
Internal agreements and external agreements are all service-level agreements, not service-level objectives, and should be treated as such.
More articles by Lee Atchison: