任何软件公司都需要接近生产环境的测试环境。 对于具有较长发布周期的盒装软件而言尤其如此。
通过将测试环境放置在云中可以解决许多构建测试环境的问题。 我们将讨论基于云的
Mail.Ru云解决方案 (MCS)平台上的测试选项。 但是我们讲的部分内容对于任何云都是正确的。
建立测试环境的困难
在讨论云中测试环境的功能之前,我们将讨论公司在测试软件方面面临的困难。
不同的Git分支-不同的环境
参与软件开发的大多数公司都使用版本控制系统。 最常见的一种是
Git ,有87%的开发人员使用它(
Twitter上的 RhodeCode民意调查)。
当为存储库中的每个新功能分配一个单独的分支时,Git中的最佳实践就是所谓的功能分支。 这种方法使开发人员不必“弯腰”,并使更改更加独立,但需要部署许多专用环境来测试单个功能。
计算资源利用不足
25%的物理服务器是消耗电力但无用的僵尸。 许多IT专家
无法说出他们公司中15-30%的服务器在做什么。
所以在这里。 在这里,用于测试环境的本地硬件与其他硬件没有什么不同,并且通常处理不善。 而且不能这样。 购买服务器设备机队时,如果消耗量和测试环境数量增加,则会重新分配资源。 因此,“以防万一”,测试环境在晚上和周末处于空闲状态,您只需为消耗的电力和散热付费。
虚拟化在您的私有云中的简单应用无法解决灵活的可伸缩性和设备使用不足的问题。
难度设定
测试和开发环境不仅是少数虚拟机。 通常,它包括应用程序服务器,数据库服务器以及消息队列服务器和缓存服务器。
如果开发人员没有适当的专业知识,开发人员很难自行提高和配置这样的基础结构,这可能需要几天的时间。 对于有经验的管理员,这很容易,但通常并不有趣。 另外,还需要官僚主义,并且分配资源以创建测试环境的过程可能会花费很长时间。
另一个问题是,专职系统管理员通常不具备部署特定测试环境的专业知识,因此该公司被迫从外部吸引昂贵的顾问。 一个示例是基于Hadoop,Spark,HDFS或Airflow的大数据沙箱。 部署这种环境需要BigData领域的专家至少一个星期的时间,而普通系统管理员至少需要一个月的时间。 Kubernetes集群的情况与此类似:在生产配置附近构建测试集群至少需要几天的时间。
结果,该公司被迫转向第三方-以吸引顾问。 但是,要
找到大数据方面的专家非常困难 ,而且几乎可以指望这类系统的管理员。 是的,DevOps工程师可以处理部署测试环境的所有任务,但是并不是每个公司都拥有一个,因此在该领域寻找优秀专家并不比BigData专家容易。 的确,在2016年,求职网站的确有业者网站(common.com)
指出 ,公司寻找DevOps工程师的时间比其他专家更长。
云如何解决这些问题
消耗资源和即时扩展的仅次于账单
云服务最明显的优点是可以在任何时期租用任何配置(一台服务器或整个集群)的云基础架构。 在我们的
Mail.Ru云解决方案 (MCS)平台上,计费是每秒的-您只需要为实际使用的那些计算资源付费。
与裸机,私有云和大多数俄罗斯云提供商不同,MCS不会为停止的虚拟机(RAM,CPU)收取资源:您只需要为使用的磁盘空间付费。 例如,测试配置为20个CPU,40 GB RAM和1 TB HDD的成本为24,800₽/月,而磁盘空间的成本为7,000₽/月。 例如,如果您使用自动化工具在21:00停止此类环境并在9:00进行部署,则您将支付15900英镑-比全天候租房少一半半。
根据我们的经验,与在本地基础结构中进行测试相比,在云中进行测试所节省的总费用可以达到60-70%。
即时上下扩展云中资源的能力使您能够仅在适当的时间快速部署环境,并利用几乎100%的租用容量。 与内部部署相比,测试环境的部署时间减少了几天甚至几个月。
开发者自己分配的资源
使用自助服务门户,开发人员可以在云中配置测试环境并为其分配资源,而无需联系管理员。 即使是这种简单的操作,也可以将产品的上市时间缩短数周。
用于自动创建和销毁测试环境的API
云使您可以
在即时模型上创建短暂的环境。
使用REST API和CLI,您可以批量部署测试环境,停止,更新和删除它们。 这样,您可以为测试环境配置整个生命周期,并使数百个环境保持健康。 得益于即时的云扩展和秒计费功能,可以实现灵活性并降低运营成本。
这是我们经验的一个例子。该公司为150家银行开发软件。 每个银行在Git中都有自己的分支机构,并在盒装解决方案中内置其他功能。 公司被迫为每个客户提供两个或三个并行的测试环境:使用当前版本进行测试,使用新版本进行测试,检查从当前版本到新版本的更新。 总共,对于150个客户端,只需要同时部署和维护最多450个测试环境-这不包括开发环境。
在私有云模式下(它们在自己的数据中心中使用虚拟化),几乎不可能承受这样的负载,因为可用的硬件通常不足以满足所有环境的并行操作。 结果,开发人员正在等待测试,无法快速检查新版本应用程序的运行情况。
公共云中测试环境的自动部署和管理消除了测试速度的限制,并最终缩短了上市时间。 此外,租用云资源时的成本管理更可预测,并且成本本身比使用自己的专用设备测试台时更低。
云测试环境的另一个优势是与CI / CD工具的集成。 这些解决方案(例如Jenkins)包含一些插件,使您可以在构建期间在MCS云中动态创建测试环境。 您可以在运行功能或回归测试之前立即激活测试环境。 如果测试成功,如果出现问题,环境将自动崩溃-将保存环境,以便开发人员可以重新连接并了解回归的原因。
用于测试环境的预制构件
快速将测试环境部署到Mail.Ru云解决方案平台
PaaS可以帮助例如云中的
Kubernetes容器和数据库。 Kubernetes正在开发包含数百个应用程序的服务目录。
从目录中,您可以在几分钟内部署ActiveMQ,RabbitMQ,Kafka群集,日志监视和分析系统,各种CMS和数据库。 与仅包含自定义应用程序模板的流行
Docker Hub不同,
Kubernetes Service Catalog具有简化集成的高级模板。 从模板中,您可以部署预配置的应用程序组件(消息队列,服务发现,数据库,应用程序服务器,CI / CD工具,缓存服务器,区块链工具等),而无需配置在其上部署虚拟机的虚拟机。
Kubeapps市场上可用的应用程序。大数据沙箱
在MCS上,您可以为大数据应用程序部署测试环境。 使用
PaaS服务大数据,您可以创建Hadoop,Spark,HBase和Airflow的集群。 部署过程是完全自动化的,与自配置相比,这节省了数周的时间。
此处的另一个优势是秒计费和即时缩放。 在短期内创建可扩展测试环境的能力降低了公司维护分析IT基础架构的成本。 与本地相比,可节省80%。
与基础架构即代码集成
与基于VMWare的专有解决方案不同,MCS云平台基于OpenStack开放软件构建,该软件与各种工具(Terraform,Ansible,Puppet和Chef)完全集成。
当建立基础结构的过程以编码的形式进行并且开发人员更加熟悉时,Terraform是按照“基础结构即代码”(IaC)的精神构建的。 Terraform很难在私有云中使用,因为它缺乏与VMware的完全集成。 在MCS云中,公司可以使用与Terraform一起使用的现成示例(位于
GitHub存储库中 )。
使用Terraform创建测试环境。记住我
- 在云中进行测试已成为IT行业的一种自然习惯,并且已经被各种组织( 从州立大学到大型IT公司)应用 。
- 由于可以通过API进行即时扩展和自动化,因此在云中构建测试环境有助于节省资金,这可以提供近100%的租用基础架构利用率。
- 云平台上的其他服务以及Kuberntetes容器上的模板是现成的构建基块,无需进行配置。
- 诸如大数据处理工具之类的难以配置的服务,更容易作为预先配置的模板在云中租用。 通过不进行设置,您将节省数周的时间。
- MCS基于OpenStack构建,并与Terraform和其他DevOps工具完全集成。
所有这些工具都可以在Mail.Ru云解决方案平台中免费试用。 直到11月底,您可以
通过此链接使用ILOVEHABR促销代码,向帐户中添加1000卢布,然后进行测试测试。