借助来自许多成熟的公有云服务的精心策划部署策略的内置工具,企业组织机构的IT团队可以——而且也应该将他们的测试/开发迁移到公共云服务了。
即使您企业在短期内不会将内部部署的应用程序迁移到云计算,您仍然也可以享受一个云开发环境的好处。许多企业组织正在采取一种混合云的方法:在公共云中运行开发和测试环境,而将生产应用程序保持在企业内部环境。
鉴于现如今的企业组织机构可以从多家云服务供应商处获得各种各样的工具,这使得企业的IT团队构建按需基础设施、部署代码并运行一系列的应用程序测试,以确保其是为生产做好了充分准备,要比前几年容易得多了。
云开发/测试的优势
无论其是一款简单的、运行在一台单一服务器上的应用程序,或是一款复杂的、需要一个复杂的测试环境、如亚马逊网络服务(AWS)和微软的Azure这样的云计算平台才能够大大加快开发进程的多层应用程序。
公共云服务供应商可以使得企业能够很容易地启动虚拟机。一款单一的应用程序编程接口调用将为开发人员或测试工程师们提供一台虚拟机,以通过一系列的测试来部署和验证应用程序。但并不是所有的应用程序都这么简单。
有些企业应用程序需要大量的配套基础设施,以便为本地生产环境模仿合适的真实测试。而其应用程序团队——开发人员和IT运营人员——需要了解通过最接近的具体环境以掌握应用程序在真实世界的性能,进而才能够更准确地预测应用程序的相关运行状况,如延迟性。而诸如AWS和Azure这样的成熟的平台,则声称使用了基于JSON的模板,以通过企业用户自定义的网络、存储、虚拟机实例等等,支持更复杂的自动化基础设施环境。运营团队可以实现几分钟内在云中复制完全配置的企业内部部署生产环境。这个概念被称为基础设施即代码(Infrastructure as Code),其在AWS上被称为CloudFormation,而在Azure上则被称为Azure资源管理器模板。
当在为开发和测试团队分配资源时,数据中心管理人员总是面临硬件方面的约束。测试环境的硬件规格必须与您企业在生产中部署的硬件规格相类似。您还必须保持这些物理系统的正常运行。硬件和配套的外围组件最终失败,而当这种情况发生时,其只是减缓了测试代码的进程,直到运营团队可以更换或修复组件。借助云计算的开发环境,物理硬件被抽象出来,连同其相关的所有维护任务。开发人员可以在其所选择的云平台上根据实际需要启动尽可能多的虚拟服务器。
维护物理设备以运行开发和测试工作负载意味着IT企业组织需要为闲置时间的物理设备买单。这些物理设备占用了数据中心空间,即使在不使用时也可能消耗功率。而如果时利用云计算的话,企业用户只需为他们所使用的资源买单。环境根据实际需求建立并拆除,从而使得企业组织只需要在他们使用资源时买单支付即可。
许多的持续集成(CI)和应用程序生命周期管理工具均与云平台以及拥有的服务器进行了集成整合。诸如AWS和微软这样的供应商们都有一套DevOps工具能够与惬意内部部署以及基于云计算的服务器兼容,缓解了从开发到生产的混合过渡。
推动混合云产生的工具
如果您企业是从头开始,不妨考虑采用一款工具链,将能够建立一个完全自动化的软件发布渠道。
源代码控制。Git是最被广泛使用的源码控制工具,其提供了一个分布式版本控制系统。许多连续测试和集成工具都能够与Git轻松兼容工作,您会发现有很多企业用户都在使用GitHub,这是一款基于Web的Git仓库托管服务。应用程序团队可以建立公共和私有源代码库,基于代码库协作,并最终被推送到测试和生产环境。
持续集成。当涉及到在云中的测试环境的自动化代码部署时,我们建议您企业不放尝试采用一台CI服务器。CI服务器可以被设置为提交源代码控制存储库——即提交应用程序代码的更改——然后根据最新的更改触发一系列阶段。例如,您企业可以使用开源的Jenkins CI服务器或其竞争者TeamCity、Travis CI、CircleCI或Codeship,以便为一款应用程序申请GitHub库。当一项更改被提交后,Jenkins运行一段代码,执行单元测试,然后通过发起CloudFormation模板触发一个测试环境的部署。环境一旦运行起来,另一项工作将在测试环境中部署应用程序到服务器。这将保持应用程序代码关闭生产服务器,直到其通过所有的测试,在这一点上,运营团队要么可以手动部署服务器;要么可以激活一个自动化的任务来执行这一工作。
性能、负载和用户界面测试。性能或用户界面(UI)测试有助于确保一款应用程序可以在生产过程中处理预期的用户负载,并且其功能能够适当的规模化。流行的工具可以在企业内部部署环境和由Apica公司和BlazeMeter公司提供的基于云的资源中运行负载和性能测试。Ghost Inspector是一款相当棒的工具,能够捕捉网站bug和其他用户界面问题。
原生云的DevOps工具
AWS和微软均已经创建了简单的原生云软件生命周期管理工具,以实现在混合云使用企业内部部署的基础设施和公共云服务对于应用程序的灵活管理。
AWS CodeDeploy将应用程序代码自动部署到亚马逊弹性计算云实例或企业用户自有的服务器。AWS CodePipeline在云中构建一个持续交付(CD)的管道,其为更改、开始构建或在CI服务器上测试、然后在云中为开发实例推出代码和在专用服务器运行CodeDeploy代理提交一个源代码控制库。
微软公司基于云的Visual Studio团队服务产品的工作方式类似于AWS的DevOps工具集。其所发布的管理功能使得企业组织的IT团队能够创建一个自动发布的管道,以便使得应用程序团队可以将代码部署到任何服务器上。
一款CI服务器既可以运行在企业内部部署环境,也可以运行在云中。此外,云服务器不必是一款单一的云:企业内部部署的服务器可以使用不同的云平台而不必使用开发和测试服务器。例如,没有任何东西能够阻止您企业在一台Azure 虚拟机上运行AWS CodeDeploy代理。
使其在现实世界发挥作用
今天,我们已经拥有一款混合开发和测试云部署的技术了。而其中最大的挑战之一可能是环境的复杂性。
团队成员需要一定的资源来完成这项工作。这可能包括在公共云平台上进行的培训,以及针对形成应用程序的管道的特定的CI/CD工具所进行的培训。
请务必让您企业内部的全部团队都参与到该方法中来。例如,可能存在您企业内部的网络或安全团队需要了解企业的数据流来自于企业内部部署环境迁移到云服务时需要遵守相关监管法规或内部安全策略的案例。不管是什么原因,推动DevOps团队之外的良好工作协作关系的构建将有助于确保公共云服务成功转型到您企业的生产服务器。让企业所有的团队都参与进来,可以有助于您企业实现更广泛的目标,并应该让所有团队共同努力把工作做好。