不管是由于历史遗留还是出于监管要求等原因,不少企业目前都建设了好几朵云,面临着多云管理的问题,如何高效地整合使用这些不同的云资源,是一个非常值得探讨的问题。国内很多企业都有云管产品,但很多都是眉毛胡子一把抓,什么都对接,什么都管,依然是传统单体系统建设的思路,庞大而复杂。对于云管管理的边界和范围、如何实现多云管理、云管和应用管理之间的关系、云管和容器云平台之间的关系、企业内多云管理是否有必要实现计费等等问题,都是需要认真考虑的。考虑清楚了这些问题,也才能建设真正合适的多云管理平台,真正助力企业数字化转型。
多云管理需求由来
前些年云平台建设过程中,很多企业对云并没有那么深的理解,抱着试一试的态度,所以在选型的时候就不是一次到位。另外不同的部门也可能选择不同厂商的云平台,经过一段时间的建设,企业内部往往会好几朵云并存。这些云彼此之间厂商不同、架构不同、接口不同、界面不同等等,所以难以统一进行管理和维护,不得不考虑封装一层来实现统一管理,这就是多云管理的需求。
很多人不断地在鼓吹企业上云是 “ 大势所趋 ” ,但他们只是鼓吹上云的好处,从来不提上云的坏处。而大部分客户并不真正的理解云计算所带来的优势和不足,跟着别人随大流,购买了公有云,建设了私有云等等,使企业 IT 架构日益复杂化。IT 成本并没有因此减少,而是在不断攀升。
一种技术解决不了所有问题,上云并不是唯一选择。决定上不上云之前一定要理解云计算所能解决的核心问题,一定要有自己的思考和选择。云计算解决的是分布式网格计算问题,也就是算力问题。也就等同于利用 CPU 、内存、存储、网络等基础设施资源实现分布式计算、网格计算能力,通过提供标准化的基础设施资源计算服务( IaaS 服务),支撑不同企业的大数据量计算和存储等需求。在 IaaS 之上,有厂商构建了平台服务能力( PaaS ),为企业和个人提供应用的开发、部署、托管、运维等能力,这样就不用直接去关心和运维基础设施资源,只要有网络就可以完成在线的应用开发、托管、运维运营,节省大量的人力成本等。而在 IaaS 和 PaaS 之上也可以部署开发好的应用,比如财务软件、客户管理软件等,直接向用户提供软件服务( SaaS ),实现开箱即用,一键注册使用能力,这样对小企业和个人客户就更便利,完全不用自己搭建 IT 系统和平台,直接按需使用,方便快捷。
正因为不同的厂商、不同的平台、不同技术、不同的架构、不同的服务、不同的安全能力等等带来了上云的不同选择。有报告显示企业平均会使用 2.2 个公有云和 2.2 个私有云。“ 多云 ” 其实就是 “ 上云 ” 所带来的额外成本。这些云彼此之间相互隔离,无法实现统一的资源管控,就需要多云管理平台来实现统一管理。
既然多云已成现实,那么如何更好地实现多云管理,如何定义多云管理的边界和功能范围,是多云管理平台产品化的关键。
多云管理的边界和范围
在 2020 年 Gartner CMP 魔力象限中,定义了 CMP 涉及的八项功能:调配和编排、服务请求、库存和分类、监控和分析、成本管理和工作负载优化、云迁移备份和灾难恢复、安全合规性和身份管理、打包及交付。其中核心的功能是成本管理和安全。从 Gartner CMP 功能定义来看,其实还是站在 CMP 厂商的视角来看待问题的,并没有真正从用户的视角来理解多云管理的需求,所以笔者认为其对多云管理的功能需求定位并不准确。
云计算解决的核心问题是算力问题,也就是基础设施资源 IaaS 问题。所以云管的核心能力应该是管理不同云平台的基础设施资源,提供标准化的基础设施资源服务 IaaS 。这样就屏蔽了底层不同云平台的差异,实现了异构云的统一基础设施资源服务。
- 云管职责定位
笔者多次提到过,云管平台是一个重要的工具,向下可以管理各种基础设施资源,向上支撑容器云或容器化 PaaS 平台,为容器化 PaaS 平台提供资源,而容器云或容器化 PaaS 只使用资源不管理和维护资源,使容器云和容器化 PaaS 平台专注于支撑业务应用管理,实现以应用管理为核心,这样容器云、微服务治理、云管等平台就可以有机整合在一起,成为一体。使云管承上管下。最终是要支撑业务应用在不同云平台资源之间的调度。以基础设施资源的弹性来更好的支撑业务应用的弹性。
在实现云管平台时,不是什么都加上去,一定要有所选择,一定不要搞个大云管,什么都做。笔者认为比较好的定位是让云管来管理不同的云基础设施资源,至于中间件、中间件服务、应用、其他非 IaaS 云平台,一定不要放在云管上去做。云管平台并不是所有的 “ 云 ” 都要管起来。云管平台两项基本的能力:
1. 纳管公有云和私有云 IaaS ,屏蔽异构云平台底层资源细节。
2. 为企业提供统一标准化基础设施资源服务 IaaS 能力。
其他的如监控、计费、备份、分析、负载优化等功能都是基于这两项基本能力的扩展。
- 云管是否管容器?
云管平台让很多人混乱的一个问题是是否管理容器和容器云。首先要认识到,提供 “容器服务” 和提供 “容器云平台服务” 是不一样的。这是两个层次的问题。容器服务可以简单看作是 IaaS 层服务,而容器云平台服务则可以看作是 PaaS 层服务。理论上,云管平台可以提供容器服务,但笔者非常不建议直接使用容器,而应该通过容器云平台或者 PaaS 平台封装容器服务。容器云(或 PaaS )平台应该使用云管的资源,其在云管之上,所以云管不应该去纳管容器云平台,更不应纳管容器化 PaaS 平台。
容器、容器云、容器化 PaaS 是不同的概念。笔者之所以要区分这些概念,就是要明确标准,否则你说你的,我说我的,鸡同鸭讲,是做不好事情的。很多人喜欢拿概念炒作,一个词有很多意思,或者一个意思用很多词来表示,很乱,不知道在说什么。做技术要像数学一样,要严谨,概念要清晰明确。云管的职责定位也是要明确,才能做好云管产品,才能更好地支撑企业业务发展和创新。
基于上面的考虑,云管的边界最好定义在 IaaS 层资源管理,纳管不同的 IaaS 云平台、不同的存储、网络资源,甚至不同的物理机、虚拟机,为企业提供所需的各种基础设施资源服务,实现基础设施资源的弹性伸缩。云管的功能范围是基于多云纳管和统一的 IaaS 服务两项基本能力之上的扩展。但云管不会去纳管容器云、中间件等。企业 IT 架构需要实现清晰的功能分层定义,使云管专注于基础设施资源的管理和供给。
多云管理设计实现
明确了云管的职责和功能范围,在实现云管平台时,就相对容易很多。很多人认为云管是定制化项目,显然就是没有完全理解云管的定位。笔者认为云管是可以做成一个很好的标准化产品,从而实现敏捷部署和扩展。在产品化的时候,需要站在甲方的需求立场上来看待问题。真正满足甲方需求了,甲方才能满意,才能愿意花钱来购买产品。很多厂商都很聪明,有自己的小九九,但笔者却认为其聪明有余而智慧不足,格局不够,所以国内的 IT 企业很难做大。企业 IT 架构的发展趋势一定是实现系统的融合,而不是一个个单体,才能真正的实现敏捷部署和扩展,支撑企业数字化、智能化转型。因此,未来各种平台之间一定要能做到无缝整合,这就要求各平台、工具不能大而全,要有所取舍,明确定位。那些不开放的产品最终会搬起石头砸自己的脚,被甲方抛弃。定制化未来将会是一条死路,合适的产品定位才是正确选择。
首先,多云管理是资源纳管平台,实现基础设施资源统一管理和调度。云管对于小企业可能是没必要的,面对的客户应该是大中企业,大中企业才可能会建设或购买使用多种不同的云平台,从而实现容灾、备份等需求。这就要求能够方便地将应用或数据从一个云平台调度到另一个云平台,而云管需要具备这样的能力。比如说,在腾讯云运行的应用需要在华为云上也部署,从而实现备份和容灾等需求,而对客户来说,在云管平台上腾讯云和华为云只是两种不同的资源类型而已,可以自由的调度应用到腾讯云或者华为云上,这就屏蔽了顶层异构云细节,可以实现秒级的资源调度。
其次,云管提供场景化标准资源交付,提升资源交付效率。不同企业有不同的业务场景需求,比如说中间件集群部署场景、数据库集群部署场景、应用高可用部署场景、应用弹性伸缩场景、跨云部署场景等;不同业务应用对资源的需求也是不一样的,比如说 GPU 机器学习深度学习场景、高 CPU 计算场景、高内存缓存场景、大数据存储场景等等。这如同不同的人高矮胖瘦不一样,所需的衣服长短大小就不同一样。通过预先定义提供不同场景的资源服务,有针对性地快速支撑企业不同的业务需求,从而提升资源的匹配性和利用效率,也减少资源准备时间,提升资源交付效率。
第三,基于多云的应用部署不能放在多云管理平台建设。多云平台承上管下,定位在 IaaS 资源管理和资源服务,它理论上还是 IaaS 层。应用的部署和管理放在 PaaS 平台上,位于 PaaS 层,因此跨云的应用部署和管理不要放在多云管理平台来实现。云计算的三种服务(三层服务)给我们一个很好的启示,企业在 IT 建设中架构要分层,无论云计算的三层服务,或者前、中、后台架构,其实都是要进行分层,从而实现复用,避免重复建设,节省成本,提升效率。
第四,中间件、数据库等可以看作是一种应用,因此其可以在 PaaS 层来管理(笔者建议中间件和数据库等的容器部署场景仅用于企业测试环境,不建议用于生产环境)。云管始终定位于异构资源的管理和统一资源服务的供给。其他的可以交给上层的 PaaS 来负责。公有云、行业云上的中间件和数据库等的管理相对要容易些,因为不用考虑基础设施资源的管理,至于使用这些应用的计费,也可以放在 PaaS 平台来管理。
第五,多云成本管理。云管作为一个独立的产品,需要考虑多云资源使用的计费,从而根据需要调度到合适的云平台,实现成本最优化。这也是智能运维的一部分关键能力。不过如果云管跟 PaaS 有机整合在一起的话,计费和成本管理可以上移放在 PaaS 平台,由 PaaS 平台根据计费规则、成本规则以及资源可靠性、有效性指标等来进行智能调度,实现最优的资源调度和成本平衡。
多云场景资源调度一般原则
为了优化成本,多云场景下资源调度可以遵循以下一般原则:
1. 私有云资源优先调度使用。在私有云资源不足时才调度到行业云(或公有云)。为了节约成本,首先要使用私有云资源。企业私有云资源往往是有限的,在某些情况下需要调度到行业云、公有云上,比如某些临时性的重大促销活动等,就可以在 PaaS 层通过云管服务调度部分应用实例到公有云上。
2. 按行业云(或公有云)的计费成本进行排序,优先调度到资费低的行业云(或公有云)上。资费管理是云管平台的一项重要能力。不过通过资费管理可以更好地进行成本管理和优化。每家公有云的费用可能是不同的,不同时期资费也可能会发生变化,如何利用资费规则来节约成本是云管平台很重要的一个方面。
3. 根据业务或数据安全等级,对公有云安全能力进行评价,作为一个资源调度参数度量值进行计算。使用公有云很重要很关键的是要保证数据安全,特别对于大企业来说,数据的价值往往远远大于使用公有云所节约的那点费用,因此,数据安全能力是评价公有云的一个重要指标。
4. 根据公有云可靠性能力和资源有效性等指标进行评价,作为调度参数度量值进行计算。国内有公有云厂商曾经也出现过重大的故障,导致客户数据丢失等难以挽回的损失。对于某些客户来说可能是灾难性的。因此从容灾和高可用角度,也需要多云部署来规避风险。根据公有云所提供的资源的有效性(可利用率、性能等)和可靠性(故障频率、重大故障影响等)来进行度量,选择合适的公有云。
多云支撑场景
采用多云的优势在于不依赖于一家云厂商,通过竞争从而获得更好的服务。多云可以满足以下场景需求:
1. 应用多云部署实现高可用、容灾备份。多云其实相当于传统多个数据中心,满足于很多企业 “ 两地三中心 ” 的容灾备份需求。
2. 资源弹性伸缩从而支持应用的弹性伸缩,实现应用自动扩展。私有云很大的问题是受限于算力资源,往往难以做到按需弹性伸缩。可以借助行业云和公有云实现某些场景的资源无限性,按需使用,用完释放。
3. 多云协助优化企业资源配置,专注于企业核心业务的高效基础设施资源建设,避免千头万绪的设计需求,使企业能优化私有云基础设施资源配置,更好地支撑关键的业务和场景。
4. 多云也助力企业优化资源成本。不同场景对基础设施资源的需求有不同,通用型资源往往会带来浪费。使用不同的云平台根据费用规则可以最大化地优化资源使用成本,获得最优的资源配置。
多云管理平台在企业 IT 架构中是一个承上管下的关键组件,是企业数字化、智能化运维运营的基础支撑平台。多云管理平台的设计定位会直接影响到企业 IT 架构的设计。云管 + 容器云平台 + 微服务治理 +DevOps 是比较完整的产品体系。如果能基于云管来支撑容器云 PaaS 以实现以应用管理为中心的产品架构体系,那么其发展潜力将会是巨大的。