点击免费下载《应用智能运维实践(试读版)》https://developer.aliyun.com/topic/download?id=1193
本章内容简介
第三次信息技术浪潮推动应用运维技术和产品快速演进,使其在企业经营管理体系中的重要性快速提升。本章概要介绍应用运维的发展历史、核心价值和演进过程。本章从背景起源着手解释应用运维的概念,然后介绍应用运维在企业用户数字体验保障和企业运营等方面的价值,最后梳理应用运维技术伴随软件技术发展历程的演进脉络和其中具有里程碑意义的技术。
1.1 初识应用运维
应用运维保障是软件全生命周期管理过程中的关键环节。软件系统开发上线后,要达到预期的设计目标、稳定服务于目标场景,全靠运维保障支撑。应用运维系统和过程建设是企业建设完整的IT运维管理(IT Operations Management,ITOM)体系的核心。与网络运维、云环境运维、IT基础设施运维相比,应用运维更贴近用户和业务目标。
从解决的目标问题域来看,通常理解的企业应用运维包含能够对应用系统运行期状态进行监控、风险发现和管理、根源问题分析的工具集及与之对应的运维过程。应用监控和运维支撑工具需要对应用服务的目标用户使用情况、应用业务流程执行过程、应用代码执行情况及应用运行依赖的运行环境进行监控、风险监测和告警通知;应用运维过程要能够与企业现有的IT运维体系对接,遵循IT服务管理的最佳实践ITIL(Information Technology Infrastructure Library)[1],能够与工单管理系统、配置管理数据库(Configuration Management Database,CMDB)[2]对接,组成从应用风险发现、上报、定位到应用恢复的完整闭环运维管理流程。
随着物联网、大数据、虚拟化、云计算等新一代信息技术的快速发展与应用,以及企业运营对应用系统的依赖增加,应用运维在企业内部的重要性在快速提升,但新技术也使应用复杂度快速增加,企业应用运维面临更严峻的挑战。
1.2 应用运维,保障企业应用稳定运行的关键
企业数据中心、云平台、网络存在的价值和意义体现为支撑应用系统为企业的内部、外部目标用户提供持续、稳定的数字服务。如果用户使用的应用系统连接缓慢、不稳定,那么即使数据中心计算能力强悍、云平台管理完善、网络架构优雅也无济于事;如果应用运行持续稳定,那么即使基础设施出现故障也不是大问题。持续提升应用运行期的稳定性和性能以保障用户数字体验流畅,是所有监控、运维管理工作的唯一关键目标。
在数字时代,一切都依赖于应用系统稳定可靠的运行。然而,智能、互联时代的数字信息系统日趋复杂化,应用之间的交互关系密如织网,随着企业经营对信息系统的依赖程度加剧,负载也急剧增加。互联网、物联网、车联网、体域网等网络结构的多样化也使应用系统越来越复杂。这些趋势给应用系统的稳定、可靠保障带来了挑战。系统故障和宕机频率快速升高,人工运维成本飙升。
著名管理咨询公司麦肯锡在名为Measuring the Net’s Growth Dividend的分析报告中指出,2013—2025年,互联网将帮助中国的GDP增长率提升0.3~1.0个百分点,经济发展的需要势必推动企业对新型系统架构的需求快速增长。如今,几乎所有企业都面临如何利用新一代信息技术来对外提升企业用户价值、对内优化生产流程的问题。应用系统无疑是这些问题的解决方案的核心。
1. 稳定性决定企业数字战略的成败
如图1-1所示,专业评测网站downdetector.com统计,2018年,Facebook系统全年宕机200 次,YouTube宕机140 次,Google 宕机100 次。每次宕机损失至少100万美元。应用频繁宕机,用户数字体验糟糕,使得企业损失严重。
2. 应用性能决定企业的营收
对于今天更加依赖数字系统来实现、提升自身价值的企业来说,应用可用性、用户体验和响应时间等性能指标从未如此重要过。雅虎首席执行官玛丽莎·梅耶尔(Marissa Mayer)曾经做过一个实验:她把页面上的搜索结果从10个增加到30个,希望让用户一次性浏览更多的信息。但是,她发现,这样搜索结果的返回时间从0.4s增加到了0.9s,广告收入下降了20%。梅耶尔将提升在线业务的用户体验总结为:速度为王(Speed Wins)。
图1-1 downdetector.com统计的2018年部分互联网公司全年宕机情况
微软、亚马逊也做过类似的实验。2009年,微软在必应搜索引擎上开展实验,发现当服务响应时间增加到2s时,每个用户带给企业的收益会下降4.3%。由于该实验对公司产生了负面影响,最终不得不终止。亚马逊也发现其主页加载时间每增加100ms,就会导致销售额下降1%。对于年营收达数百亿美元的亚马逊而言,1%已是很大的损失。
在智能、互联场景下,在应用云端系统复杂度激增的同时,终端设备的代码量和系统复杂度同步快速增加。如图1-2所示,2014年,大数据平台核心系统Hadoop的代码量为140万行;2015年,Chrome浏览器的代码量为600万行;2016年,波音公司新型787客机的代码量激增到1400万行;2018年,福特F150汽车的代码量达到1.4亿行。一般应用代码量和运维复杂度成正比,而且应用海量代码云、端协同的工作方式给运维带来了新的挑战。
无法抵消信息系统趋于复杂化带来的运维风险,企业数字化营销、数字化生产、数字化管理等战略就是空谈。建设具备全景监控、智能运维能力的应用性能管理系统,保障用户数字体验,提升应用可用性,已成为企业的必然选择。
图1-2 软件系统代码量增长情况
1.3 演进过程
运维、运营在英语中对应同一个单词,即Operation。一般地,运营指对企业经营过程的计划、组织、实施和控制;运维则指对生产依赖工具、设备的运行可用性保障、风险监控、故障排查、性能维护等。第一个提出运维管理概念的是现代经济学之父、英国哲学家亚当·斯密(Adam Smith)。1776年,他在《国富论》中提到:“如果将产品生产工作划分为多个任务去组织,而不是让每个工人从头到尾完成所有任务,将更加高效。”之后,这个理念被亨利·福特用在汽车生产线上,获得了成功。信息技术发展使得企业对IT硬件设备、软件的依赖加剧,IT运维的重要性提升,逐渐演变为独立的技术和管理体系,成为企业经营管理体系中不可缺少的组成部分。
软件发展过程中存在软件性能、稳定性优化等运行期维护问题。在初期,由于缺少运行期监控代码执行过程和性能方法的工具,最初的软件性能、稳定性优化工作主要在软件开发、测试阶段完成。在软件工程科学中,系统化的软件性能和稳定性优化、保障设计、开发、测试方法定义为软件性能工程(Software Performance Engineering,SPE)。
1.3.1 软件性能工程
麻省理工学院计算机科学与工程学院教授查尔斯·森特(Charles E. Leiserson)将软件性能工程定义为一门“让软件代码运行得更快的艺术”,而软件性能工程的概念在软件工程出现13年后,才由L&S计算机技术公司(L&S Computer Technology,Inc.)服务部的康妮·史密斯(Connie U. Smith)博士在1981年发表的论文《通过软件性能工程提高信息系统的生产力》(Increasing Information Systems Productivity by Software Performance Engineering)中首次提出。软件性能工程要求在软件需求调研和设计规划阶段就充分引入工程化思想,考虑运维期可能产生的性能问题和稳定性风险,围绕业务实际需要定义服务质量目标,并量化分析应用上线后计划生命周期内的负载、持续稳定运行时间、运行环境变更等情况,以便指导软件架构设计和详细设计。但是,现实情况是,大多数项目经理和产品经理为了赶工期,忽视软件性能工程前期的需求调研和设计规划,在测试阶段才开始量化评估性能、稳定性指标,并相信在生产环境下通过硬件扩容和增加集群节点的方案可以解决性能问题,导致应用上线后运维成本不可控,应用系统复杂度和负载增加,从而使得情况快速恶化。
软件性能工程是在系统开发生命周期中保障非功能需求中的性能指标(如通量、时延、CPU消耗等)达标的相关技术,在系统工程(System Engineering)中特指系统性能工程(System Performance Engineering);在软件工程中对应软件性能工程(Software Performance Engineering)或应用性能工程(Application Performance Engineering)。随着企业业务成败与数字化应用系统建设成败的相关性逐渐增加,特别是在信息化成熟度较高的行业(如金融、ICT运营商、汽车),应用性能工程在软件全生命周期管理过程中更加重要。
应用性能工程特指针对软件系统非功能需求进行设计、建模、定义、测试、维护,从而保障应用系统交付上线后定义的运行期日常运维服务质量目标(Service Level Agreement,SLA)达标。
应用性能工程涵盖范围涉及软件开发和运维支撑体系,与传统以IT服务管理(IT Service Management)、遵循ITIL方法学的IT运维相关。但是,由于应用与基础设施的映射关系逐渐松耦合,且应用运维对于企业的重要程度提升,应用运维(或称为应用/服务性能保障)团队成为一个独立的部门成为趋势。其主要职责包含但不限于以下几方面。
(1)通过确保系统可以在必要的时间范围内处理交易来增加业务收入。
(2)消除由于应用性能目标不达标而需要优化甚至重构开发代码的系统故障。
(3)消除因性能问题导致的时延系统部署。
(4)消除因性能问题导致的可避免的系统重新工作。
(5)消除可避免的系统调优工作。
(6)避免额外的、不必要的硬件购置成本。
(7)降低因生产性能问题而增加的软件维护成本。
(8)降低因受临时性能修复影响而增加的软件维护成本。
(9)减少因性能问题而处理系统问题的额外操作开销。
(10)通过模拟原型识别未来的瓶颈。
(11)提高应用系统的最大负载能力。
完备的软件性能工程可以大幅度降低运行期的软件维护成本,但无法解决软件缺陷、需求变更或突发事件导致的生产上线后的所有运维问题。在IT运维发展的初期,监控管理的对象主要为服务器、网络设备等支撑应用运行环境的基础设施硬件。“不能监控,就无法管理”,由于缺少技术和工具,这个阶段对应用自身运行状态的监控管理发展相对滞后。直到硅谷的软件工程师Lew Cirne开发出第一款应用性能管理(Application Performance Management,APM)软件,人们才实现了对用Java语言编写的应用程序的代码执行过程等运行状态的监控。
1.3.2 应用性能管理
1998年,Lew Cirne在美国加州创建了第一家主营业务为企业级应用性能管理软件研发的软件公司——Wily Technology[3],面向企业的、用Java语言编写的应用软件提供性能监控分析服务和工具。由此应用运维才真正进入了以工具支撑的企业应用运维时代。Wily Technology在2001年时只有50名员工,之后营业额持续增长,2005年的年营业额达到5300万美元,员工近500人,用户覆盖医疗、媒体、电信、零售、政府、金融等领域。2006年,在Wily Technology被CA Technology以3.75亿美元收购后,Wily APM被重新命名为CA APM[4]。
APM是建设企业应用性能管理平台,打通开发、运维,实现软件全生命周期管理的核心。诞生之初,APM就已经显现了它在应用运行期发现、排查故障方面的价值和潜力。大数据、互联网、移动化、云计算等新兴信息技术的快速发展使应用系统本身的架构越来越复杂,系统间的交互关联增加。企业直接通过软件服务,对通过互联网面向用户交付服务的需求快速增加。Lew Cirne看到商机,创建了New Relic公司。Lew Cirne抛弃了Wily Technology以提供企业内部应用性能保障为主的经营模式,转而面向公有云、混合云环境下的互联网应用,以软件即服务(Software as a Service,SaaS)的方式提供网站、应用Web门户和移动应用终端的用户数字体验监控及后台支撑系统管理服务。有意思的是,公司名称“NewRelic”就是Lew Cirne本人名字字母的重组。
另一家具有相当影响力的APM企业是2008年创建于硅谷的AppDynamics。其创始人Jyoti Bansal是Wily Technology的首席架构师。该公司共获得了5轮总计2.06亿美元的投资,2017年被Cisco以37亿美元收购,这被认为是Cisco坚定发展其软件业务的策略之一。目前,AppDynamics产品归并在Cisco物联网和应用业务线下[5]。
目前,市场占有率较高的APM企业是Dynatrace,这家公司于2005年2月在奥地利林茨创建,2011年7月被Compuware公司收购,更名为Compuware APM。直到2014年,Thoma Bravo将该产品私有化,并从Compuware剥离,将其重新命名为Dynatrace[6]。近年来,Dynatrace正在逐渐拓展APM产品的边界,提出超越APM(Beyond APM)、为企业搭建软件智能平台(Software Intelligent Platform)的理念,重点进行基于人工智能算法的智能化运维研发,利用算法帮助运维人员发现、定位风险。
1.3.3 网站可靠性工程
网站可靠性工程(Site Reliability Engineering,SRE)这个名词来自谷歌员工Ben Treynor Sloss设立的岗位名称,他从2003年开始负责谷歌全球运维,到2016年,其团队规模超过4000人。Ben给SRE岗位的定义是“软件工程师处理以往称为运维的事情”。由于起源于谷歌,SRE过程和岗位规划比较适合注重用户数字体验保障、系统复杂度高的互联网企业。目前,几乎所有在线用户数上规模的互联网公司都已经规划了SRE岗位。传统行业的企业应用运维也正朝着互联网化演进,尤其是在已经具备直接面向用户提供数字服务能力的企业中。例如,汽车行业中有面向车主提供网联车云服务的车厂;金融行业中有建设了网上银行系统、手机银行系统的银行等。
SRE工程师一半的工作内容是做运维的工作,如处理工单、告警、排查风险,但由于软件系统的复杂度高,SRE工程师的运维目标是实现高度自动化和可自愈的运维体系;另一半的工作内容是规划设计、研发新特性,实现应用自动扩容或收缩适应负载变化、自动配置变更管理、故障自动发现与定位等功能。合格的SRE工程师不但要具备软件工程师的经验和技术基础,而且要具备系统工程师的运维管理经验,有很强的编码和自动控制能力。
区别于传统应用运维,SRE运维的基本思路是通过软件实现所有的日常运维工作。因此,基于软件工程和性能工程解决问题是基本原则。SRE运维的目标并不是要让所有系统和服务达到100%可用的程度,这不太可能。同时,过高的可用性会带来运维工作量和成本的快速提升,而收益未必提升太多,会导致投入产出比降低。SRE工程师需要基于场景与业务部门协商一系列切实可行的KPI,其中对应的量化衡量目标称为服务质量保障目标(Service Level Objective,SLO)。为了达成既定的SLO,SRE工程师不但需要定义量化监控指标、告警策略和风险应对方案,而且需要与业务部门密切协作。尤其是当出现故障告警、SLO对应指标不达标,并且找不到原因时,大家要坐在一起冷静、客观地分析和定位问题根源,商讨应对策略,不能相互抱怨。当然要做到这点并不容易。
1.3.4 业务流程性能监控管理
与SRE类似,应用业务流程性能监控需求起源于互联网公司对用户数字体验监控的场景。由于在互联网运维场景下,业务流程变化速度快,商品促销等数字营销推广的效果与应用平台指定业务流程的性能、稳定性直接相关。因此,监控指定业务流程的执行过程、点击量分布、用户访问数字轨迹就非常必要。最早提供业务流程性能监控功能的是具备网络性能诊断分析(Network Performance Monitoring and Diagnostic)[7]产品的软件产品厂商,如Riverbed、NetScout。这些厂商的主营业务是提供网络旁路方式,以侦听网络流量、监控网络状态和分析安全稳定性问题,并通过拆包拿到某些应用的性能、业务执行情况等信息,从而监控特定业务的笔数,如手机银行和网上银行的交易量、接口调用次数。这些数据可以帮助运维部门、运营部门监控和管理业务流程的执行状态。但是,这些厂商对VPN或https加密数据链路的拆包分析能力有限。
APM产品通过提供开发期植入的SDK埋点,或者运行期链路追踪探针追踪指定请求链路的方式,可以更精确地、完整地识别监控业务流程,在系统节点故障告警时,能够快速找到影响用户的业务流程执行链路。这对关联运营KPI和运维服务质量目标、实现目标导向的精益运维非常有帮助。目前,能够提供这方面能力的APM产品包括东软RealSight APM应用智能运维平台[8]、Microfocus业务流程监控[9]、Germain APM业务流程监控与分析[10]。
1.3.5 用户数字体验监控
用户数字体验监控(Digital Experience Monitoring,DEM)是应用运维逐渐与基础设施、云平台等运行环境解耦合,紧密围绕用户提供应用服务质量保障能力的新阶段。DEM概念最早出现在信息技术咨询服务公司Gartner关于APM产品魔力象限的报告中。根据Gartner的定义,DEM“是为了优化与应用服务交互的数字代理(人或机器)的操作体验和行为而制定的可用性及性能监控原则”[11],“应用逐渐采用云计算与移动化技术的趋势,推动了企业IT部门转变应用性能监控的方式”。Gartner给出了企业运维团队需要重点关注的驱动需求,具体如下。
(1)缺少SaaS平台监控运维经验,使得用户经常遭遇服务质量问题,对企业经营造成了影响。
(2)意识到用户数字体验不只是企业用户最关注的,其对考核企业运营效率、员工工作有效性和回应股东利益关切同样重要。DEM技术能够提供独一无二的方式来提高员工工作效率和提升用户数字体验。
Gartner在市场策略分析报告Gartner’s Strategic Planning Assumption for Its Market Guide States中指出,“截至2023年,60%的数字业务提案中都将要求运维部门汇报用户数字体验,相比现在15%的比例有大幅度的提升。”
DEM强调从用户角度量化监控操作性能、数字轨迹、统计使用习惯与性能指标的变化,通常以用户能够理解的服务质量目标自顶向下关联应用与基础设施指标,构建树形结构逐层细化的监控体系。对企业来说,其主要收益包括:提升从用户端量化监控、评估应用可用性及性能的能力,使得优化用户体验更有针对性;提升对应用SaaS及云服务的性能可见性;聚焦用户终端设备接入性能,更精确地理解和评估数字体验;结合用户情感变化数据和主观体验指标,提前处理风险,提高企业员工的工作效率并降低其工作负荷;对由于技术问题影响业务和企业经营的事故分析定位更准确;提升跨域全面监控能力,提供端到端的全景化应用监控视图。
Gartner将DEM定义为评估APM产品的三类功能象限中的关键评估项,其包括数字体验建模(Digital Experience Modeling),应用探查、链路追踪与诊断(Application Discovery,Tracing,Diagnostics,ADTD)和应用分析(Application Analytics,AA)[12]。随着数字空间和物理空间的加速融合,用户数字体验监控与保障对企业将越来越重要。
具备数字体验监控能力、提供相关工具产品的主要是传统APM厂商和新一代应用智能运维厂商,包括Dynatrace、AppDynamics、NewRelic、Lakeside、RealSight APM和听云等。
本章小结
应用运维是保障应用软件系统上线后发挥设计价值的过程。从企业实际需求出发,了解应用运维的详细过程和相关技术发展脉络是实践应用运维智能化的基础。本章重点对应用运维自诞生至今发展过程中出现的软件性能工程、应用性能管理、网站可靠性工程、业务流程性能监控管理和用户数字体验监控几个具有里程碑意义的技术及对应的工具、厂商进行了总结归纳。