When developing a software product, sooner or later you need to update a service in a production environment. To conduct this in a controlled manner and without impacting end-user experience, the quality of the new service has to be ensured in an automated way.
💡 A quality gate answers one question: Does my service meet all defined quality criteria?
Keptn quality gates provide you a declarative way to define quality criteria of your service. Therefore, Keptn will collect, evaluate, and score those quality criteria to decide if a new version is allowed to be promoted to the next stage or if it has to be held back.
Keptn quality gates base on the concepts of Service-Level Indicators (SLIs) and Service-Level Objectives (SLOs). Therefore, it is possible to declaratively describe the desired quality objective for your applications and services.
A service-level indicator is a “carefully defined quantitative measure of some aspect of the level of service that is provided” (as defined in the Site-Reliability Engineering Book).
An example of an SLI is the response time (also named request latency), which is the indicator of how long it takes for a request to respond with an answer. Other prominent SLIs are error rate (or failure rate), and throughput. Keptn defines all SLIs in a dedicated
sli.yaml file to make SLIs reusable within several quality gates. To learn more about the SLI configuration, please continue here.
A service-level objective is “a target value or range of values for a service level that is measured by an SLI.” (as defined in the Site-Reliability Engineering Book).
An example of an SLO can define that a specific request must return results within 100 milliseconds. Keptn quality gates can comprise several SLOs that are all evaluated and scored, based even on different weights for each SLO to consider different importance of each SLO. Keptn defines SLOs in a dedicated
slo.yaml. To learn more about the SLO configuration, please continue here.