关于云计算环境下运维模式转变的思考
2020-01-02许瀚,陈剑,董彬,俞亮
许 瀚,陈 剑,董 彬,俞 亮
(湖北华中电力科技开发有限责任公司,武汉 430077)
0 引言
随着云计算技术的日趋成熟,企业大量应用上云,海量数据将在云平台得到统一的收集,计算,存储,加工,处理。数据的集中处理还将导致数据增值,推动新兴业务的诞生。企业业务模式和IT架构的转变势必带来运维模式的转变,传统IT运维向云运维模式转变是必然趋势。云计算在为用户提供高弹性,高可用性,高可扩展性服务的同时,也给运维工作带来新的挑战。如何做好云计算时代的运维,是每一个运维人必须思考的问题。
1 运维岗位职能的转变
传统意义上的运维工作方向很多,随着业务规模的不断发展,运维岗位会划分的很细。一般情况下运维团队的工作和职责分为:应用运维,系统运维,数据库运维,运维研发,运维安全等。而在云计算环境下,无论是私有云还是公有云,运维的诸多岗位都将极大的依赖云计算环境开展工作,这一点是毋庸置疑的。
1.1 系统运维
首先,系统运维工作内容会发生较大的改变,原来系统运维工程师的主要工作是对系统的基础设施进行运行维护,主要工作包括对数据中心各类硬件,网络,操作系统等基础服务的建设选型,资产管理,维护等。现在,由于云平台建设的需求,硬件维护的体量和IT架构都会发生变化。云平台使得基础设施资源更加集中,体量变大,运维工作量也倍增。一旦出现问题,所造成的影响和损失也将是巨大的。相较传统运维模式,云平台体量和IT架构的变化使得传统的基础设施的管理和运维方式不再凑效。系统运维工作面临巨大的挑战。为应对这种情况,阿里为云平台开发了一整套的自动化管理工具-天基系统,用来管理数据中心的硬件生命周期,包括程序、配置、操作系统镜像、数据等,极大的提高了基础设施运维效率,并保证了系统的高可用性。
按照传统运维模式对于运维职责的划分,云平台自身的运维工作应该划分到系统运维当中去。但是由于云平台运维处于整个运维工作的核心位置,具有一定的特殊性。在运维岗位上应该将云平台运维工作单独划分出来,其主要工作包括云平台各个功能模块日常巡检,监控管理,变更管理,故障处理,告警管理。
1.2 应用运维
在应用运维方面,云平台环境天生适合进行微服务和容器的部署。企业原先的大量应用会根据实际情况进行架构的分拆和重构。但是因为安全,时间,成本上的考虑,长时间内,单一应用和微服务必将长期共存,且单体应用模式向微服务架构逐步演进。应用的运维在云平台环境下和传统运维具有如下不同。传统应用运维在部署一个应用时需要选型购买服务器,安装基础服务,包括操作系统,申请资源,配置网络等。而在云平台环境下,基础服务只需要向平台管理员提需求,走正常流程进行申请,时间上相较传统运维方式要短的多,这样就极大的提升了应用部署的效率。并且在大部分云平台环境下,运维监控系统已经做的很好,功能十分强大,故障的预警,排查,修复都更加快速和自动化。因此从这两个方面来讲,传统应用运维工作是在弱化,原来的应用运维的的工作量在减小,效率在提高,原来需要5个人完成的工作现在可能只需要1个人就能完成。
应用运维方面另外一个大的变化是大量应用微服务化,微服务化将是企业上云过程中一个显著的趋势。微服务的运维将成为应用运维的一个新的方面,也是一个重点方面。微服务在带来良好的设计和架构理念的同时,也为运维带来了额外的复杂性,主要体现在一是微服务将单体应用拆分成多个独立的功能模块,在此架构下,微服务的数量将变得十分庞大,服务与服务之间还存在依赖关系。当模块发生变更和快速交付时,就需要对服务与服务之间的依赖关系,服务与业务之间的依赖关系进行梳理。因此,一个企业选择微服务架构初始,就应该在提前规划好一体化的DevOps平台。如果不使用DevOps做微服务,整个环境将会变得混乱,使得开发,测试和运维成本剧增。在微服务架构下做运维,运维思路一定要转变,一定要将视角转换到应用这个维度,从一开始就要统一规划,从一开始就要将架构、开发和运维的工作统一起来考虑问题,这一点是与传统运维的思路完全不同的。其二一个比较重要的问题是微服务的监控和预警问题需要重视。微服务拆分导致故障点增多,服务调用关系更加复杂,需要监控的点增多。原本就存在的监控告警风暴问题会更加突出。要实现精确告警,故障定位就必须做好告警的分级和合并。将真正重要的告警呈现在运维人员面前,而自动化的处理那些不重要的告警信息,避免重要的告警信息淹没在大量的无用信息中。
1.3 运维开发
传统意义上的运维开发主要关注的是利用脚本编写小工具进行自动化部署,批量命令,日志分析,以此辅助日常运维工作。更进一步,根据企业特定的运维环境和条件,选用合适的技术路线和框架,自主开发本单位的监控运维平台。这也是大多数传统公司对运维开发人员的基本要求。在云平台环境下,运维开发除了以上能力要求外,最主要的是要在观念上发生转变,运维开发不仅仅是会开发的运维,而是要体现在DevOps运维体系的建立上,体现在运维和开发的紧密合作上。整个应用的生命周期中,运维和开发都必须全程参与规划,参与开发,参与测试,参与变更,参与运维,以实现持续交付,高效发布,运维人员实际上是在运维自己开发的系统。另外一点,各大云平台都开放有大数据研发平台,提供数据集成、数据开发、数据管理、数据治理、数据分享等全方位的产品服务,帮助研发人员进行数据价值的挖掘和探索。对于运维人员来说,则是需要运用机器学习算法从海量的运维数据中不断学习,不断总结规则,以达到指标监控、异常检测、故障发现、故障止损、成本优化、容量规划和性能优化等目标。这需要运维开发人员具有两个方面的能力,把具体的运维场景抽象为机器学习算法的能力,把机器学习算法实现成脚本,软件或者平台的开发能力。
2 云计算时代运维重要特征
2.1 基础设施即代码
传统运维人员关心的是硬件,如服务器,网络设备,机房水电等。机器较少时,这些工作可以凭借人力完成。但当运维升级到云平台时代时,机器多则上千,有的IDC甚至达到上万的规模。在这种情况下,单靠人力是不能保证提供稳定、安全、可靠的服务的。再者,在云计算服务也对基础设施的管理提出了更加苛刻的要求:产品要满足快速变化的用户需求,基础设施要有更快的响应速度。产品的持续交付对部署和运维提出了更高的灵活性。运维人员需不在仅仅是开发和使用脚本,而是更好的软件开发者,承担更多开发上面的责任。
代码需要完成3个方面的事情:
标准化:以代码来定义环境,实现开发环境、测试环境、生产环境的标准化。
自动化:以自动化工具来驱动代码准备环境。包括创建环境、更新环境以及销毁环境。
可视化:以监控来可视化环境信息。环境当前状态可视、环境变更历史可视、可追溯。
2.2 对运维人员的新要求
云计算运维已经完全打破了传统运维模式,对从业人员素质提出了更高的要求。传统意义上,要想做好运维工作,除了必须有本运维领域的基础知识和经验外,可能还需要有python或者shell的编程能力,以应对一些简单的自动化运维场景。由于云计算所有服务都是基于云平台的服务和功能模块来开发,这就要求工程师对云平台服务框架有个整体的把握和了解,既能够为业务设计合理的云计算架构,还要保证代码在云平台上的平稳测试、部署、集成。在这个意义上,运维工程师到是开发还是运维已经很难分的清,界限已经很模糊。实际上,DevOps运维体系的建立是云平台运维的基本内在要求。运维人员的工作会前置到产品设计阶段,协助研发人员改造服务使其可以更加方便的接入到已有的自动化运维体系中去。此外,运维人员不仅要掌握基本运维知识,还需要有人工智能算法能力。针对具体的应用场景开发机器学习算法来智能的完成云平台运维所面临的一系列挑战和难题,例如:应用的快速部署,快速更新,实时监控,自动容量预配置、负载均衡等。在故障处理方面,机器学习算法更是大有用武之地。例如:异常检测,根因分析,故障自愈等。
2.3 智能运维
云平台环境为智能运维的落地带来了现实的物质基础。大数据平台必须依托云计算的分布式处理、分布式数据库、云存储和虚拟化技术。它的特色在于对海量数据的挖掘,这其中就包括海量的运维数据,如监控时间序列,日志,告警信息等。以前,各类海量数据产生和存储在不同平台,不同位置,不同格式,很难实现统一的处理和深度融合。智能运维仍然还停留在初步探索阶段,成功落地难度巨大。以阿里云平台为例,监控和告警系统已经集成的十分完善了。各类海量数据在大数据研发平台得到了统一的处理,并且大数据研发平台以服务模块的形式对外提供二次应用开发。对于运维人员来说,智能运维算法集成环境已经完备。可以预见,在不久的将来,智能运维算法应用会取得大的突破。运维人员利用手工,人力开展运维工作的现状将一去不复返。运维工程师的劳力将得到极大的解放的同时,也对从业人员素质提出了更高的要求。