Service Level Agreements or SLAs are very common in today's IT heavy business world. Basically they are an agreement by a service provider to guarantee a certain level of uptime and performance or there is a penalty involved. This is very important to businesses as most cannot afford to have systems they heavily depend upon to be available, all the time.
Typically you will hear terms like 5 9's, which is the holy grail, guaranteeing 99.999% uptime. This means the service must be available around the clock, with a total of 5.1 minutes of downtime each year (Availability). I don't care how good you are that is very tricky to pull off.
I have not reviewed a large number of SLAs, but enough to know they typically promise 3-4 9's uptime and sometimes a level of performance. Of course the more 9's exponentially increases the service cost. That part is probably even harder to satisfy because there has to be ways to measure performance. This is why lawyers are very careful to craft exactly how those expectations are defined. But I think they are important because performance matters more and more each day.
First let's look at a public facing scenario, the 3rd party ad service. These things will drag your site to its knees, costing you large chunks of revenue because visitors simply go elsewhere after they become frustrated waiting on your site to be usable. This morning I was trying to read Business Insider and it was just crawling. Not because the Business Insider site itself was slow, but it loaded so many 3rd party scripts it was taking around 50 seconds to complete. I verified it using WebPageTest.org. I got a whopping 7.7MB of data and over 450 HTTP requests. WebPageTest.org got even worse numbers.
Two things you can extrapolate from the Business Insider issues, the 3rd party providers were probably technically meeting their SLA agreements, but were failing on performance. This is called a single points of failure or SPOF and are killing web sites everywhere. I can almost guarantee there is almost no performance level agreement in place. So today Business Insider was a failure due to it's 3rd party content providers.
As I spend more and more time in the enterprise and see how poor application architectures are killing productivity. I see many similar situations in every shop. However I don't think I have ever known of an internal business application with a SLA agreement with their business stakeholders.
What should the SLA encompass? Uptime for sure. Just like 3rd party services the business can't afford for its internal, behind the firewall, applications to be down. As developers we cant simply slough this off as the Networking guys responsibilities. We have a major stake in this as well. Think about having seamless deployments, ensuring internal application errors do not break the system, etc. This means you need to to test your code thoroughly with Unit and Integration tests. It also means you need to have a solid error handling and reporting system in place. The application needs to keep running, even if there is a problem and of course report it so you can fix it ASAP!
Performance should also be a major component of the agreement. Slow line of business applications are killing today's productivity. Employees are simply sitting and waiting for the the application to work. Today there are no excuses for anything over 1 second and I am serious. I have not seen an application that could not meet the 1 second rule that was not using a very outdated back-end and even then most are adequate to provide a 1 second response.
Finally there should be an update agreement. Two weeks is a good target. Every 2 weeks the line of business application should have updates pushed. They can be very minor or they can be very major. The point is, keep improving the application. Make your fellow employees more productive and your company more profitable. Adopt a real agile development schedule, not the WaterFagile (the waterfall development strategy employed by enterprises with daily stand up so they can call it agile) I see executed in EVERY enterprise I enter. Just having a daily stand up meeting does not Agile make. You need to ship every 2 weeks and that means something new actually becomes usable by the business. Do it, you and your stakeholders will like it, trust me.
When I was running Extreme Web Works I typically had dozens of small business projects active at any given time. They were updated sometimes several times a day. My customers loved it. They bought more development from me because it energized their mind, made them excited about their business. While stressful at times I think I loved it because it never got boring and it was exciting to see my work actually help my clients.
Today I focus on the enterprise and I see it repeated over and over, people are simply not happy with their software. The developers don't enjoy writing it. IT hates supporting it. It takes forever to see simple changes and bug fixes deployed. I am also starting to really count the dollars lost due to slow performing applications and it is staggering.
So both business stakeholder and development manager seriously think about an internal SLA. Include uptime, performance and update frequency commitments. I think you will ultimately be happier on both ends of the agreement and your business should be more profitable.