A Practical Guide to SLAs
Today, Mehdi Daoud is sharing his journey of how he took control of his SLAs as an ASP (back when SaaS was still an Application Service Provider), and everything you need to know to do the same. A $1 million payout is not surprisingly a trigger to seriousness.
Join the DZone community and get the full member experience.Join For Free
while visiting a customer last week (a large saas platform company), we started to have an interesting discussion around service level agreements (slas) during which he encouraged me to write this blog.
when i was tasked with setting up the qos team at doubleclick in 1999, the primary mission was to set up a monitoring team (internal, external, etc.) and the secondary mission was actually an accidental one: to manage our slas.
this became a hot priority in 2001, we paid out over $1 million (in real money) in penalties for sla violations to a single customer. basically, someone on our side signed a contract with insane service commitments like 100% uptime.
when we started to tackle this problem we were novices and had to ramp up quickly to stop those kinds of penalty payments—we were in a crisis mode. my cfo was breathing down my neck every day with the same question, over and over again: “are we going to breach anything today?”
today, i am sharing my journey of how i took control of our slas as an asp (back when saas was still an application service provider), and everything you need to know to do the same.
part 1: what are slas?
an sla is a contractual agreement between a vendor and a customer, stating that the vendor will deliver on agreed upon terms. the sla is the legal umbrella, under which you have one or more service level objective(s) (slo) which describe the service, measurement methodology, and objective (uptime, speed, transaction / seconds, etc.). the definition below describes how an sla covers the customer and the vendor:
- customer : an sla benefits the client by providing objective grading criteria and protection from poor service.
- vendor : an sla benefits the supplier by providing a way of ensuring that the correct expectations are set, performance will be judged fairly and that the supplier is incentivized to improve quality of services.
for slas to be implemented, we also agreed on the following
- mutually acceptable
part 2: ground zero, discovery
the first few weeks were spent compiling the list of all the contracts, extracting slas, slos, penalties, and putting that in a database.
then i went to start the education process with the business stakeholders, legal, and our leadership.
as you can see, i focused on end-user experience based slas from an early stage.
part 3: establishing an sla is more than just putting a few sentences in the contract.
the reason we paid $1 million is that there was no sla management system in place.
we started then by building a service level management practice that relied on 4 pillars: administration, monitoring, reporting, and compliance (amrc).
then we sat down with the business partners, customers, legal, and finance team and created a process to avoid costly mistakes in the future, an sla lifecycle. we reviewed the slm quarterly:
we then used our in-house data scientists to run simulations on the risk to breach slas based on the historical data we had from our monitoring tools. you do not want to set sla that will be breached every day.
we also ran multiple “what-if” scenarios on availability vs. revenue and the impact at various hours of the day and days of the week:
we even created an online tool (2001) for our sales team to be able to request an sla portfolio for a customer that would be reviewed and approved by our qos team; think of this as an “sla desk.”
part 4: external slas and internal slas.
in these early stages of this project, we quickly discovered a major glitch: the external slas were not matching the internal ones. and that, in my opinion, was a huge mistake—how can we ever achieve such goals or talk the same language between the tech, business, and customers, when everything was so different? customers would ask for ad serving uptime and our tech group would use server availability!
so we aligned our external and internal slos and made the internal objectives (the targets) very very high. this was a huge victory because it allowed us on a daily basis to rely on one set of metrics to understand our sla risk position, but also to drive operational excellence. our tech group (ops, engineering, etc.) became sensitive to the notion of a business sla and started to care very much about not breaching them.
part 5: monitoring
for availability and performance, we relied on three synthetic products; internally, sitescope was running in 17 datacenters, and two external synthetic products. we wanted to have as many data points as possible from as many tools as possible. the stakes were just too high to not invest in multiple tools. this entire slm project was not cheap to implement and run on an annual basis, but i also knew the cost of not doing it right the hard way.
for monitoring it became clear to us that we needed to test as frequently as possible from as many vantage points as possible:
- when you test your slos end points every 1 hour, you have to wait 59 minutes after each check! so you could be inflicting yourself with false downtime.
- you want many data points to ensure statistical significance. you could use small datasets, but you will tend to have lower power and precision. bigger datasets are also better for dealing with false positives and false negatives.
part 6: performance (speed) monitoring
one of our biggest difficulties was finding an effective way to measure the performance of third-party providers – and implementing that technique in slas.
the challenge was that clients would look at their site performance and notice spikes and they would attribute it to our system, meanwhile, our performance chart would not show any problems. we couldn’t correlate the two charts, therefore we couldn’t come to an agreement whether it was our problem or someone else’s problem.
we created a methodology we called differential performance measurement (dpm).
the philosophy behind dpm was to be able to measure the performance and availability of doubleclick’s services as accurately as possible and its impact on the pages of our customers, making sure we were responsible and accountable for the things we had control over to eliminate the finger-pointing.
the methodology added context to the measurements. dpm introduced clarity and comparison, removing absolute performance numbers from the slas.
recipe for differential performance measurement (example with an advert):
1- take two pages, one without ads and one with one ad call.
- page a = without ad
- page b = with ad
2- make sure the pages do not contain any other third-party references (cdns, etc.).
3- make sure the page sizes (in kb) are the same.
4- “bake” – measure response times for both pages and you get the following metrics:
- differential response (dr) will be (response time of page b) minus (response time of page a)
- differential response percentage (drp) = dr / a. (e.g. if page a is 2 seconds, and page b is 2.1 seconds, dr is 0.1 second, and drp is 0.1/2=0.05 or 5%)
with this methodology, we were able to eliminate noise introduced by:
- internet-related issues that were out of our control (fiber cuts, etc.)
- monitoring agent issues (which raises the separate topic of monitoring your monitoring services)
- other third parties
- scenario 1 : the ad serving company is having performance problems and negatively impacting the customer’s site performance. the vendor breached the sla threshold from time 4 to time 8.
- scenario 2 : the website is having performance problems that are not caused by the ad serving company.
part 7: reporting
because of that huge payout, the entire slm project had a lot of visibility that extended all the way to the ceo. we reported monthly on our compliances and our internal slas, breaches were detected in real time (thanks to a clever tool, digitalfuel, that sadly no longer exists.).
the external slos were just a subset of the internal slos; when we were done in late 2001, we were tracking over 100 olas.
i cannot stress enough that if you are going to embark on this journey, you better report a lot! but, also make sure the reports are actionable (green, yellow, red).
example of a monthly report:
example of our daily reporting during our daily health check meeting:
a culture of quality emerged at doubleclick because everyone was aligned around these business service metrics. no one wanted to breach slas; no one wanted to let down the customer.
part 8: conclusions
after doing this exercise of implementing what i would consider in the early 2000s to be a comprehensive slm process, we were able to:
- manage hundreds of contracts with up to five slos.
- offer a wide range of slas that were scalable (adding new products).
- reduce the financial risks to our company.
- manage our reputation and credibility by giving meaningful slas and reporting on them with accuracy and integrity.
- provide real-time alerts of compliance breach. knowing ahead of time that an sla will be breached was incredible; we would know that adding four minutes of downtime will breach 12 contracts and result in $x in payouts, so ops took steps to stop releases or anything that could have an impact on uptime.
some people do not believe in slas. bad slas are the ones that some companies put in the contract without real penalties or real measurements. i always see the slas that guarantee 0% packet loss, but if you ask how it’s measured, you quickly realize that it’s useless—this is exactly what gives slas a bad reputation.
i believe that slas are a great way to align customers and vendors, reduce frictions, and stop the finger-pointing. but, customers also need to do their jobs and ask for useful slas. the point is that you want to hold the vendors accountable, not to drive them out of business. you want them to feel the pain of not doing a good job when they do not deliver the service for which they are being paid.
as the “cloudification” of our world expands, slas are here to stay and they are going to become even more prevalent. customers of these services like cloud servers, cloud applications (office365, salesforce, etc.), services (dns, cdn, security, etc.) will see customers demanding more meaningful slas, stricter enforcement, and more penalties. this is the only way forward.
Published at DZone with permission of Mehdi Daoudi, DZone MVB. See the original article here.
Opinions expressed by DZone contributors are their own.
Integration Testing Tutorial: A Comprehensive Guide With Examples And Best Practices
SRE vs. DevOps
Best Practices for Securing Infrastructure as Code (Iac) In the DevOps SDLC
Fun Is the Glue That Makes Everything Stick, Also the OCP