# 平台设计

示意图示意图

# 租户(企业)

平台采用多租户架构设计,平台层面的所有资源对象全部关联上租户 ID,实现严格的租户隔离。一个租户推荐设置为一个企业。

# 创建企业

不是任何人都可以创建企业的,企业的创建需要联系平台超级管理员来完成。平台超级管理员是一个默认的内置账号。

有了企业后,首先应该做的事情是:企业管理员将自己企业内的相关用户添加为企业成员。企业成员的添加入口位于:

企业中心 -> 企业设置 -> 企业详情 -> 企业成员

# 集群

集群 (Cluster) 是一个由多台物理机或虚拟机组成的有机整体,是一个由 Kubernetes + Docker 组建的集群。集群主要用于资源的管理和服务的部署运行。

一个集群内的所有节点(也就是主机)的网络是互通的,集群与集群之间的网络是相互隔离的。每一个集群由三种类型的节点(主机)组成,分别是 Master 节点、LB 节点和 Worker 节点。Master 节点负责整个集群的高可用管控,一般是 3 个节点;LB 节点是集群的访问流量入口,一般为 2 节点,LB 需要外网 IP 地址能够被用户访问;Worker 节点用于部署应用服务,节点数按需规划即可。

一个集群除了需要安装有 Kubernetes + Docker 以外,还需要安装平台提供的 Agent 程序,用于监控相关数据的采集。

集群属于企业的一种资源,集群需要被添加到企业内才能够使用。任何一个企业都可以拥有任意多个集群,比如:企业可以创建两个集群,一个集群用于应用的开发测试,另外一个集群用于应用的生产部署。

# 项目和应用

项目 (Project) 是研发运维的主要对象,一个项目就是多个应用的集合,在项目内包含了丰富的管理功能。应用 (Application) 是研发运维的最小单元,在应用内包含有应用的代码仓库、流水线等一系列 DevOps 工具。

应用分为多种类型,可根据具体的开发任务创建不同类型的应用。

# 业务应用

业务应用主要是指处理某一类业务流程的微服务组合,比如会员管理的业务应用。

# 库应用

库应用实际上就是一段编译好的二进制代码产物,可以在其他应用中被调用使用,比如一个人脸识别库,用户可以下载库然后根据库对接使用说明文档进行使用。

# 移动应用

移动应用主要是指移动 App 客户端,平台包含了移动应用开发商和证书管理的同时,还覆盖了代码构建、发布、上架、市场的全链路。

# 环境

环境 (Environment) 是应用的一个逻辑概念,每个应用拥有开发、测试、预发和生产四大环境。四个环境可以被设置共享一个集群,也可以分别设置一个独立的集群。如果资源预算充足的情况下,推荐每个环境独占一个集群,至少生产环境应该独占一个集群。

WARNING

不是所有类型的应用都拥有环境,那些不需要部署运行的应用就没有环境,比如:库应用。

# 服务和 Runtime

服务 (Service) 一般就是一个单体的进程,比如:一个 Java 进程,一个 PHP 进程。一个应用可能是一个单体服务,也可能拥有多个服务。

TIP

此处的服务 (Service) 不等同于 Kubernetes 的 Service,它们之间没有任何关系,只是刚好名字相同罢了。

Runtime 就是一个应用部署后,所有服务的集合,也可以称为应用的运行实体。任何一个应用都可以被部署多份, 也即是多个 Runtime。

# 容器

容器就是 Linux Container,也是 docker 容器。一个服务进程一般运行在一个容器内,一个容器也称为服务的一个实例。为了高可用,服务通常会运行多个实例。

# 角色和权限

企业内的任何一个成员用户,都至少拥有一个角色,也可以同时拥有多个角色,不同的角色对应了不同的权限。

TIP

任何一个用户都可以被添加成多个企业的成员;也即是一个用户可以拥有多个企业。

# 系统管理员

系统管理员是整个系统的超级管理员,拥有企业管理的权限,覆盖企业的创建、编辑、删除、企业管理员追加和降级的权限。

# 企业管理员

企业管理员拥有企业内所有的访问和操作权限,是企业内的最高权限角色。将用户添加成企业成员、集群管理、创建项目等操作只有企业管理员才能够完成。

# 企业研发工程师

企业研发工程师主要是指参与项目管理、开发、测试等工作中的成员,企业研发工程师有权限访问 DevOps 平台和微服务治理平台,但是具体能够访问的项目取决于该成员在具体项目的角色权限。

# 企业运维工程师

企业运维工程师主要是维护管理企业中所有计算资源、服务、任务、中间件、运维告警等。

具体权限有:

  • 集群添加、编辑、上下线、删除
  • 云资源管理( 包含云主机、网络、存储、云 addon 等管理)
  • 企业内所有服务、任务、addon 运维监控
  • 企业告警规则设置和告警消息查看
  • 运维报告管理和查看
  • 云账号追加、删除管理

# 企业技术支持

企业技术支持角色主要是用于解决定位平台自身问题所设,所以该角色能够查看所有功能,除企业工单系统外其他功能只有只读权限。

# 企业数据管理员

企业数据管理员拥有快数据平台中数据相关的管理权限,无其他企业项目开发和管理的权限

# 企业数据开发工程师

企业数据开发工程师能够基于快数据平台进行数据开发相关工作,目前拥有快数据平台中所有的权限

# 项目所有者

项目所有者是拥有项目最高权限的成员,项目所有者最多只有5位。

TIP

一个用户可以同时是多个项目的成员,甚至管理员。

# 项目经理

项目经理为项目的主要管理人员,为项目成本、质量、计划负责,其权限局限在项目内,不能跨项目使用。

具体权限有:

  • 应用创建、编辑、删除
  • 迭代计划的创建、编辑、删除
  • 项目成员的添加、删除
  • 项目成员角色的分配
  • 项目设置管理权限
  • 项目 addon 的创建、删除

# 项目主管

项目主管在项目主要负责任务拆分和开发工程师任务的分配,为研发过程进度和质量负责。

具体权限有:

  • 需求、任务、缺陷的管理
  • 任务工时的评估和人员分配
  • 项目成员的管理
  • 项目设置管理权限

# 产品经理

产品经理主要负责项目整体需求管理和迭代规划的管理。

具体权限有:

  • 待办需求中需求的追加、编辑、删除

# 项目开发工程师

项目开发工程师是项目中具体任务的研发人员,在项目中主要为自己相关的需求、任务、缺陷负责。

# 项目测试工程师

项目测试工程师为项目的质量负责,在项目主要负责测试用例、测试计划以及测试实施工作。

具体权限有:

  • 项目测试用例的管理
  • 项目测试计划的管理

# 应用所有者

应用管理员具有应用的最高管理权限,覆盖应用内所有的访问和操作权限,应用的四大环境( 开发、测试、预发、生产 )都可以被应用所有者访问和操作。

# 应用主管

应用主管是应用主要管理成员,和应用所有者相比,拥有除应用删除以外的所有功能,

具体权限有:

  • 应用成员的添加、删除
  • 应用成员角色的分配
  • 应用修改和设置
  • 应用的删除
  • 应用所有代码分支的管理权限
  • 开发、测试、预发、生产环境的操作权限

# 应用开发工程师

是指具体应用的开发工程师,其权限有效范围只局限在应用内,跨应用无效,主要的职责是应用具体功能的开发工作。

具体权限有:

  • 拥有代码仓库中开发、问题修复的分支管理权限( Feautre 和 Hotfix )
  • 开发和测试环境的操作权限

# 应用测试工程师

应用测试工程师在应用中主要有测试环境部署、下线的权限,具体代码仓库的操作权限取决于仓库保护规则。

# 项目报告者 (Reporter)

项目报告者主要是针对项目产品的外部客户或者项目关注人员,该角色在使用这个项目产品的时候,可以通过项目工单来提出相关产品 bug 、产品改善建议以及产品疑问咨询等方面的问题。