VSD - [BE] Calculate DORA Performers score per project

Overview

In the new "DORA Performers score" widget, we plan to display a breakdown of the DORA score - (High/Medium/Low) so that Exec can understand the organization DORA health top to bottom.

Screenshot_2023-01-16_at_0.00.12

Problem

Currently, the DORA score is not calculated.

Proposal

  1. Adding DORA score calculation per project (for production environment of given project). Groups are out of scope for this issue.
  2. Calculate the DORA score monthly, no need for real-time results.
  3. Add a new batch processing for the score calculation. ( similar process as we have for DevOps Adoption?).
  4. Add a new API to query the score value. 👉 #411537 (closed)
  5. GitLab Ultimate only.
  6. DORA score definition:

DORA 2022 Performers score definition:

  • For DF: when DF < 1 then "Low", when DF >= 30 then "High", else "Medium".
  • For LT4C: when LT4C > 30 days then "Low", when LT4C <= 7 days then "High", else "Medium".
  • For TtRS: when TtRS > 7 days then "Low", when TtRS <= 1 day then "High", else "Medium".
  • For CFR: when CFR > 45% then "Low", when CFR <= 15% then "High", else "Medium".

The metrics are aggregate monthly:

Name Measure values
DF Deployments per month
LTfC Median per month
TtRS Median per month
CFR Average Rate per month

GraphQL API structure suggestion

  project('gitlab-org/gitlab') {
    doraScores(from: '2023-01-01', to: '2023-04-01') {
      nodes {
        date
        deploymentFrequency # low/medium/high/null
        leadTimeForChanges
        timeToRestoreService
        changeFailureRate
      }
    }
  }
  1. Don't forget to make it alpha
  2. It should be available for ultimate only
  3. Please apply lookahead since VSD will query these scores for many projects.
  4. I think we can limit from and to to be 6 months max
  5. Data for current month will be incomplete (since it's current month) so FE will have to adjust on that.

Related information

And to this comment.

Edited by charlie ablett