互联网架构模板:“平台”技术
极客时间:《从 0 开始学架构》:互联网架构模板:“平台”技术
运维平台
运维平台核心的职责分为四大块:配置、部署、监控、应急,每个职责对应系统生命周期的一个阶段,如下图所示:
- 配置:主要负责资源的管理。例如,机器管理、IP 地址管理、虚拟机管理等。
- 部署:主要负责将系统发布到线上。例如,包管理、灰度发布管理、回滚等。
- 监控:主要负责收集系统上线运行后的相关数据并进行监控,以便及时发现问题。
- 应急:主要负责系统出故障后的处理。例如,停止程序、下线故障机器、切换 IP 等。
运维平台的核心设计要素是“四化”:标准化、平台化、自动化、可视化。
1、标准化
需要制定运维标准,规范配置管理、部署流程、监控指标、应急能力等,各系统按照运维标准来实现,避免不同的系统不同的处理方式。标准化是运维平台的基础,没有标准化就没有运维平台。
如果某个系统就是无法改造自己来满足运维标准,那该怎么办呢?常见的做法是不改造系统,由中间方来完成规范适配。
2、平台化
传统的手工运维方式需要投入大量人力,效率低,容易出错,因此需要在运维标准化的基础上,将运维的相关操作都集成到运维平台中,通过运维平台来完成运维工作。
运维平台的好处有:
- 可以将运维标准固化到平台中,无须运维人员死记硬背运维标准。
- 运维平台提供简单方便的操作,相比之下人工操作低效且容易出错。
- 运维平台是可复用的,一套运维平台可以支撑几百上千个业务系统。
3、自动化
传统手工运维方式效率低下的一个主要原因就是要执行大量重复的操作,运维平台可以将这些重复操作固化下来,由系统自动完成。
4、可视化
运维平台有非常多的数据,如果全部通过人工去查询数据再来判断,则效率很低。尤其是在故障应急时,时间就是生命,处理问题都是争分夺秒,能减少 1 分钟的时间就可能挽回几十万元的损失,可视化的主要目的就是为了提升数据查看效率。
可视化相比简单的数据罗列,具备下面这些优点:
- 能够直观地看到数据的相关属性
- 能够将数据的含义展示出来
- 能够将关联数据整合一起展示
测试平台
测试平台核心的职责当然就是测试了,包括单元测试、集成测试、接口测试、性能测试等,都可以在测试平台来完成。
测试平台的核心目的是提升测试效率,从而提升产品质量,其设计关键就是自动化。
为了达到“自动化”的目标,测试平台的基本架构如下图所示:
用例管理:测试自动化的主要手段就是通过脚本或者代码来进行测试
资源管理:为了提升资源利用率,大部分的测试平台都会使用虚拟技术来充分利用硬件资源,如虚拟机、Docker 等技术。
任务管理:任务管理的主要职责是将测试用例分配到具体的资源上执行,跟踪任务的执行情况。任务管理是测试平台设计的核心,它将测试平台的各个部分串联起来从而完成自动化测试。
数据管理:测试任务执行完成后,需要记录各种相关的数据(例如,执行时间、执行结果、用例执行期间的 CPU、内存占用情况等),这些数据具备下面这些作用:
- 展现当前用例的执行情况
- 作为历史数据,方便后续的测试与历史数据进行对比,从而发现明显的变化趋势。
- 作为大数据的一部分,可以基于测试的任务数据进行一些数据挖掘。
数据平台
数据平台的核心职责主要包括三部分:数据管理、数据分析和数据应用。详细的数据平台架构如下图所示:
数据管理:
数据管理包含数据采集、数据存储、数据访问和数据安全四个核心职责,是数据平台的基础功能。
- 数据采集:从业务系统搜集各类数据。
- 数据存储:将从业务系统采集的数据存储到数据平台,用于后续数据分析。
- 数据访问:负责对外提供各种协议用于读写数据。
- 数据安全:通常情况下数据平台都是多个业务共享的,部分业务敏感数据需要加以保护,防止被其他业务读取甚至修改,因此需要设计数据安全策略来保护数据。
数据分析:
数据分析包括数据统计、数据挖掘、机器学习、深度学习等几个细分领域。
- 数据统计:根据原始数据统计出相关的总览数据。
- 数据挖掘:这里的数据挖掘主要是指传统的数据挖掘方式。
- 机器学习、深度学习:机器学习和深度学习属于数据挖掘的一种具体实现方式,由于其实现方式与传统的数据挖掘方式差异较大,因此数据平台在实现机器学习和深度学习时,需要针对机器学习和深度学习独立进行设计。
数据应用:
数据应用很广泛,既包括在线业务,也包括离线业务。,只有当数据的规模达到一定程度,基于数据的分析、挖掘才能发现有价值的规律、现象、问题等。
管理平台
管理平台的核心职责就是权限管理
权限管理主要分为两部分:身份认证、权限控制,其基本架构如下图所示。
身份认证:确定当前的操作人员身份,防止非法人员进入系统。
权限控制:根据操作人员的身份确定操作权限,防止未经授权的人员进行操作。
PS:
运维平台或者测试平台,有的公司是由中间件团队负责开发,有的是运维和测试团队自己开发,你觉得两种方式各有什么优缺点,分别适用什么场景呢?
运维和测试平台由中间件团队开发:
优点:平台架构有保障,代码质量高,开发效率高
缺点:前期业务沟通成本大
适用场景:运维和测试开发能力弱。
运维和测试平台的由运维和测试人员开发:
优点:前期沟通成本低
缺点:技术能力弱,开发效率低
场景:运维和测试开发能力强