关于devops:Apache-Devlake-代码库导览

6次阅读

共计 5918 个字符,预计需要花费 15 分钟才能阅读完成。

本文作者:abeizn
GitHub 地址:https://github.com/abeizn

Apache DevLake 是什么?

研发数据散落在软件研发生命周期的不同阶段、不同工作流、不同 DevOps 工具中,且标准化水平低,导致效力数据难以留存、会集并转化为无效洞见。为了解决这一痛点,Apache DevLake 应运而生。Apache DevLake 是一款开源的研发数据平台,它通过提供自动化、一站式的数据收集、剖析以及可视化能力,帮忙研发团队更好地了解开发过程,开掘要害瓶颈与提效机会。

Apache DevLake 架构概述


<center>Apache DevLake 架构图 </center>
<br/>

  • Config UI: 人如其名,配置的可视化,其次要承载 Apache DevLake 的配置工作。通过 Config UI,用户能够建设数据源连贯,并实现数据的收集范畴,局部数据的转换规则,以及收集频率等工作。
  • Api Sever:Apache DevLake 的 Api 接口,是前端调用后端数据的通道。
  • Runner:Apache DevLake 运行的底层撑持机制。
  • Plugins:具体执行的插件业务,次要承载 Apache DevLake 的后端数据收集、扩大和转换的工作。除 dbt 插件外的插件产出 Apache DevLake 的预置数据,预置数据次要包含三层;

    • raw layer:负责贮存最原始的 api response json。
    • tool layer:依据 raw layer 提取出此插件所需的数据。
    • domain layer:依据 tool layer 层形象出共性的数据,这些数据会被应用在 Grafana 图表中,用于多种研发指标的展现。
  • RDBS: 关系型数据库。目前 Apache DavLake 反对 MySQL 和 PostgreSQL,前期还会持续反对更多的数据库。
  • Grafana Dashboards: 其次要承载 Apache DevLake 的前端展现工作。依据 Apache DevLake 收集的数据,通过 sql 语句来生成团队须要的交付效率、品质、老本、能力等各种研发效力指标。

目录构造 Tree

├── api
│   ├── blueprints
│   ├── docs
│   ├── domainlayer
│   ├── ping
│   ├── pipelines
│   ├── push
│   ├── shared
│   ├── task
│   └── version
├── config
├── config-ui
├── devops
│   └── lake-builder
├── e2e
├── errors
├── grafana
│   ├── _archive
│   ├── dashboards
│   ├── img
│   └── provisioning
│       ├── dashboards
│       └── datasources
├── img
├── logger
├── logs
├── migration
├── models
│   ├── common
│   ├── domainlayer
│   │   ├── code
│   │   ├── crossdomain
│   │   ├── devops
│   │   ├── didgen
│   │   ├── ticket
│   │   └── user
│   └── migrationscripts
│       └── archived
├── plugins
│   ├── ae
│   │   ├── api
│   │   ├── models
│   │   │   └── migrationscripts
│   │   │       └── archived
│   │   └── tasks
│   ├── core
│   ├── dbt
│   │   └── tasks
│   ├── feishu
│   │   ├── apimodels
│   │   ├── models
│   │   │   └── migrationscripts
│   │   │       └── archived
│   │   └── tasks
│   ├── gitextractor
│   │   ├── models
│   │   ├── parser
│   │   ├── store
│   │   └── tasks
│   ├── github
│   │   ├── api
│   │   ├── models
│   │   │   └── migrationscripts
│   │   │       └── archived
│   │   ├── tasks
│   │   └── utils
│   ├── gitlab
│   │   ├── api
│   │   ├── e2e
│   │   │   └── tables
│   │   ├── impl
│   │   ├── models
│   │   │   └── migrationscripts
│   │   │       └── archived
│   │   └── tasks
│   ├── helper
│   ├── jenkins
│   │   ├── api
│   │   ├── models
│   │   │   └── migrationscripts
│   │   │       └── archived
│   │   └── tasks
│   ├── jira
│   │   ├── api
│   │   ├── models
│   │   │   └── migrationscripts
│   │   │       └── archived
│   │   └── tasks
│   │       └── apiv2models
│   ├── refdiff
│   │   ├── tasks
│   │   └── utils
│   └── tapd
│       ├── api
│       ├── models
│       │   └── migrationscripts
│       │       └── archived
│       └── tasks
├── releases
│   ├── lake-v0.10.0
│   ├── lake-v0.10.0-beta1
│   ├── lake-v0.10.1
│   ├── lake-v0.7.0
│   ├── lake-v0.8.0
│   └── lake-v0.9.0
├── runner
├── scripts
├── services
├── test
│   ├── api
│   │   └── task
│   └── example
├── testhelper
├── utils
├── version
├── worker
├── Dockerfile
├── docker-compose.yml
├── docker-compose-temporal.yml
├── k8s-deploy.yaml
├── Makefile
└── .env.exemple
   

目录导览

  • 后端局部:

    • config:对.env 配置文件的读、写以及批改的操作。
    • logger:log 日志的 level、format 等设置。
    • errors:Error 的定义。
    • utils:工具包,它蕴含一些根底通用的函数。
    • runner:提供根底执行服务,包含数据库,cmd,pipelines,tasks 以及加载编译后的插件等根底服务。
    • models:定义框架级别的实体。

      • common:根底 struct 定义。
      • domainlayer:畛域层是来自不同工具数据的通用形象。

        • ticket:Issue Tracking,即问题跟踪畛域。
        • code:包含 Source Code 源代码关联畛域。以及 Code Review 代码审查畛域。
        • devops:CI/CD,即继续集成、继续交付和继续部署畛域。
        • crossdomain:跨域实体,这些实体用于关联不同畛域之间的实体,这是建设全方面剖析的根底。
        • user:对用户的形象畛域,user 也属于 crossdomain 领域。
      • migrationscripts:初始化并更新数据库。
    • plugins:

      • core:插件通用接口的定义以及治理。
      • helper:插件通用工具的汇合,提供插件所须要的辅助类,如 api 收集,数据 ETL,工夫解决等。

        • 网络申请 Api Client 工具。
        • 收集数据 Collector 辅助类,咱们基于 api 雷同的解决模式,对立了并发,限速以及重试等性能,最终实现了一套通用的框架,极大地缩小了开发和保护老本。
        • 提取数据 Extractor 辅助类,同时也内建了批量解决机制。
        • 转换数据 Convertor 辅助类。
        • 数据库解决工具。
        • 工夫解决工具。
        • 函数工具。
      • ae:剖析引擎,用于导入 merico ae 剖析引擎的数据。
      • feishu:收集飞书数据,目前次要是获取一段时间内组织内会议应用的 top 用户列表的数据。
      • github:收集 Github 数据并计算相干指标。(其余的大部分插件的目录构造和实现性能和 github 大同小异,这里以 github 为例来介绍)。

        • github.go:github 启动入口。
        • tasks:具体执行的 4 类工作。

          • *_collector.go:收集数据到 raw layer 层。
          • *_extractor.go:提取所需的数据到 tool layer 层。
          • *_convertor.go:转换所需的数据到 domain layer 层。
          • *_enricher.go:domain layer 层更进一步的数据计算转换。
        • models:定义 github 对应实体 entity。
        • api:api 接口。
        • utils:github 提取的一些根本通用函数。
      • gitextractor:git 数据提取工具,该插件能够从远端或本地 git 仓库提取 commit 和 reference 信息,并保留到数据库或 csv 文件。用来代替 github 插件收集 commit 信息以缩小 api 申请的数量,进步收集速度。
      • refdiff:在剖析开发工作产生代码量时,常常须要晓得两个版本之间的 diff。本插件基于数据库中存储的 commits 父子关系信息,提供了计算 ref(branch/tag) 之间相差 commits 列表的能力。
      • gitlab:收集 Gitlab 数据并计算相干指标。
      • jenkins:收集 jenkins 的 build 和 job 相干指标。
      • jira:收集 jira 数据并计算相干指标。
      • tapd:收集 tapd 数据并计算相干指标。
      • dbt:(data build tool) 是一款风行的开源数据转换工具,可能通过 SQL 实现数据转化,将命令转化为表或者视图,晋升数据分析师的工作效率。Apache DevLake 减少了 dbt 插件,用于数据定制的须要。
    • services:创立、治理 Apache DevLake 各种服务,蕴含 notifications、blueprints、pipelines、tasks、plugins 等。
    • api:应用 Gin 框架搭建的一个通用 Apache DevLake API 服务。
  • 前端局部:

    • congfig-ui:次要是 Apache DevLake 的插件配置信息的可视化。一些术语的解释

      • 惯例模式

        • blueprints 的配置。
        • data connections 的配置。
        • transformation rules 的配置。
      • 高级模式:次要是通过 json 的形式来申请 api,可抉择对应的插件,对应的 subtasks,以及插件所须要的其余信息。
    • Grafana:其次要承载 Apache DevLake 的前端展现工作。依据收集的数据,通过 sql 语句来生成团队须要的各种数据。目前 sql 次要用 domain layer 层的表来实现通用数据展现需要。
  • migration:数据库迁徙工具。

    • migration:数据库迁徙工具 migration 的具体实现。
    • models/migrationscripts:domian layer 层的数据库迁徙脚本。
    • plugins/xxx/models/migrationscripts:插件的数据库迁徙脚本。次要是_raw_和_tool_结尾的数据库的迁徙。
  • 测试局部:

    • testhelper 和 plugins 下的 *_test.go 文件:即单元测试,属于白盒测试领域。针对指标对象本身的逻辑,执行门路的正确性进行测试,如果指标对象有依赖其它资源或对够用,采纳注入或者 mock 等形式进行模仿,能够比拟不便地制作一些难以复现的极其状况。
    • test:集成测试,灰盒测试领域。在单元测试的根底上,将所有模块依照设计要求(如依据结构图)组装成为子系统或零碎,进行集成测试。
    • e2e:端到端测试,属于黑盒测试领域。绝对于单元测试更重视于指标本身,e2e 更器重指标与零碎其它局部互动的整体正确性,绝对于单元测试着重逻辑测试,e2e 侧重于输入后果的正确性。
  • 编译,公布局部:

    • devops/lake-builder:mericodev/lake-builder 的 docker 构建。
    • Dockerfile:次要用于构建 devlake 镜像。
    • docker-compose.yml:是用于定义和运行多容器 Docker 应用程序的工具,用户能够应用 YML 文件来配置 Apache DevLake 所须要的服务组件。
    • docker-compose-temporal.yml:Temporal 是一个微服务编排平台,以分布式的模式来部署 Apache DevLake,目前处于试验阶段,仅供参考。
    • worker:Temporal 分布式部署模式中的 worker 实现,目前处于试验阶段,仅供参考。
    • k8s-deploy.yaml:Kubernetes 是一个可移植、可扩大的开源平台,用于治理容器化的工作负载和服务,可促成申明式配置和自动化。目前 Apache DevLake 已反对在 k8s 集群上部署。
    • Makefile:是一个工程文件的编译规定,形容了整个工程的编译和链接等规定。
    • releases:Apache DevLake 历史 release 版本的配置文件,包含 docker-compose.yml 和 env.example。
    • scripts:shell 脚本,包含编译 plugins 脚本。
  • 其余:

    • img:logo、社区微信二维码等图像信息。
    • version:实现版本显示的反对,在正式的镜像中会显示对应 release 的版本。
    • .env.exemple:配置文件实例,包含 DB URL, LOG 以及各插件的配置示例信息。

如何分割咱们

  • Github 地址:https://github.com/apache/inc…
  • 官网地址:https://devlake.apache.org/
  • Slack: 通过 Slack 分割 https://devlake-io.slack.com/…
  • 退出社群:点击退出 Slack 或点击下方代码仓库地址 > Readme > 扫描微信群二维码
  • DevLake Podling Website:https://incubator.apache.org/…
  • 如何参加奉献:https://github.com/apache/inc…
  • 订阅邮件列表理解动静:dev@devlake.incubator.apache.org
  • 微信公众号正在建设中:欢送关注“DevLake 社区”
正文完
 0