架构设计
目录
Summary
- 介绍DORY的核心架构设计原理以及设计特点
- 介绍DORY依赖的基础服务组件
- 介绍DORY管理的DevOps工具链
架构设计
DORY的核心架构
- DORY的核心架构参见下图:
- DORY是一个无状态设计的应用服务,她的核心能力是任务调度器。
- DORY的所有任务执行都是在执行器(executor)远程docker中执行,DORY连接远程docker,下发各种编译构建任务、镜像打包任务、代码扫描任务,把执行任务的负载分担到远程执行器(executor)中。
- 作为任务调度器的DORY以及作为任务执行器的executor都是分布式架构,都可以根据调度任务的负载以及执行任务的负载进行水平扩缩容,具有很高的弹性。
- DORY接管DevOps持续交付工具链各个组件,自动为项目开通相关组件配置,包括代码仓库(支持
Gitlab
和Gitea
)、容器镜像仓库(支持Harbor
)、依赖与制品仓库(支持Nexus
)、代码扫描(企业版支持
,支持Sonarqube
)、镜像扫描(企业版支持
,支持Anchore-Engine
)。- DORY可以管理多个kubernetes集群、OpenStack集群(
企业版支持
)、VmWare集群(企业版支持
)、多个主机(企业版支持
),把编译、打包的微服务,部署到kubernetes环境或者各类主机环境。企业版支持
通过Istio
服务网格,让应用的多个微服务支持蓝绿发布
、金丝雀发布
、AB测试
三种混合灰度发布模式。- DORY可以管理多个数据库,把数据库的执行或者回滚脚本在多个数据库中执行(
企业版支持
)。- DORY可以部署在kubernetes集群中,或者使用docker-compose方式进行部署,生产环境部署推荐使用kubernetes方式,
- 该架构有如下特点:
- 分布式: Dory-Engine使用无状态设计架构,轻松实现分布式水平扩缩容。远程步骤执行器(Docker)可以根据工作负载,进行水平扩缩容实现高弹性。
- 易扩展: 通过容器技术,让步骤支持各种执行环境,实现应用上云流程的灵活扩展。
- 多云编排: 可以同时接管多个不同的云原生环境、主机环境、各种数据库环境,把应用发布到多个不同环境。
- 协同治理: 接管DevOps持续交付工具链各个组件,自动开通配置好各个组件和云原生环境,应用上云从未如此简单。
DORY依赖的基础服务
- DORY依赖的基础服务架构参见下图:
- DORY使用
MongoDB
作为数据库,Redis
作为缓存,OpenLDAP
作为用户中心。- DORY可以同时连接多个远程docker作为执行器(executor)
- DORY和所有执行器(executor)使用一套共享存储,流水线执行过程中产生的各种文件都会存储到共享存储中,可以通过设置开关在流水线执行结束后清理流水线执行过程的临时数据。
DORY管理的DevOps工具链
- 代码仓库: DORY支持管理两种代码仓库(
Gitlab
和Gitea
),为简化项目接入,开通项目过程中会自动在代码仓库中创建项目分组以及演示项目代码仓库,并自动创建好相关分支。执行应用上云流水线,DORY会从代码仓库拉取源代码,进行编译构建。 - 依赖与制品仓库: DORY支持管理依赖与制品仓库(
Nexus
),默认情况下,代码编译打包需要获取的第三方依赖将会通过Nexus作为代理。对于DORY企业版(EE)
,依赖与制品仓库还用于存放主发布的应用制品。 - 容器镜像仓库: DORY支持管理容器镜像仓库(
Harbor
),项目各个微服务的容器镜像打包后,会把容器镜像推送到容器镜像仓库进行保存。微服务需要发布到kubernetes集群的时候,kubernetes集群从容器镜像仓库拉取容器镜像,启动项目的各个微服务。 - 代码扫描工具:
DORY企业版(EE)
支持管理代码扫描工具(Sonarqube
),项目各个微服务的代码将会推送到代码扫描工具中进行扫描,并输出代码质量报告。 - 容器镜像扫描工具:
DORY企业版(EE)
支持管理容器镜像扫描工具(Anchore-Engine
),微服务打包的容器镜像将会推送到容器镜像扫描工具中进行扫描,并输出镜像扫描安全报告。 - 部署自动化工具:
DORY企业版(EE)
支持管理部署自动化工具(Ansible
),当微服务需要发布到主机环境的时候,部署自动化工具将会从依赖与制品仓库获取微服务的制品,并通过自动化脚本,自动部署到多台主机上。 - 服务网格:
DORY企业版(EE)
支持管理服务网格(Istio
),通过服务网格,实现应用多个微服务调用链的蓝绿发布
、金丝雀发布
、AB测试
三种混合灰度发布策略。 - 自动化测试工具:
DORY企业版(EE)
支持管理三种自动化测试工具(Postman
、Jmeter
、Selenium
),通过自动化测试工具,自动调用相关测试脚本,执行接口自动化测试、性能自动化测试以及界面自动化测试。 - 数据库注入工具:
DORY企业版(EE)
支持管理数据库注入工具(Flyway
),通过数据库注入工具,使用流水线对数据库进行数据库的脚本注入或者脚本回滚。