apache / incubator-devlake

Apache DevLake is an open-source dev data platform to ingest, analyze, and visualize the fragmented data from DevOps tools, extracting insights for engineering excellence, developer experience, and community growth.
https://devlake.apache.org/
Apache License 2.0
2.51k stars 495 forks source link

[Feature][Version Management] Track the distinct versions across customers and the lead time for the customers to upgrade to the latest version #7415

Open Startrekzky opened 2 months ago

Startrekzky commented 2 months ago

Search before asking

Use case

This is a use case contributed by a DevLake user:

Untitled-2023-09-13-1844

They release a new "cluster chart" at regular intervals, but enterprise customers, each with unique change requirements and schedules, may not upgrade immediately.

As shown in the diagram, they serve multiple customers. Each customer may have one or more management clusters, primarily for georeplication. Each management cluster oversees multiple workload clusters (corresponding to different development stages like dev, staging, prod).

This DevLake user's primary concern is to minimize the number of distinct cluster chart versions in circulation to reduce maintenance costs. They track the time from a new cluster chart release to its deployment across most workload clusters. Additionally, they need to segment deployment data by customer, management cluster name, type (WAS, Azure, VMware, bare metal), and workload cluster name.

To measure the percentage of workload clusters on a specific release version, we need to know how many workload clusters are there in total. We can approximate this number using the total number of workload clusters we have seen in the past.

Description

No response

Related issues

6959

Are you willing to submit a PR?

Code of Conduct

d4x1 commented 2 months ago

To accomplish this feature. I think these things must be done:

  1. Fetch upcoming and historical releases automatically. For example, if users are using GitHub to manage releases, then we can fetch release via GitHub's API (https://docs.github.com/en/graphql/reference/objects#release). Optional: Add a new webhook which can be used to post releases by users.
  2. add a new table called cicd_deployment_attributes, use it to store the deployments additional attributes. It has three columns deployment_id attribute_name and attribute_value at least.

With these changes, we can calculate deployments's metrics group by custom attributes.

github-actions[bot] commented 1 week ago

This issue has been automatically marked as stale because it has been inactive for 60 days. It will be closed in next 7 days if no further activity occurs.