2016年5月22日,

虚拟现在是现实

通过Eva Skoglund

Eva_Headshot

一位在Wind River的开发者朋友有一天问我:“假设我有一个小型开发板的虚拟平台(如Minnow board)。什么时候应该在VM或Linux容器中运行模拟?什么时候我应该在基于云的实验室中将其作为虚拟平台运行?”

经过3秒钟的思考,我自然地回答道:“嗯,最大的不同可能是你在基于虚拟平台的云端实验室中拥有的即时共享机制。把它想象成一个虚拟的房间,每个人都登录到同一个实验室。他们看到相同的东西,并立即共享软件和运行会话。”

我们有一个富有成效的讨论,我的朋友对基于云的工具周围的一些新思想来了快乐。但我并没有能够停止思考这个。集装箱和基于云的虚拟平台如此不同,但相当相似。这只是不同的虚拟概念。

肯定也有人和我的朋友有同样的想法,我很清楚为什么今天所有的虚拟概念都令人困惑。我对我给他的答案不太满意。我们可以把它分解成哪些维度?我们需要理解虚拟概念之间的区别,它们是什么,以及原因使用它们。

首先,有虚拟化硬件,比如网络功能虚拟化、软件定义的网络或软件定义的任何东西。这是对传统虚拟机(VM)技术的一种演化,在这种技术中,整个机器和操作系统都是虚拟化的。软件容器(例如Linux中使用)可以被视为一种“轻”的虚拟机技术,所有容器共享相同的操作系统内核、文件系统的,只有部分被分成不同的容器,不是整个操作系统映像(这里有变异,并不是所有的软件容器格式是一样的)。参见下面的一个简单示例。(要获得更完整的说明和解释,请阅读本文帖子从Imesh Gunaratne。)

virtblog1

当所有这些虚拟层叠加在一起时,现代软件系统会变得非常复杂。创建虚拟机的最初原因是允许多个用户共享同一大型机。虚拟机允许他们在虚拟机上运行他们想要的任何操作系统,并使用虚拟机在他们自己之间共享大型机。现在,虚拟化硬件、操作系统或任何其他“接近于硬件-软件”的业务原因通常是更新软件比更新硬件更容易,并且可以更好地利用硬件。虚拟化本质上意味着你移动功能从硬件实现到软件实现。软件可以让你对不断变化的需求做出更快的反应。

接下来,我们有,基于云技术.简单地说,这意味着您在某个地方的大型服务器园区运行一些软件,并且您通过在本地计算机上运行的客户端远程访问它。您基本上“租用”计算机时间而不是使用您自己的计算机。基于云技术的原因是什么?如果您从角度来看,你首先必须分开使用云技术,或者如果你正在考虑提供您的产品作为基于云的技术。

  • 如果是后者,你可能想这么做,因为你将提供一个服务给您的客户(而不是销售“一件事”)。这可以在销售软件 - AS-Service(SaaS)模型的伞下。您的客户从您购买服务,您可以通过云提供,他们没有许可产品。想象像Salesforce.com像SAP这样的示例。
  • 如果你想使用对于云技术,您可能希望使用它,因为它是访问技术或工具的一种更简单、更灵活的方式,这使通信和协同工作变得更容易。您不希望管理本地安装、执行所有维护并跟踪不同版本。另外,你也可以购买基于你自己的云服务使用它可以很容易地根据您使用工具的多少来扩大或减少成本,而且您不需要预先投资很多。它变成了一个成本结构因素。

另一个虚拟概念是一个虚拟实验室.这通常意味着使用本地客户端访问远程实验室。基本上,您将物理实验室安装在“其他地方”,并通过本地客户端远程访问它。一般来说,这非常接近基于云的技术。主要区别因素是,虽然云计算倾向于使用商品化的可互换硬件,但硬件实验室包含用于特定产品或软件栈的特定硬件。你想要一个虚拟实验室的原因是你想要省钱——为你的公司/团队的每个人都建立一个大型的现场实验室太昂贵了。这是不切实际的,占用太多的空间,你必须处理它的维护-这是资源密集型的。

然后我们有虚拟的平台.在这个虚拟概念中,您有一个硬件的软件模型(例如将在虚拟实验室中使用的硬件),并在普通PC或服务器上的模拟器中运行该模型。如果您的模拟器是一个高保真的模拟器(例如风河系统公司西米奇)可以运行非常大的软件堆栈,你在模拟器的虚拟平台上运行你的整个软件应用程序(从操作系统到应用程序)。使用虚拟平台的主要价值是开发者的效率和大规模测试。开发人员可以通过不受硬件限制和拥有更好的协作工具来更快更有效地工作。测试的规模很大,因为你可以拥有多少虚拟电路板没有限制。最终,您可以更快地达到软件的生产质量。

virtblog2

虚拟平台的说明:请注意,在虚拟平台内部,虚拟硬件可以与底层主机硬件完全不同,“内部”操作系统与外部主机操作系统也可以完全不同。虚拟平台通常是将要投入生产的特定硬件和软件堆栈的副本。这两种情况的应用程序通常是相同的。

云计算和虚拟平台也可以结合在一起,使您可以通过本地客户端或web浏览器远程访问虚拟平台。(这是我朋友提到的替代方案之一——在基于云的实验室中运行虚拟版的Minnow Board。)在这种情况下,您可以从上面的几个概念中获益。您可以使用普通的标准服务器来运行测试和开发人员代码,您可以从虚拟实验室中获得避免本地硬件的好处,还可以从虚拟平台中获得好处。您的实验室不再受到物理上的限制,因为您可以按需扩展硬件。您可以立即访问,无限数量的板,并运行真正的软件堆栈。参见下面的插图。基于云的虚拟平台实验室的一个例子是风河螺旋实验室云

virtblog3

让我们总结我们上面讨论的尺寸:

  • 使用虚拟化技术(VMS和容器)的原因通常是要优化硬件资源,并能够响应市场变更并更快地要求。当您在特定硬件中实现功能时,更改变更变得更容易,以便在软件中实现。
  • 如果您想移动到更多持续的收入流,而且没有依赖于几个制造或休息的交易,您可能会考虑搬到销售软件服务,而不是让客户许可您的技术.如果这是你的原因,那么将产品转移到云中可能是一件好事。
  • 如果您想在组织中节省运营成本,使员工更高效,使他们能够更轻松地工作,有两种不同类型的虚拟概念,有助于:
  • 使用基于云的工具。它更容易管理,没有本地安装,您可以保持所有用户的同步,并且可以更好地将成本与需求相一致,因为您通常为实际支付费用使用(没有拥有工具)。
  • 使用虚拟实验室作为物理实验室的补充。它更实用,不占用太多空间,成本也不高,维护成本也更低。
  • 如果你想要软件开发更快,你也想要你的软件更快地达到产品质量,那么虚拟平台是你要考虑的东西。最后,这是关于能够更频繁地(甚至是持续地)交付软件,这意味着您不满足于每年发布一个版本,而是希望它有一个更有规律的节奏。这很符合上面提到的持续收入流的商业目标。

既然我已经考虑了这个问题,下面是我对我朋友的新回答:你想完成什么?你是否从增加收入、上市时间等业务角度考虑?或者你正在考虑一种新的工作方式,使人们变得更有效率,更能合作?也许您真的想弄清楚如何将两者结合起来——您希望在Linux容器中运行某些东西,因为这是一个优雅的解决方案,并且您还希望将工作环境移到云中?

当看到所有这些类型的虚拟技术以及使用它们的原因时,可以清楚地看到,许多人都在努力使软件开发和交付更快,不仅以一种小的增量方式,而且以一种真正大的方式。我们知道软件为许多产品提供了价值和差异化,现在变得很清楚如何对许多公司来说,正在构建和交付的软件正成为业务关键。这正是许多虚拟技术可以帮助的地方。

如果您想亲自试用Lab Cloud,您可以在这里获得一个免费帐户https://lab.cloud.windriver.com/

另外,我还没有回复我的朋友继续讨论,所以我不知道他的目的是什么。也许我应该找到....

以前的在VxWorks上使用TPM密封数据
下一个恩智浦FTF技术论坛的见解