当今大多数可用的基于云的服务都是通过裸机或虚拟机(VM)交付的,但是容器技术为云服务应用程序交付提供了强大的第三选择。
随着云计算的出现,许多组织建立了云优先策略,这些策略将云而不是传统的内部部署指定为新应用交付的优先选择。 常见的三种应用程序交付方式是:
裸机环境 :从专用的云基础架构和OS平台的基础上安装,运行和交付应用程序。 裸机环境的关键属性是使用专用和特定的硬件以及操作系统配置。 虚拟机(VM) :在虚拟化硬件环境的虚拟机管理程序的控制下安装,打包和运行应用程序, 虚拟机还包括操作系统的专用副本和其他必需的软件。 VM环境共享硬件资源。 容器 :仅包含应用程序的基本部分(云服务)及其依赖项。 多个容器可以在一个操作系统实例(Linux®或Microsoft®Windows®)中运行。 Docker是容器运行时引擎的一个示例,还有一个流行的Docker容器注册表DockerHub。 许多下一代云平台即服务(PaaS)开发人员广泛使用了容器。 IBM®Bluemix™是一个PaaS云平台,您可以在其中使用IBM Containers运行Docker容器。大多数流行的云计算公司提供各种裸机基础架构即服务(IaaS)云应用交付选项的组合和组合(例如IBM SoftLayer )。 此外,当今的大部分云实施都利用通过使用硬件虚拟化(VM)获得的效率和效力。 第三种选择是容器技术,它是开源的,并降低了成本。
了解最流行的云应用程序交付方法的利弊有助于您做出最佳选择。 尽管大多数基于云的服务都是通过裸机或使用虚拟化(和VM)交付的,但应用交付的流行第三选择是Docker容器。 在所有可能的选项中,将裸机,虚拟机和容器集成在统一的云平台中可能是最好的选择。
首先探索的领域之一是将所需的云应用程序映射到特定的最佳硬件,操作系统和虚拟机监控程序。
裸机云环境可以构建在硬件,操作系统,中间件和应用程序的广泛组合中,这些组合经过优化可以与专用硬件资源一起运行。 例如,您可以使用IBMAIX®,IBM i,Power on Linux,IBM z Systems™以及x86 Linux和Windows操作系统来构建裸机环境。 裸机环境还可以支持广泛的内部和外部存储子系统以及网络设备。 虚拟化(基于VM)的应用程序支持与特定OS,虚拟机管理程序和硬件组合(例如Linux操作系统和KVM虚拟机管理程序,Windows操作系统和VMware或Windows和Hyper-V)绑定在一起的环境,并且通常可以在特定硬件上支持高度共享和虚拟化的操作环境。 使用虚拟机,您可以灵活地在同一物理硬件上的不同来宾或虚拟机中运行不同的内核或操作系统级别。 容器在Linux(x86,Power或z Systems)或Windows系统上运行。 IBM AIX还支持容器技术。 使用容器时,许多客户端尝试使用尽可能多的相同内核/ Linux发行版。 您可能要调查目标容器和Linux环境是否支持内部和外部磁盘子系统,这些子系统存储数据,以供Docker容器中运行的应用程序访问。可以构建裸机云环境以支持大量的OS /硬件组合。 资源可以专用于和量身定制,以适合单个客户或应用程序。 许多人喜欢裸机配置,因为它们通过专注,优化和专门的专注和构建来提供始终如一的高水平应用程序性能。 如果需要,裸机环境还可以为应用程序提供对系统资源的完全访问权限。 在裸机环境中,您可以在专用硬件和操作系统版本的优化组合上部署特定的应用程序。 对于需要访问特定硬件功能(例如,图形处理器加速器,现场可编程门阵列)和操作系统环境的应用程序,此部署可能很有用。 在某些情况下,裸金属云环境可能是为云应用程序提供所需性能水平的唯一选择。 法规要求可能会要求某些应用程序和数据位于特定的裸机云环境中。
虚拟机使IT系统比专用或裸机方法更有效地共享资源,并且还可以在应用程序OS和虚拟机管理程序配对之间提供强大的隔离级别。 VM可以优化云应用程序以适应需求(弹性)的波动,这是云的强大价值主张。 虚拟机由虚拟机监控程序启用,虚拟机监控程序支持广泛的OS和硬件操作环境。 将现有的传统整体软件应用程序重构为运行在VM中的虚拟设备,然后将整体软件部署为云服务或云模式是相对容易的。 本质上,虚拟机代表了用于整体软件的云计算的快速路径。 同样,跨系统迁移虚拟机也很容易。
与虚拟机相比,容器体积更小,启动速度更快,并且需要更少的资源来部署。 容器可实现最高级别的云应用程序密度。 许多云微服务开发人员更喜欢将容器作为下一代DevOps环境的标准,并且还对其进行了优化以在横向扩展系统上良好运行。 存在一个大型的支持容器的基础生态系统(例如Docker Hub),以提高开发人员的生产力。 大型的云容器生态系统可以加快下一代云服务的敏捷性和部署。
采用下一代PaaS,敏捷,DevOps和基于微服务的软件应用程序方法的生于云中的开发人员和ISV最有可能对容器感兴趣,因为它是云应用程序交付的选择。 相反,传统的整体软件开发人员和ISV倾向于专注于裸机云部署或选择基于VM的云应用程序交付选择。
IT解决方案架构师,系统集成商和业务合作伙伴应精通这三种云应用程序交付选择。 这些用户应该能够清楚地阐明如何将跨越跨裸机,VM和容器的交付的混合云环境和应用程序连接在一起。
IT运营专业人员可能已经掌握了运行在裸机或基于VM的云中交付的应用程序所需的工具和技术。 但是,他们可能需要学习如何将容器集成到组织的云运行时环境中。
在裸机环境中运行的应用程序使用专用的硬件,这会很快变得效率低下且成本高昂。 如果管理不当,专用的裸机硬件和软件资源可能无法充分利用,并且成本很高。 裸机环境通常是静态的,可能难以为受益于硬件弹性的不稳定工作负载提供服务。 安装裸机应用程序非常耗时。 在裸机系统上运行的应用程序通常无法针对云随用随付定价,计量,计费和弹性进行完全优化。 由于其定制的性质,在裸机环境中进行工作负载迁移可能很困难。
VM可能需要很长时间才能创建和激活。 在VM中运行的应用程序往往被构建为不同的软件堆栈,并且必须重做次要(或主要)更改,这可能很耗时。 与容器相比,VM启动时间更长。 开始时间可能会成为一个问题。 与免费的容器相比,虚拟机管理程序管理软件可能会很昂贵。 最后,VM可能会引入高水平的性能开销,这对于性能或对延迟敏感的应用程序是不可接受的。 虚拟机监控程序的开销可能很高,与虚拟机监控程序相关的许可成本范围可能从低(KVM)到高(VMware)。
容器仅在Linux或Windows上运行。 重构现有的,较旧的单片软件以在容器中运行的商业案例可能不可行。 许多大型的传统IT商店和IT业务人员对容器不甚了解。 尚不清楚如何在各种收费的容器环境中许可微服务云软件。 有状态服务需要访问底层主机操作系统,因此仍然很难在容器中运行。 容器还会给云安全性和合规性问题带来一些不确定性。 在这种情况下,用户可以查看VM中正在运行的容器。
交付使用VM或容器的应用程序的最后一个潜在问题是某些软件供应商可能不会创建或优化完全支持虚拟化(VM)或容器环境的软件许可和支持协议。
确定最适合您的选项取决于您的工作量。 本节描述了可以在每个云计算交付选项上正常运行的工作负载。
本文对与云计算相关的当今流行的应用交付技术的数量不断增加提供了介绍和指导。 当今大多数基于云的服务都是通过裸机或虚拟化(和VM)交付的。 描述了一种新的流行的第三选择Docker容器,并建议将其用于下一代云服务应用程序交付。
翻译自: https://www.ibm.com/developerworks/cloud/library/cl-3-ways-to-deliver-cloud-applications-bluemix-trs/index.html