2016年5月22日

虚拟是现实

通过eva skoglund.

EVA_HEADSHOT.

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

经过3秒的反射后,我自发地回答“嗯,最大的区别可能是您在基于云实验室中的即时共享机制,具有虚拟平台。想想它就像一个人的虚拟房间,每个人都登录同一实验室。他们看到相同的东西,瞬间互相共享软件和运行会话。“

我们进行了一次富有成果的讨论,我的朋友很高兴地离开了,并提出了一些关于基于云的工具的新想法。但我一直在想这件事。容器和基于云的虚拟平台是如此不同,但又非常相似。只是不同的虚拟概念。

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

首先,有虚拟化硬件,如网络功能虚拟化,软件定义网络或软件定义的 - 对于此事项。这是一种经典旧虚拟机(VM)技术的演变,其中整体机器和操作系统都是虚拟化的。软件容器(例如Linux中使用)可以被视为“更轻”类型的VM技术,其中所有容器共享相同的操作系统内核,并且只分隔到不同的容器中的文件系统的一部分,而不是整个操作系统图像(这里有变体,并非所有软件容器格式都是相似的)。看到一个简单的例证下面。(对于更完整的插图和解释,阅读这一点帖子从Imesh Gunaratne。)

VirtBlog1.

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

接下来我们有,基于云技术。简单地说,它意味着您在某个大型服务器中运行某个软件,然后通过您在本地机器上运行的客户机远程访问它。你基本上是“租”电脑时间,而不是使用自己的电脑。基于云的技术的原因是什么?你首先要区分如果你是从使用云技术,或者如果你正在考虑提供你的产品是基于云技术的。

  • 如果是后者,你可能想这么做,因为你将提供一个服务给你的客户(而不是卖“一件东西”)。这可以在销售软件即服务(SaaS)模型的保护伞下进行。你的客户从你那里购买服务,你通过云提供服务,他们不授权产品。想想Salesforce.com和SAP这样的例子。
  • 如果你想使用对于云技术,您可能希望使用它,因为它是访问技术或工具的一种更简单、更灵活的方式,这使通信和协同工作变得更容易。您不希望管理本地安装、执行所有维护并跟踪不同版本。另外,你也可以购买基于你自己的云服务使用它,这使得易于扩展和降低成本,具体取决于您使用该工具的数量,您不必投资到前面。它成为一个成本结构因素。

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

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

VirtBlog2.

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

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

VirtBlog3.

让我们总结一下我们上面讨论过的维度:

  • 使用虚拟化技术(vm和容器)的原因通常是您希望优化硬件资源,并能够更快地响应市场变化和需求。当您将功能从在特定硬件中实现转移到在软件中实现时,更改变得更加容易。
  • 如果你想要更持续的收入来源,而不是依赖于那些不成则败的交易,你可以考虑转向销售软件即服务,而不是让你的客户使用你的技术。如果这是您的理由,那么将您的产品转移到云可能是一件好事。
  • 如果你想在你的组织中节约运营成本,使员工更有效率,使他们更容易一起工作,有两种不同类型的虚拟概念可以帮助你:
  • 使用基于云的工具。它更容易管理,没有本地安装,您可以保持所有用户的同步,并且可以更好地将成本与需求相一致,因为您通常为实际支付费用使用(不拥有该工具)。
  • 使用虚拟实验室作为物理实验室的补充。它更实用,不占用太多空间,成本也不高,维护成本也更低。
  • 如果您希望软件开发更快,您也希望您的软件更快地达到生产质量,那么虚拟平台即可考虑。最后,这是关于能够更频繁地提供软件(甚至不断地),这意味着您每年都不满足于释放,但您希望它更加常规的节奏。这与上述持续收入流的业务目标有益。

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

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

如果您想为自己尝试实验室云,您可以获得免费帐户https://lab.cloud.windriver.com/

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

以前的用TPM密封数据在VxWorks上
下一个来自NXP FTF技术论坛的见解