概述
云管理平台是云时代充分发挥云计算特性优势大幅提升生产力、应对新增混合云多云资源管理问题的平台工具。当前在国外已发展多年并非常成熟,而在国内,一方面企业上云后特别是采纳混合云后,IaaS 本身提供的服务普遍缺乏对混合或多个云资源池的资源管理,缺乏区分 IT 与研发和细粒度的权限管控,以及 DevOps 解决方案,不能满足企业管理云资源和高效使用云资源的需要;另一方面,企业在云平台规划过程和上云后又常常忽视云管理平台。笔者多年从事云平台建设并管理跨公有云私有云重要商业应用,积累了不少经验教训。本文结合企业上云后遇到的共性问题,首先阐述企业上云的目标、需求和现实中面临的问题现状,然后介绍云管理平台的解决方案,最后介绍云管理平台在云平台中的位置、如何区分 PaaS 和云管理平台、容器云与云管理平台之间的关系区别,以及国外主流领先的云管理平台厂商和产品。
一、缺失云管理平台面临的问题
云平台建设的基本目标包括满足应用研发及运维需求,能够按需快速弹性提供资源并能支撑和满足业务应用运行和维护管理需求,大幅提升交付速度效率和降低成本;另一方面,能够满足上云之后 IT 部门对新增云资源的管控治理需求。然而由于企业云平台建设中普遍缺失云管理平台,导致后续在上云使用过程中以及管理过程中面临诸多问题,这些问题和需求主要来源于四个方面:
- 资源的使用者,对应应用研发及应用运维部门;
- 资源的管理者,对应 IT 资源管控部门;
- 平台的运营者,对应平台运营部门;
- 平台的规划者,对应平台的规划部门。
1、对研发及应用运维部门:交付和管理效率没有大幅提高
1.1 目标
企业之所以建设云平台,其中一个目标就是为了给应用研发和应用运维部门提供一套高效资源获取和管理以及应用管理平台工具,能够帮助他们快速方便自助按需创建配置环境、部署管理应用,以大幅提升交付效率和运维效率,从而加速业务创新,缩短新业务上市时间,降低运维管理压力和成本。
1.2 现状和问题
然而,现状是交付和管理效率相比上云前没有大幅提高。上云后在交付和管理的几个环节由于缺乏合适的工具,阻碍了效率的大幅提升。我们可以从应用研发交付的几个环节上分析原因和问题。应用研发交付过程是一个不断修改代码、创建配置准备环境、部署应用,验证(获取环境及应用信息,定位问题)的循环过程。这个过程中,可以看到在每个阶段都需要经过多次创建或配置准备环境,部署应用的环节。如下图示:
(点击放大图像)
对于修改代码这个环节,与用不用云平台关系影响不大,但是对于准备环境,部署应用以及获取环境应用信息则与云平台关系很大,因为云平台的主要作用就是帮助快速构筑和提供应用运行的环境,这个环境不仅包括基础的计算网络存储,还包括各种数据库、中间件,负载均衡、DNS 配置、CDN 配置等。但是,实际的情况是,使用云平台后,准备环境和部署应用,以及获取环境应用信息,依然非常耗时。特别是应用系统规模大、复杂组件多、环境中主机数量很多时,存在的问题包括以下几个:
第一,资源申请审批机制管控过度
很多企业把云平台当虚拟化平台使用,研发部门无法按需快速获取开发测试资源,抵消了云平台按需快速弹性获取资源快速搭建准备环境的优势,并没有充分发挥云平台作用,影响了整体效率的提升。一个常见的现象就是由于 IT 的一刀切式管控,研发部门在项目初始阶段需要等待一周到数周甚至一个月的时间才能把环境准备好。
第二,仍采用静态基础设施时代的方式和工具
运行在云平台上的应用按照运行环境及类型可划分为三部分:
- 直接运行在 IaaS 虚拟机上的应用;
- 运行在 PaaS 上的应用;
- 运行在 IaaS 上的各种 PaaS 平台。
尽管 PaaS 发展多年,在云平台规划中建设了 PaaS,期望通过 PaaS 显著大幅提升交付和管理效率。但是由于种种原因,PaaS 发展这么多年,目前大多数上云应用和平台仍然直接运行在 IaaS 上,而不是在 PaaS 上和容器云上。
(点击放大图像)
而对这些多数直接运行在IaaS 上的应用和平台的管理,仍采用静态基础设施时代的方式和工具,甚至是手工方式。没有使用基于云弹性自动化特性的编排工具进行高效管理,通过编排自动化实现涵盖基础设施环境应用一体的自动化,导致了研发和管理效率上并没有得到显著的提升;同时由于缺乏一体化的管理工具,不得不自行研发管理平台,或者采用烟囱式的多个独立的管理工具拼接起来使用,导致当添加一个被管主机对象时需要手工将主机信息添加到各个管理工具,如监控、批量管理、CMDB、堡垒机等,各个管理工具之间也不能联动实现自动化,管理压力大效率低。
另外,很多企业采纳云主要用于改变其商业模式,以SaaS 方式提供服务。当采用单租户模式时,需要解决两个问题,一个是基础设施到应用的自动化编排创建的问题,一个是大量租户应用的管理维护问题,如果缺乏有效的编排和自动化管理平台,负担将会很重。
第三,混合云多云带来管理上的复杂度和压力
为满足成本、按需、隐私、合规、避免供应商锁定等要求,企业常常会采用混合云或者多个私有云。这造成基础设施资源池多样化异构且分散,不仅有之前遗留的物理机、虚拟化环境,还有私有云和公有云,应用分布在多个异构、同构资源池中。有些应用需要在异构环境中迁移;有些需要在多个异构的资源池云环境中部署发布;有些甚至需要跨云跨网络运行和扩展;有些需要跨环境数据备份同步灾难恢复。由于缺乏合适的工具,不得不靠人力处理,一次又一次地重复,给管理上带来非常大的压力和工作量。
(点击放大图像)
综上,对于以上问题就需要:
- 兼顾管控的自服务 IT 工具,能够让应用研发运维自助基于 IaaS 云服务获取资源创建环境;
- 可视化批量自动管理工具,包括手工、定时、基于监控触发批量任务;
- 环境应用自动化编排工具,包括虚拟机等资源创建、环境配置、应用部署、脚本任务编排等;
- 可视化业务角度管理工具,包括以业务维度的环境管理,监控、部署升级,自动化运维工具等;
- 跨地域跨云平台管理工具,集中统一管理同构异构资源池中的环境和应用。
- 应用的生命周期管理工具,包括应用版本信息管理、可视化自动化标准化的部署发布管理等。
2、对资源管控部门:缺乏云资源管控治理工具
2.1 目标
对于 IT 资源管控部门,其中一个目标为 IT 资源的管控,包括费用管理、权限管理、合规治理等,然后在此基础上,优化与研发团队的协作,让研发团队能够按需自助获取 IT 资源,充分发挥云平台快速按需获取资源的优势,提升整体效率、减少自身的管控压力。同时,能够随时掌握各个业务部门的云资源使用情况,进行统计分析、预测、告警和报告,帮助决策和审计。
2.2 现状和问题
企业上云后,面临的是传统 IT 物理资源池、虚拟化资源池,以及私有云和公有云的资源池管理,不仅仅是异构混合,而且是资源池数量多且分散,形成多个资源孤岛。由于现有传统的 IT 资源管理平台不能够很好支持云资源的管理,并且私有云和公有云本身并不提供企业需要的资源管理功能,如面向云资源的 CMDB,多资源池集中管理,多异构资源池统一管理、自服务 IT 或审批后自动供给资源、以及没有区分应用研发人员与 IT 管理员权限,面向不同角色用户提供对细粒度的资源操作权限控制等,导致用传统 IT 管理工具和私有云公有云本身提供的管理功能无法满足企业当前对云资源的管控要求,导致当前企业在云资源管理方面压力巨大、效率很低、手工维护工作量及沟通成本很大。
上述问题直接导致目前企业中出现了几个极端的 IT 管理问题,一个是 Shadow IT 问题,即企业业务部门 BU 绕过 IT 部门直接使用公有云服务,IT 资源部门失去了对资源的管控,增加成本费用上的风险;另一个是,由于一刀切的管控,把 IaaS 公有云私有云平台当成虚拟化平台使用,应用研发运维部门不能自助快速获取其开发测试所需 IT 资源和配置网络环境,极大地限制了业务研发运维部门的交付速度和生产力。还有一个就是,IT 管控需要能够管理各个业务部门对资源使用,掌握各个业务部门的资源使用情况,由于缺乏集中资源管控工具,导致统计分析工作不得不依赖于手工及与各部门的大量沟通,效率低且工作繁杂。
3、对于运营部门:PaaS 平台落地困难
3.1 目标
作为云平台的运营部门,需要能够让云平台最终落地,在实际中发挥作用,让应用研发和运维部门应用到日常工作上,提升研发和运维的效率,提升 ROI;另外,对于 PaaS 本身,也需要运维管理,比如升级、扩容缩容、监控等。
3.2 现状和问题
尽管云计算和 PaaS 发展多年,但是迄今为止,当前大多数上云的应用和平台仍然直接运行在 IaaS 上,而不是在 PaaS 上,不管怎么说,这是事实。在过去几年里,云平台建设,对于 PaaS 的投入建设,往往以失败而告终,建好后只能看着。当推行使用 PaaS 时,往往会遭遇非常大的阻力,而且即便强行推行,很多时候也无能为力。这里面有几个关键的原因:
第一个是,PaaS 平台选型时没有从研发和运维实际需求场景出发,选择的 PaaS 平台不能满足需求,运行和管理一个商用的业务系统,并不是拿某个简单的 Helloworld 应用运行几下就能证明的事,产品和玩具完全是两个概念;
第二个是,负责 PaaS 平台建设的部门,本身不能决定是否将某应用迁移到 PaaS 或让新应用研发商用使用 PaaS,这时就需要说服应用研发和运维部门使用 PaaS,而 PaaS 平台对应用架构的限制可能会给研发团队带来较大的工作量和调整的影响和风险,常常不被接受;
第三个是,选择 PaaS 没有平衡兼顾自身条件、当前需求和未来需求,选择了不完全成熟的产品,缺乏较强的技术实力和资源投入解决不成熟产品使用过程中面对的问题。
为避免异议,这里需要补充的一点是,不少人认为 PaaS 就是提供在线的各种中间件创建管理服务,这种看法是片面的。这些只是 IaaS 服务中通常提供的 Half PaaS 的部分,PaaS 包含的不只这部分,还包括对应用的生命周期管理。
4、对云平台规划部门:缺乏支持遗留 IT 及 IT 演进的开放管理平台
4.1 目标
作为云平台的规划部门,希望能够有一个管理平台能够支持遗留及演进过程中 IT 管理及研发运维 DevOps 并避免供应商锁定,包括可开放地支持对云资源的费用权限管理,支持各种同构异构环境下业务系统的部署运行管理,支持基于云大幅提升 IT 及研发运维效率。
4.2 现状和问题
企业 IT 有一个非常明显的特征,就是 IT 基础设施的多样性、异构长期共存和不断演进。当企业上云后,面对的是历史当前各个阶段中以当时技术构建的资源池以及业务系统的管理,传统 IT 时代的 IT 管理平台不适用于云 IT 的资源管理,管理起来非常吃力,仍按传统方式使用也无法充分发挥云的特性和优势,迫切需要一个开放的管理平台,能够既兼顾遗留环境,又能开放支持新的云平台,希望通过这样一个平台,全面覆盖各类基础设施环境 IT 及应用管理,以集中统一方式管理物理机、虚拟化平台、以及多种供应商云平台资源及运行在其上的应用,并能够方便应用在多个异构资源池环境中迁移、部署、同步备份数据、调度资源、自动化管理等。
二、使用云管理平台解决上述问题
上述企业面临的问题,导致了云管理平台的出现。下图展示了云管理平台在云平台中的位置和功能,云管理平台基于公有云私有云提供的 API,面向应用研发运维人员,基于 IaaS API 创建管理云资源和环境,通过代理或者非代理 SSH 方式配置管理直接运行在 IaaS 上和传统 IT 基础设施之上的平台和应用;同时面向 IT 管理员提供资源的集中管理、统一管理、权限管理、费用管理、使用统计分析等服务和工具。主要功能包括基于 IT 管控的自服务 IT、以业务角度的环境和应用管理,涵盖基础设施应用的跨地域跨集群跨主机编排自动化、批量管理,定时任务、监控管理工具,以及资源的费用管理、权限管理、环境应用操作权限管理、合规治理等。
(点击放大图像)
接下来我们来看一下云管理平台是如何解决上述提到的问题。
1、解决研发运维效率未大幅提升问题
对于环境创建准备慢的问题,云管理平台提供了自服务 IT 功能,包括用户管理、成本中心管理、费用管理、创建管理虚机等资源功能,IT 管理员可以给成本中心设定资源使用的额度和权限,让应用研发部门能够在额度和权限范围下自助获取资源创建配置环境,从而解决了获取开发测试资源创建准备开发测试环境慢的问题。
对于基础架构和应用编排问题,云管理平台提供一系列自动编排工具,能够实现从环境基础设施虚拟机创建到应用部署的整个过程的自动化,满足了开发测试过程中快速创建开发测试环境需求和运维中一键快速扩容缩容、自动故障恢复等场景的自动化需求。
对于部署发布 DevOps 环节慢的问题,云管理平台提供了以业务角度的环境管理、编排自动化、扩展 API,执行脚本等功能,能够与持续集成服务任务集成,实现开发测试试运行生产环境的统一自动化部署发布,缩短测试反馈时间、发布上线时间以及提高部署发布的可靠性。
对于验证获取信息监控管理环节的问题,云管理平台提供了可视化的以业务角度管理的一体化的环境应用管理工具,包括批量自动化管理、自定义监控、自动添加监控、基于监控的自动故障处理工具,能够大幅提升管理运维效率。
对于混合云管理及传统 IT 环境下应用迁移、异构环境多地部署管理问题,云管理平台开放性支持各种主流公有云和私有云,能够以统一的方式管理各异构云平台中环境及应用,同时支持跨地域跨网络跨云平台的集中管理和编排自动化,方便应用的迁移和异构环境部署;除此之外,还能够对传统环境下已启动的物理机、虚拟化环境中虚拟机进行纳管。
2、解决云资源池管控问题
对于同构异构分散多地的云资源的管理问题,云管理平台面向 IT 管理员提供了用户管理、对资源的集中统一管理、权限管理、费用管理、合规治理、使用统计分析等,方便上云后混合云多云的 IT 资源管理管控。对于一刀切审批抵消云按需获取资源特性导致的影响研发进度的问题,云管理平台提供了自服务 IT 功能,IT 管理员可以给研发部门帐号成本中心设置资源使用的额度,研发部门可以在一定额度范围内及规则限制下自助按需获取资源,充分利用和发挥了云平台的按需快速获取资源的特性,提高了效率。
3、解决 PaaS 落地困难问题
使用 PaaS 平台的主要目的是帮助应用的研发运维人员能够高效地管理环境和应用,支持高效的研发和运维,但是 PaaS 落地比较困难,只能覆盖一小部分应用的管理。对于这个目标,使用云管理平台也能达到,而且较 PaaS 更容易落地。因为对于大多数直接运行在 IaaS 上的应用,由于云管理平台对应用架构没有限制,也不限制对运行环境主机的控制,对应用本身既有代码无侵入,对当前多数研发运维人员的习惯改变也很小,所以较 PaaS 更容易落地被研发运维人员接受,所以对于当前以及短期的目标而言,通过采用云管理平台满足大幅基于云计算大幅提升研发运维的需求比较容易落地和实现。
4、解决支持演进兼容传统问题
对于上云迁移过渡及支持 IT 演进,云管理平台能够兼顾过去的、当前的、未来的 IT 及应用管理需求:对过去的应用及主机,云管理平台提供了纳管工具,能够将传统遗留 IT 中的物理机、虚拟化平台虚拟机纳管起来。
对于当前的应用的管理,可以通过自服务 IT 方式基于各种公有云私有云 IaaS API 动态创建配置虚拟机等环境资源并导入管理,采用自动化编排工具,使用标准化规范部署发布,实现对不同资源池环境主机与应用的统一集中管理、自动化管理。
对于未来的微服务应用,Cloud Native 应用,可以通过云管理平台创建和管理的 PaaS 平台支持;而这些对 PaaS 的管理,云管理平台可以通过基于 IaaS 进行高效管理。
对于云供应商锁定问题,由于云管理平台对各种公有云私有云提供了统一的管理平台和工具,通过封装了不同云平台的服务 API 屏蔽了差异性,而不需要使用公有云或私有云各自专门的管理工具,从而有效降低了云供应商锁定风险。
三、如何区分云管理平台与 PaaS 和容器云
下图表示了云管理平台在云计算技术栈中所处的位置,与 IaaS、PaaS、SaaS 之间的关系,云管理平台是独立于 IaaS 及 PaaS 之外的管理平台,基于云 API 管理应用运行所需的资源和环境,通过代理或非代理方式管理应用运行的 OS 环境及应用,对基础设施层支持各种公有云私有云以及传统 IT 物理机虚拟机,对于应用,支持各种运行在 IaaS 或物理机之上的各种架构的应用。图中,Web PaaS 指传统 CloudFoundry、Heroku、Google App Engine、AWS Beanstalk;BigData PaaS 指 Hadoop 这些大数据平台;Docker PaaS 指基于 Docker 构建的 PaaS 平台、容器平台;云管理平台指 RightScale、Scalr 这类云管理平台。
(点击放大图像)
1、云管理平台与 PaaS 的区别
云管理平台与 PaaS 不同,处于不同的层面,其区别于 PaaS 的最主要特征在于:
- 与 IaaS 的关系不一样,云管理平台会调用 IaaS 的 API,而 PaaS 不会 ;
- 面向用户角色不同,云管理平台既面向应用研发运维人员,也面向 IT 管理员,而 PaaS 仅面向应用开发运维人员 ;
- 创建管理应用运行所需资源及运行时环境方式不同,云管理平台允许用户访问和配置应用所在虚拟机操作系统环境,允许对虚拟机拥有完全的访问控制权,而 PaaS 不允许 ;
- 对应用架构的限制和应用代码侵入性不同,对于云管理平台,即使本身服务不可用,也不会影响应用,升级过程中不会影响被管理应用,对应用管理不需要修改应用本身代码,对应用的架构没有诸如语言、框架、中间件限制,而 PaaS 则不然 ;
- 能够感知环境 IaaS 资源的变化,并基于感知对应用创建管理进行自动化编排 ;
- 能够覆盖管理的应用范围不同,云管理平台管理直接运行在 IaaS 虚拟机上的应用和 PaaS,而 PaaS 平台用于管理运行在 PaaS 上的应用,不能够管理未通过 PaaS 部署启动的应用 ;
- 使用云管理平台基于云 API 及自动化创建环境和部署应用后,停止云管理平台不会影响应用的运行。
基于以上的不同,能够很明确区分出云管理平台与传统 PaaS。这也是为什么 AWS 还提供另外几种应用管理服务 Opsworks、Code Deploy 的原因。
2、云管理平台与容器
对于云管理平台与容器云的共性和区别,当前一般认为容器云是 PaaS。个人的看法是,容器云是 IaaS 和 PaaS 融合体,不仅仅是 PaaS。因为容器云不仅仅处理了面向应用部署的容器编排,同时解决的问题也包括给容器分配资源、网络和存储的问题。二者共性是都面向应用的研发和运维提供应用管理服务、都是应用生命周期管理的 DevOps 平台;区别在于管理的应用的资源运行环境载体以及载体模板的标准化可移植性不同——云管理平台管理的应用的资源载体为物理机虚拟机,而容器云管理的应用的资源运行环境载体为容器。这个不同造成双方管理的应用的范围和方式的不同,以及适用的基础设施不同。
由于容器的轻量、标准化和可移植性,相比传统虚拟化,更容易在同构异构 IT 资源池环境中迁移,这一点给应用在异构资源池中的部署提供了统一的标准和接口,从而给开发测试生产环境的部署发布,以及在异构资源池中的部署、发布、迁移、扩展,以及防止供应商锁定提供绝佳的基础。容器云毫无疑问是当前及今后云建设的热点,但是由于企业 IT 的异构多样性和长期共存,以及企业 IT 发展不平衡,容器云与云管理平台之间不是冲突和替代关系,而是共存共生的关系。
如果容器云运行在 IaaS 或物理机上,那么可以使用云管理平台进行高效地管理,比如扩容缩容、监控、部署升级发布、批量管理等。而且云管理平台也可以支持对容器云中的应用的管理,就像管理运行在 IaaS 之上的应用一样。
四、总结
最后,区别于 PaaS 与容器云,云管理平台不仅面向应用研发运维部门,也面向 IT 管理部门,管理对象为直接运行在 IaaS 之上和传统 IT 基础设施之上的应用和各类 PaaS 平台;能够开放性地支持 IT 演进过程中的不同时期的基础设施、环境、业务系统、PaaS 平台的管理,支持企业满足过去的、现在的和未来的,短期的和长期的 IT 资源及应用管理需求,是 IT 演进过程中云建设中不可缺少的一环。
- 对于 IT 管理员,云管理平台提供了用户管理、资源的集中统一管理、费用管理、权限管理、监控等服务和工具,使得上云后 IT 管理员能够应对分散多地传统 IT 及混合云 IT 资源池管理;
- 对于应用研发运维,云管理平台提供了一体化的混合云管理,提供了业务角度的管理视图,涵盖自下而上的环境及应用管理,服务包括可视化以业务角度的环境管理、跨云跨网跨机器的自动化编排、批量管理、监控告警、代码部署工具等,能够对多种异构基础设施中的资源、环境、应用进行集中统一高效地管理。
目前国外云管理平台产品很多,从厂商分,主要来自传统的 ITOM 厂商以及新兴的专注云管理的厂商。据 Forrester 2016 Q1 最新的混合云管理解决方案报告,其中 RightScale、Scalr、CliQr 处于领导者地位,由于篇幅的限制,这里不能展开,具体介绍分析留待后续文章。
关于作者
刘涛, FIT2CLOUD 联合创始人 & 技术总监,AWS 认证解决方案架构师(专业级),拥有北京邮电大学计算机硕士学位,有超过 10 年的 IT 研发及项目管理经验,长期专注于云计算方向,对基于云的应用架构设计、云管理、DevOps 有深入的理解和实践经验,深谙如何充分基于云平台及 DevOps 加速业务系统开发测试交付以及提升运维效率和质量,部署和管理跨公有云私有云的大型商业应用。在此之前,曾在摩托罗拉云服务部门担任高级软件工程师和三星研究院云计算部门担任云平台架构师和研发经理,成功将 DevOps 文化实践及工具引入所在三星中国本地及韩国总部云计算及移动互联网服务研发部门,发起并主持设计建设了混合云 DevOps 平台,服务于大规模分布式移动互联网服务的全球跨地域跨公有云私有云的部署发布和管理。
感谢魏星对本文的审校。
给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ , @丁晓昀),微信(微信号: InfoQChina )关注我们。
评论