运维平台的核心要素是“四化”:标准化、平台化、自动化、可视化。
需要定制运维标准,规范配置管理、部署流程、监控指标、应急能力等,各系统按照运维标准来实现,避免不同的系统不同的处理方式。标准化是运维平台的基础,没有标准化就没有运维平台。
如果某个系统就是无法改造自己来满足运维标准,那该怎么办呢?常见的做法是不改造系统,由中间方来完成规范适配。例如,某个系统对外提供了RESTFUL接口的方式来查询当前的性能指标,而运维标准是通过日志定时上报,那么就可以写一个定时程序访问RESTFUL接口获取性能指标,而运维标准是性能数据通过日志定时上报,那么就可以写一个定时程序访问RESTFUL接口获取性能数据,然后转换为日志,上报到运维平台。
传统的手工运维方式需要投入大量人力,效率低,容易出错,因此需要在运维标准化的基础上,将运维的相关操作都集成到运维平台上,通过运维平台来完成运维工作。
运维平台的好处有:
传统手工运维效率低下的一个主要原因就是要执行大量重复操作,运维平台可以将这些重复操作固化下来,由系统自动完成。
例如,一次手工部署需要登录机器、上传包、解压包、备份旧系统、覆盖旧系统、启动新系统,这个过程中需要执行大量重复或者类似的操作。有了运维平台后,平台需要提供自动化的能力。,完成上述操作,部署人员只需要在最开始单机“开始部署”按钮,系统部署完成后,通知部署人员即可。
运维平台有非常多的数据,如果全部通过人工去查询数据再来判断,则效率很低。尤其是在故障应急时,时间就是生命,处理问题都是争分夺秒,能减少1分钟的时间就可挽回几十万元的损失,可视化的主要目的就是为了提升数据查看效率。
可视化的原理与汽车仪表盘类似,如果只是一连串的数字显示在屏幕上,相信大部分人一看到一连串的数字,第一感觉是眼花,而且很难讲数据与具体的情况联系起来。而有了仪表盘后,通过仪表盘的指针偏离幅度以及指针指向的区域颜色,能够一目了然的看出当前的状态是低速、中速还是高速。
可视化相比简单的数据罗列,具备下面优点:
测试平台核心的职责当然是测试了,包括单元测试、集成测试、接口测试、性能测试等,都可以在测试平台来完成。
测试平台的核心目的是提升测试效率,从而提升产品质量,其设计关键就是自动化。传统的测试方式是测试人员手工执行测试用例,测试效率低,重复的工作多,为了达到自动化的目标,测试平台的基本架构如下图所示:
测试自动化的主要手段就是通过脚本或者代码来进行测试,例如单元测试用例是代码、接口测试用例可以用python来写、可靠性测试用例可以用Shell来写。为了能够重复执行这些测试用例,测试平台需要将用例管理起来,管理的维度包括业务、系统、测试类型、用例代码。例如,网购业务的订单系统的接口测试用例。
测试用例要放到具体的运行环境中才能执行,运行环境包括硬件(服务器、手机、平板电脑等)、软件(操作系统、数据库、java虚拟机)、业务系统(被测试的系统)。
除了性能测试、一般的自动化测试对性能要求不高,所以为了提升资源利用率,大部分的测试平台都会使用虚拟技术来充分利用硬件资源,如虚拟机、docker等技术。
任务管理的主要职责是将测试用例分配到具体的资源上执行,跟踪任务的执行情况。任务管理是测试平台设计的核心。它将测试平台的各个部分串联起来从而完成自动化测试。
测试任务执行完成后,需要记录各种相关数据(例如,执行时间,执行结果,用例执行期间的CPU,内存占用情况等等),这些数据具备下面这些作用:
数据平台的核心职责包括三个方面:数据管理、数据分析和数据应用。每一部分又包含更多的细分领域,详细的数据平台架构如下图所示。
数据管理包括数据采集、数据存储、数据访问和数据安全四个核心职责,是数据平台的基础功能。
数据分析包括数据统计、数据挖掘、机器学艺、深度学习等几个细分领域。
数据应用很广泛,既包括在线业务,也包括离线业务。例如,推荐、广告等属于在线应用,报表、欺诈检测、异常检测等属于离线应用。
数据应用能够发挥价值的前提是需要有“大数据”,只有当数据的规模达到一定程度,基于数据的分析、挖掘才能发现有价值的规律、现象、问题等。如果数据没有达到一定规模,通常情况下做好数据统计就可以了,尤其是一些初创企业,无需一开始就参考BAT来构建自己的数据平台。
管理平台的核心职责就是权限管理,无论是业务系统(例如,淘宝网)、中间件系统(例如消息队列RocketMQ),还是平台系统(例如,运维平台),都需要进行管理。如果每个系统都自己来实现权限管理,效率太低、重复工作很多,因此需要统一的管理平台来管理所有的系统的权限。
权限管理主要分为两部分:身份认证、权限控制,其基本架构如下图所示。
确定当前的操作人员身份,防止非法人员进入系统。例如,不允许匿名用户进入系统。为了避免每个系统都自己来管理用户,通常情况下会使用企业账号来做统一认证和管理。
根据操作人员的身份确定操作权限,防止未经授权的人员进行操作。例如不允许研发人员进入财务系统查看别人的工资。