Puppet Labs CEO Luke Kanies解说云部署
Puppet Labs是一家数据中心自动化初创公司,公司CEO Luke Kanies认为,优秀的人才和适宜的规模才是成功部署的关键,而对于规模的理解,他觉得较小规模比较有利。对于CIO和IT管理人员来说寻找实现云落地的方法是非常关键的因素。“寻找有技术天赋的人才,他们对这项工作有满腔热情,就可以分配给这些人才部分资金,让他们去施展,相信他们定能完成。”假如启动一项为期三年,价值数百万美元的项目,配置服务器和众多工作流 ,这个过程较小规模的操作不一定能得到更高的投资回报率。
面对云部署企业应该如何选择
对云部署的看法,仁者见仁,但人们最终的想法都是一致的:云部署的最终目标就是用软件来自动化的管理系统。不同企业应该选择什么样的方式来实现自己的云部署方式?这是云落地后摆在企业面前又一难题。其实,部署最直接的影响可能并不是强调现如今IT环境的如何庞大和其技术领先性,相反云部署要关注的点是如何利用更少的时间,耗费更少的人力,提高工作效率。对于企业的部署,有三方面的建议:1.减少常见错误;2.虚拟化物理服务器;3.垂直服务器扩展。

其实从简单意义上来说,云部署就是为了简化工作流程,使业务更加自动化,在不需要更多人参与的情况下,实现更高的效率。这样看来,云部署似乎是一件革命性的大事件,带来虚拟化,IaaS等技术一样的现实意义。也就是这样,很容易让人产生误导,觉得企业对于云部署可以完全依赖标准化的流程。

可见,企业对于云部署工作的了解还不是那么深入,在对企业使用IT自动化工具的调研数据中,也可以看出企业对于部署基础设施的使用情况。

上面的图中可以看到,大多数企业对于云部署并没有十分高的敏锐度。85%的企业并没有采用自动化部署工具,那么是什么原因让企业对于自动化部署工具显得颇为冷落呢?

云部署可能并不会像虚拟化、IaaS那样让人们为之一亮,但是如果将云部署工作看成一个可有可无的事情或者是随便就可以应付的流程,这也是大错特错的。部署工作最简单的意义就是使程序部署变得更加自动化,协调化和可重复性。云部署也比单纯革命显得更加灵活、先进。

传统的开发环境,开发者为了节省资金,通常使用的服务器数量比应用数量要低,开发环境的不可兼容性,也给开发者从一个项目转到另外一个项目带来了不便,重新搭建环境又非常费时,但在云中就可以解决这一问题,开发人员为项目的每个分支中的应用分配相同的部署。这样就能够节省资金,在保存代码代码的同时结束资源部署不可用状态。 程序的完全部署至少需要一台应用服务器,一个数据库服务器或者缓存、辅助服务器。但是仅仅依靠开发者编写的代码控制部署,项目的防火墙或数据库服务器附件等部分可能会变得非常紧张。但如果不部署,建立恰当的开发环境时间会非常紧张且昂贵,即便这样,开发者也不愿意关闭好不容易搭建起来的环境。在这个过程中,不同企业使用的自动化交互拓展方式也不尽相同。

不同程序版本的需求和分支的繁琐性使环境部署的复杂性给系统管理员和开发者管理虚拟化环境的方式带来了困难。传统方式是先在标准映像里安装相关软件和代码,然后再开启映像。这样,在开发者需要更新相关操作系统、数据库软件版本或改变服务器中代码组织方式的时候,需要创建一个新的映像。这个过程就让众多不同映像把自动化化启动项目部署的任务变得非常困难。

部署解决方案可以用一台普通的小型带有操作系统的机器,这时,需要创建应用环境来启动所有有必要的服务器,安装服务器中必要软件,检查不同代码所对应的相应分支和版本,以确保所有服务器都可用。即,数据库服务器首先启动,然后开始一系列测试确保可用性。最后应用程序服务器启动并测试,测试不同服务器之间的交流活动。测试过程中的所有失败情况,都要记录下来被重新测试,如果再次尝试失败的话会重新登录,如果部署环境失败的话为了节省成本将会停止所有服务器。部署过程中也会用到一些交互方法。

IaaS最普遍的一个应用是 “cloudbursting”,这时有多于平常十倍的流量。部署架构中,能够定义以下情形:监控本地工作负载和IaaS服务器,一旦负载超过一定的值,IaaS提供商会规定新的服务器。工作负载减小的时候将会终止IaaS服务器。“cloudbursting”情形比“autoscaling”要复杂的多。 首先,对于单一的云计算来说,自动缩放是非常有限的,所以急于从私有云转向IaaS是不可行的。其次,快速转向IaaS可能需要复制/重新建立数据库服务器,或者有IaaS云服务器。第三,现代网络应用程序通常需要配套的应用服务器(高速缓存服务器和防火墙),创建和连接。最后,需要在集中的URL中分流所有流量,这样在多个数据中心或者云中可以智能的平衡负载,选择路由。解决这些复杂性问题,不是简单的缩放是找到正确的“cloudbursting”。

在云中,数据库服务器比应用服务器有着更多的难题,只要确保应用程序服务器充分被利用。但是数据库服务器就是另外一回事了,应用程序服务器要在数据库服务器上读写,这样就要确保数据库服务器要一直可用并且联网。数据库服务器要连接网络,这样备份他们就变得比较困难,为了抢数据快照中途总会有几秒的终端。这样一来,好的云架构和部署场景的配合就变得非常重要,也能够使数据库备份和灾难恢复变得简单。从体系架构的角度来看,就需要有一个主数据库服务器和一个从数据库服务器。

许多软件工程部门已经实行了一些整合工作,这样可以大大提高自动化验证代码的质量,每一行新的代码都要经个严格的测试。实际上,为应用程序服务器部署新的代码很少是自动化的,并且非常费时。但是部署自动化代码的环境非常容易并且非常高效。