65.9K
CodeProject 正在变化。 阅读更多。
Home

开发者们(在云端)做得更好

emptyStarIconemptyStarIconemptyStarIconemptyStarIconemptyStarIcon

0/5 (0投票)

2013 年 8 月 29 日

CPOL

9分钟阅读

viewsIcon

16556

是什么驱动开发人员和产品团队将他们的开发和测试转移到云端?

引言

观看网络研讨会录像,了解如何将您的开发/测试迁移到云端!

不久前,DotNetRocks 的人播出了一期关于云端应用程序测试的播客。在此播客中,他们讨论了在云端跨一系列应用程序(包括 Web、移动和客户端/服务器)测试代码的好处。

虽然播客涵盖了许多与在云端测试应用程序与使用本地基础架构相关的主题,但并未真正解决您选择云的潜在原因。我想知道的是,是什么驱动开发者和产品团队将他们的开发和测试迁移到云端?当然,显而易见的云优势:降低一些基础架构成本、更容易扩展以及跨全球工作。但我更感兴趣的是这对应用程序生命周期及其最终成功有何影响。

定义云端的开发与测试

正如所有新颖的技术一样,很容易因术语混淆,因此我们来定义一些内容。首先,“云端”:我指的是公共云服务提供商。我不是指您的内部云,我绝对不是指您本地计算机上的虚拟机监控程序。那么,接下来,我所说的“开发与测试”是什么意思?

有单纯的开发,也有单纯的测试。但“开发与测试”是将已编码的内容进行检查,并确保其在常用工作负载下正常运行的过程。有些人称之为(减去发布过程的)应用程序生命周期管理 (ALM)。值得注意的是,我并不是指应用程序测试。应用程序测试是针对新的版本或全新的业务应用程序,对其功能进行试用,或者确保添加更新不会破坏现有功能。另一方面,开发与测试与您正在为内部或公众受众构建的应用程序相关。

当我谈论云端的开发与测试时,我指的是将用于开发与测试的大部分基础架构迁移到公共云。IaaS,有时也包括 PaaS,无疑会包含在此类别中。所有应用程序——即使是移动应用程序——都有一个它们引用的服务器,而该服务器可能对应用程序至关重要。一些应用程序还使用云服务作为工作线程或数据库。这些可能包含在开发与测试中,也可能不包含,因为许多这些服务一旦设置好就不需要进行触摸,并且可以被开发和生产环境同时使用。

开发和测试期间发生的 5 种活动包括

  1. 编码
  2. 编译
  3. 自动化测试
  4. 手动测试
  5. 实验

5+N 是开发流程中的暂存、部署和发布部分,它们存在于生产环境中。此时,您可能在问自己,生产基础架构和测试基础架构之间有区别吗?有!!

生产基础架构与测试基础架构的区别

生产基础架构类似于拥有一个敏捷的法拉利与一个带呼吸管和烟囱的 ¾ 吨卡车的区别。两者都会让您的朋友觉得您非常酷。但每种都很酷的原因不同。法拉利之所以酷,是因为它可以穿梭于车流中,而且速度非常快。卡车之所以酷,是因为它像块石头一样,稳定可靠。您开着法拉利去看看它能做什么,但您会把卡车投入工作。

在云端也是如此。您的开发与测试云必须灵活且能够快速编排。而您的生产云是您一次性设置好并日常使用的。您根本不需要更改配置;您只需要使用它。

从技术角度讲,这意味着对于开发/测试云,您需要能够

  1. 创建健壮环境的快照
  2. 按需复制环境
  3. 协作和共享环境
  4. 在无需手动干预的情况下复制配置
  5. 版本化配置
  6. 与开发工具集成

而在生产云中,您需要

  1. 能找到的最佳机器级 SLA
  2. 大量资源

有些公共云提供商是为其中一种场景量身定制的。例如,CloudShare 是为开发与测试量身定制的,而 Azure 和 AWS 是为生产而构建的。在 CloudShare 中,您可以创建多台机器环境的快照,并保持网络和内存状态与您离开时一样,而在Azure和 AWS 中,您可以创建单个机器磁盘的快照,但如果您需要回滚,则必须手动重新配置您的环境。

这些在开发和测试周期中的工作量可能会拖垮您。

回到开发活动列表。

更快的开发/测试周期取决于更快的访问基础架构

大多数开发人员不会让他们IDE 离开他们的本地机器。更进一步说,大多数开发人员都有他们精心配置的、以“机器人瓦力”为主题的——如果他们甚至允许您看到它,以及其产生惊人代码的强大能力——控制加载的自定义 Visual Studio。

除非您在尝试您喜欢的组件供应商的新控件,否则您可能不会在云端的虚拟机中使用 Visual Studio。

一旦开发人员编写了惊人的代码,他们就必须构建它。如果您是在本地环境,您会将代码推送到您的好心的 IT 人员为您提供的虚拟机上。问题是,IT 人员正确配置的可能性很低。希望它不是一个多层应用程序,因为那将变得过于复杂。IT 人员甚至能在不到一个小时的时间内为您提供该 VM 的可能性,甚至及时提供,也非常低。这意味着您和您的团队将无聊地搓着手,等待测试您的新版本。

一旦您在某个地方的基础架构上构建了您的代码,您就可以进行一些自动化或手动测试了。这就是本地用户开始担心他们必须运行的测试数量和配置的时候。因为,您必须再次去找您的 IT 人员,要求他们提供运行测试的基础架构。通常发生的情况是,由于时间限制或测试环境的数量和大小限制,他们最终只能将测试限制在最基本的测试。

如果一切顺利,并且您有一个满意的版本,您将将其移至暂存环境,然后移至生产环境。这个过程应该是相当成熟且不变的。

所以您可能已经注意到一个趋势,如果您是开发人员,您可能不太清楚,因为它对您来说太常见了。用于开发和测试的基础架构高度不稳定。这意味着它会非常快速地上升、下降、向左、向右。当您试图将其融入本地生命周期时,您立即限制了自己。

这仅仅是您必须运行的工作负载。那么那些您想运行但无法运行的工作负载呢?所有您梦想过要做的事情,但由于成本太高、风险太大而无法做到的事情。在本地运行的机会成本是巨大的。它限制了开发和 QA 团队运行测试甚至进行实验的能力。

现代应用程序之所以能够快速发展,并更快地满足用户需求,是因为现代开发团队进行实验。他们可以尝试新事物,快速失败,学习,然后继续前进。所有这些过程都无需开会、采购订单、再次开会、被批评、又一次开会,最后被拒绝。

如果您不创新和测试新事物,就无法增强应用程序的功能。这可能是让应用程序运行速度提高三倍的新配置。或者它可能是全新的 API,如果成功,将成为让您具有竞争力,或者让您的用户对您的应用程序赞不绝口的杀手级功能。

如果您使用云端进行测试,您可以做任何事情。因为在一个专门为开发和测试而构建的云中,当您弄坏了某些东西时,您会窃笑一下,从快照中恢复,然后再次测试。无需 IT,无需躲避您的老板,无需拍额头(好吧,除非您做了什么非常愚蠢的事情)。

您应该将开发与测试迁移到云端的原因

那么,将开发和测试迁移到云端的真正业务驱动力是什么?

  1. IT 和开发团队成为朋友
  2. 您可以在不增加额外工作量的情况下测试更多场景
  3. 您的应用程序的成功呈指数级增长

在大多数组织中,即使是硅谷的 ISV,IT 和开发部门也并非最好的朋友。尽管对大多数外部人士来说,它们是相同的一类,或者联系非常紧密。当您是这些团队的一员时,您会知道开发人员会因为 IT 缓慢且不够关心他们的需求而生气。而 IT 会因为开发人员占用生产资源、提出诸如打开特定端口和奇怪配置的要求,以及最终分散他们日常工作的注意力而生气。因为开发用户并非典型用户,所以两者之间的每次交互都是独特的,并且通常令人沮丧。

通过将开发和测试迁移到云端,这种沮丧感就会消失。开发人员不再烦扰 IT,曾经在休息室里的“冲突”现在变成了关于最新 MMORPG 的更友好的对话。

当您将测试迁移到云端时,您可以做一些很酷的事情,例如对测试进行微小变动,或者在不增加额外工作量的情况下将测试数量加倍。您可以扩展您的测试,让它们在各自独立的自定义基础架构上运行,以进行真正的测试,同时管理尽可能少的奇怪变量。我们都知道机器级别的配置是最具挑战性的应用程序问题。但在云端,您可以在配置完全相同的环境中运行单独的测试,而无需任何额外工作。更不用说,您还可以进行您从未想过用本地基础架构可以实现的突发和负载测试。

最后,这是关键。本地环境会限制您和您的应用程序,使其无法成为您想象中的现代前沿代码集合。如果您希望您的应用程序是现代的,即使它是一个渴望拥有移动和 Web 界面的遗留数据库应用程序,您也别无选择,只能迁移到云端。因为,您桌子下面的那个酷酷的服务器虽然不错,但它在阻碍您。把它变成一个游戏服务器,然后将您的日常工作迁移到云端。

如果您是本地用户,请停止。您热爱您的应用程序,并且希望它像所有其他酷炫的应用程序一样成功和现代化。所以,现在就将您的开发和测试迁移到云端吧!如果您已经爱上了云端,并且正在将您的开发和测试迁移到那里。请记住,并非所有的云都生而平等,您所寻找的是允许您即时共享、创建快照、回滚整个多台机器环境及其确切状态的特殊功能。

我叫 Chris Riley,我曾经也是一个服务器拥抱者。如果我能做到,那么您也能做到。

© . All rights reserved.