随着业务规模越来越大,系统越来越复杂,子系统越来越多,如果继续以碎片化的方式实现这些支撑功能,就会发现存在大量的重复工作。
所以我们自然会想到把这些配套功能做成一个平台,避免重复做轮子,减少不规范带来的沟通合作成本。
配置:主要负责资源的管理。例如机器管理、IP地址管理、虚拟机管理等。
部署:主要负责系统上线发布。比如包管理、灰度发布管理、回滚等。
监控:主要负责系统投入运行后相关数据的收集和监控,以便及时发现问题。
紧急:主要负责处理系统故障。比如停止程序,注销故障机,切换IP等。
操作和维护平台的核心设计元素是& quot四个现代化& quot:标准化、平台化、自动化、可视化。
标准化
要制定运维标准,规范配置管理、部署流程、监控指标、应急能力等。每个系统都要按照运维标准来实现,避免不同系统采用不同的处理方法。
标准化是运维平台的基础。没有标准化,就没有运维平台。
如果一个系统不能自我改造以满足操作和维护标准,该怎么办?通常的做法是不改造系统,规范适配由中间方完成。
比如某系统提供RESTful接口查询当前性能指标,运维标准是性能数据通过日志定期上报,那么你可以写一个定时程序访问RESTful接口获取性能数据,然后转换成日志上报给运维平台。平板化
传统的人工运维模式需要大量的人力,效率低下且容易出错。因此,需要在运维标准化的基础上,将运维的所有相关操作整合到运维平台中,通过运维平台完成运维工作。
运维平台的优势在于:
运维标准可以固化到平台中,不需要运维人员死记硬背。
运维平台提供了简单方便的操作,但人工操作效率低且容易出错。
运维平台是可复用的,一套运维平台可以支撑几十万个业务系统自动化。
传统人工运维效率低下的一个主要原因是进行大量的重复性操作,这些操作可以通过运维平台固化,由系统自动完成。
比如一个手工部署需要登录机器,上传包,解压包,备份旧系统,覆盖旧系统,启动新系统,需要大量重复或者类似的操作。
有了运维平台,平台需要提供自动化能力。要完成上述操作,部署人员只需单击& quot开始部署& quot按钮,并在系统部署后通知部署人员
可视化的原理类似于汽车的仪表板。如果屏幕上只显示一串数字,相信大部分人看到一串数字的第一眼都会感到眩晕,也很难将数据与具体情况联系起来。
有了仪表盘,通过仪表盘上指针的偏差范围和指针所指区域的颜色,就能一目了然的看出当前状态是低速、中速还是高速。
与简单的数据列表相比,可视化具有以下优点:
可以直观的看到数据的相关属性,比如汽车仪表盘中数据的最小值是0,最大值是100,单位是MPH。
能够显示数据的含义,比如汽车仪表盘上不同速度的颜色指示。
能够一起显示相关数据,比如汽车仪表盘的速度和里程,
测试平台的核心目的是提高测试效率和产品质量,其设计的关键是自动化。传统的测试方法是测试人员手工执行测试用例,测试效率低,重复性工作多。
通过测试平台提供的自动化能力,无需人工参与即可重复执行测试用例,大大提高了测试效率。
为了达到& quot自动化& quot,测试平台的基本架构如下图所示。
用例管理
测试自动化的主要手段是通过脚本或代码进行测试。比如单元测试用例是代码,接口测试用例可以用Python写,可靠性测试用例可以用Shell写。
为了重复执行这些测试用例,需要对测试平台进行用例管理,管理的维度包括业务、系统、测试类型、用例代码。比如网购业务的订单系统的接口测试用例。资源管理
测试用例只能在特定的运行环境下执行,包括硬件(服务器、手机、平板电脑等。)、软件(操作系统、数据库、Java虚拟机等。)和业务系统(被测系统)。
除了性能测试,一般自动化测试对性能要求不高,所以为了提高资源利用率,大部分测试平台都会使用虚拟。
技术来充分利用硬件资源,如虚拟机、Docker等技术。任务管理数据平台的核心职责主要包括三部分:数据管理、数据分析和数据应用。每一部分又包含更多的细分领域,详细的数据平台架构如下图所示。
数据管理管理平台的核心职责就是权限管理,无论是业务系统(例如,淘宝网)、中间件系统(例如,消息队列Kafka),还是平台系统(例如,运维平台),都需要进行管理。
如果每个系统都自己来实现权限管理,效率太低,重复工作很多,因此需要统一的管理平台来管理所有的系统的权限。
权限管理主要分为两部分:身份认证、权限控制,其基本架构如下图所示。