作者: 徐桂林
随着IaaS的普及,越来越多的企业开始使用IaaS平台作为其企业的IT基础设施,试图从传统IT转型云IT。但是,目前我们看到的现状是,大部分企业仍然沿用虚机化时代的管理方式,把云当虚机化用,工程人员(开发、测试和服务运维人员,统称DevOps人员)根本没有享受到云所能带来的红利。
虚拟化时代的管理方式
在虚拟化化时代,工程人员获取虚机时,典型的流程如下:
- 工程人员提交资源申请;
- IT管理人员审批;
- IT管理人员使用虚机化软件控制台(比如vCenter)创建虚机;
- 工程人员获取到虚机的登录信息;
整个流程一般会花费几个小时或者几天的时间。在这种情况下,因为虚机获取不易,工程人员即便不再需要这些虚机,也不愿意轻易释放资源。结局是恶性循环,IT基础资源越来越紧张,工程人员获取虚机的时间越来越长。而另外一方,已经分配的资源并没有得到高效使用,形成大量的资源浪费。
从单个资源池到不同资源池的统一管理
云计算流行后,企业也开始“云化”之路。企业开始整合资源池,并构建统一云管理平台,来统一管理异构、异地资源池。这些资源池涵盖不同的虚拟化平台(比如vSphere、HyperV、FusionSphere )、私有云(比如青云企业云、Openstack、Cloudstack等)以及公有云(比如AWS、阿里云等)。
但是,企业IT管理部门在构建统一云管理平台,更多是沿用了传统的虚拟化时代管理思路,强调以基础设施为中心,关注统一管理和流程控制。在这种模式下,IaaS平台仍然被企业当成虚机化资源池来用,根本无法展现出的真正价值,比如自服务、弹性、可编程、自动化等。于是,工程人员获取虚机的流程和虚拟化时代基本一致,没有本质的变化。
如果企业沿用虚拟化时代的管理方法和思路,仅仅是从IT管理人员的角度来定位云管理平台,它就会犯一个非常严重的问题:请问我们采纳IaaS平台的初衷是什么?
企业需要的是云应用,而不仅是云服务器
IaaS之所以在这么短的时间内得以普遍接受,与其对企业业务创新带来了极大的推动效应密不可分。一些企业的业务部门跳过IT管理部门,直接去购买和使用公有云(俗称“Shadow IT”),对云的价值有切身的体会。这些工程人员发现,基于公有云,他们不仅可以自助的、不受限制的获取虚机等基础资源,而且云服务商还提供一系列服务帮助他们快速地部署和管理应用。以AWS为例,这些服务包括:
- CloudWatch: 强大而灵活的监控即服务;
- Autoscaling Group:可以使用CloudWatch采集的数据来实现自动伸缩;
- CloudFormation:可以实现资源的快速Provision;
- OpsWorks:应用生命周期管理和自动化;
- CodeDeploy:持续的代码部署;
- Beanstalk:快速部署Web应用;
因此,企业业务部门也希望企业内部IT可以提供和公有云一样的服务和体验,充分促进其业务创新。所以,云管理平台的首要建设思路是要保证企业IT系统及研发团队能够充分释放IaaS云平台带来的灵活性和敏捷性,促进企业IT业务应用更高效、更灵活得交付给企业用户。这就要求企业云管理平台应该充分考虑企业DevOps人员的视角和其对于IaaS云平台的期待。“以应用为中心的云管理”正是对此需求的全新思路。作为企业IT管理部门,应该拥抱这一新趋势,从传统的IT经理转型为新型的"Cloud Manager"(如下图)。
cloud-manager.png
以应用为中心的云管理:自服务IT + 自动化
企业拥抱“以应用为中心的云管理”,应该“重视云应用,弱化云资源”,应该“主推自助服务,减少流程管控”,应该“提倡自动化,避免人工干预”,应该“推进团队融合,减少协作屏障”。具体来说,以应用为中心的云管理平台需要提供下面的能力:
- 以应用的视角管理云资源和基础设施。企业应用开发团队在云管理平台看到的不是一堆云资源或者服务,而是把他们按照应用的方式组织起来(无论是从应用功能还是应用架构的角度),并能够让日常的监控告警、运维管理以及应用部署都能够基于应用视角实施。
- 以自助服务获取云资源和基础设施。云管理平台需要保证应用研发团队能够随时、随地获取其需要的云资源,从而释放其生产力。尤其是应用研发的整个流程要涉及到开发、测试、验证和生产(DTAP)多套基础设施环境。这些环境的获取和管理效率会全方面的影响到整个团队的每个方面、每个角色,而不仅仅是最后的生产上线。
- 以自动化的思路整合云资源和基础设施。云管理平台应该冲锋利用IaaS云“可编程”的特征自动化一切可以自动化的操作。例如,利用云API自动获取资源并加入应用视角管理,自动连接不同云资源,自动挂载负载均衡器,添加数据库访问白名单等。另外,IaaS云虚机支持的“metadata”和“userdata”还可以完美衔接资源自动化和应用部署及初始化两个阶段,实现资源获取到上线服务整个流程的自动化。最后,IaaS平台提供的弹性资源交付能力是其最核心的特征。云管理平台在这方面也要给予充分重视。如普遍使用的自动伸缩(Auto-Scalling)应该是其重点支持的功能之一。
- 以DevOps的理念推进团队协作。Dev和Ops之间的协作障碍一部分可能是来自传统企业组织架构上的限制,其最直接的结果就是Dev和Ops在软件生产过程中在完全不同的工具和环境上工作。一个好的云管理工具需要能够把应用系统的开发、测试和运维重新拉回一个平台,使用同样的工程语言,复用大家的工作成果,保持流程和环境的一致性。并从此打通应用从代码到服务的整个通道,推进应用的持续交付。