其他分享
首页 > 其他分享> > IaaS vs PaaS vs CaaS——哪种云架构适合你?

IaaS vs PaaS vs CaaS——哪种云架构适合你?

作者:互联网

 李光成 译 分布式实验室

图片

本文介绍了Web托管服务进化的历史,从专用服务器到虚拟化到IaaS、PaaS和最新的CaaS;说明了每种方式的优点和缺点。着重阐述了构建PaaS应用的各个组件,以及在选择CaaS提供商时应该考虑的问题。最后从成本和功能性的角度论述了PaaS用户应该迁移到CaaS平台。

Web托管服务的世界正在快速变化,你很容易就被众多的选项所迷惑并开始质疑自己的选择是不是最适合自己的业务需要的。在这篇博文中,我将剖析几种常见的Web托管服务方式的不同点:

读完这篇博文,你应该可以清楚的理解:

当然没有一种方式能够适合所有的Web基础设施的场景,你的特殊场景或许需要特殊的考虑。

图片从头开始——专用服务器

Web托管的本质还是在一个数据中心里布满了服务器、交换机、路由器、存储阵列和其它网络组件。我们所讨论的每一个选项不管它是PaaS、IaaS还是CaaS,它底层使用的基础设施都是相同的,即在一个大屋子里的很多服务器。 他们只是上面增加了很多抽象层使得管理变得更简单,和使用自动化的方式处理以前很慢或者需要手动步骤的任务。

专用服务器,或者叫做“裸机”有它的优点和缺点。

优点

缺点

image.png

尽管专用服务器有很多优点,但是它的缺点在大多数情况下会远远超过其优点。公司为了能够迅速进入市场赢得竞争,对于部署的速度提出了更高的要求,虚拟化就很自然的成为了数据中心进化中的下一个步骤。

什么是虚拟化?

简而言之,虚拟化就是将物理服务器分成更小的虚拟机,这些虚拟机只能访问物理机的部分资源。

例如你有一个8CPU核以及16GB内存的物理服务器,则可以将它分成8个虚拟机,每个虚拟机有1个CPU和2GB内存。

你或许已经听说过一些虚拟化技术如Xen、KVM、VMware和Hyper-V,其实很有更多。

优点

缺点

image.png

你知道51% 的人认为“云”会被天气影响吗?你知道当人们谈论“云”时他们实际上是在讨论基础设施即服务吗?

什么是基础设施即服务呢?

亚马逊在2006年发布了其Amazon Web Services(AWS)和EC2产品,成为了这个领域的先驱。

为什么这个进化如此重要?

在过去当你需要上线一个在线业务时,你不得不进行复杂的计划来保证你在数据中心内有足够的机架空间、足够的服务器和存储来处理业务的增长,足够的网络带宽来处理所有的用户流量。这种计划并不容易,尤其是对早期的业务来讲,你无法预测业务的未来和增长轨迹。

  1. 它给了开发者超能量: 构思一个想法立即上线。 如果成功了,可以容易的扩展规模。 如果失败了,关闭虚拟机以节约成本。

  2. 它使得数据中心自动化变得更强大: 全自动基础设施管理成为可能,出现了“基础设施即代码”的概念。 弹性伸缩在过去是不可能实现的,但是现在web基础设施可以当业务变化时自动的扩展或者收缩。 在服务器的自动化管理之后,数据中心的自动化也扩展到了存储、网络以及其它大量的需要专业知识的系统,在代码和API能够处理这些自动化之后,这给全球的开发者社区带来了新的机遇。

下面我们将讨论PaaS的构成以及它如何跟Docker及容器相关联,接下来将讨论容器托管平台和容器即服务。

我们已经讨论了IaaS的具体细节,让我们跳到PaaS的话题吧。

平台即服务(PaaS)使得开发人员可以很容易的部署和管理应用而隐藏掉所有的实现细节例如服务器、负载均衡器、DNS等等。他们或多或少的去除了对运维团队的需求,而是让开发人员去关注应用部署。有很多PaaS提供商,其中一个最流行的是Heroku。关于Heroku的一个有趣的事情是Heroku完全是运行在AWS之上并依赖AWS的。如果你不愿意你的应用运行在美国东部或者欧洲西部的AWS上的话,这或许是一个问题。没有IaaS,像Heroku这样的平台可能就不会存在了。PaaS提供商利用IaaS作为一个非常重要的组成部分来交付它们的服务。在减少从想法到部署的时间、自动化流程以及减少特殊的系统知识需求的趋势中,PaaS是合理的下一步,就像是从专用服务器到IaaS一样。

image.png

能够通过抽象而避免处理服务器相关的问题是不容易的,需要引入很多东西才能做到。

在PaaS的概念之下有几个主要的模块:

第一个和最后一个点是Docker迅速发展的非常重要的原因。Linux容器技术已经存在了一段时间了,但是只有某些大的公司或者PaaS提供商自动化了容器的使用,Docker使Linux容器的使用变得非常简单,也提供了标准化的镜像格式,它成为了PaaS中重要的组成部分。

这非常强大,因为很多公司在处理爆发式的用户增长,来自于移动、社交和IoT的新的业务模式,以及期望从传统的长的版本发布周期转变到持续交付。他们利用基于软件的架构或者微服务。他们需要能够自动部署和测试新的代码,并根据业务的变化弹性伸缩。但问题是他们没有足够的资源和经验来交付到他们的开发团队,所以他们不得不将其外包给PaaS提供商。不幸的是,当你这么做的时候,你就放弃了对于这个黑盒子的很多控制,而是花很多钱并使得自己完全依赖于它。另外一个选项是,很多公司反复的重新发明轮子或者使用那些难于维护的、运行缓慢的和易于出错的工具。

最好的情形是在自己的数据中心或者Cloud帐号中运行一个PaaS平台,你可以全权控制,你的团队可以直接参与应用的部署,因此可以形成一种真正的DevOps文化。Docker及其标准化的生态系统是这种愿景成为现实的重要一步。

image.png

什么是容器托管平台,或者叫容器即服务呢?这就是我在上面的章节中提到的另外一种构建在Docker基础上的Web托管方式。它是你用容器来部署复杂的多层次的应用所需要的自动化的编译系统,集群调度器,负载均衡,DNS自动化以及服务发现。这是PaaS的另外一部分内容,但是你不是用一个复杂的编译系统来编译你的应用,而是用Docker镜像。镜像可以非常容易的进行编译和本地测试,因此你在部署应用之前就确认应用可以正常工作。现在PaaS用户也可以得到相同的体验,但是不需要拥有自己的硬件或者云帐号的前提下节约大量的成本。他们不再受限于其服务提供商所支持的环境,可以通过将应用打包成Docker镜像的方式在任何地方运行。

在这个过程中,利用诸如ContainerShip Cloud,你可以在任何地方,在任何云平台上甚至是裸机上用相同的方式运行你的应用。你不再被卡在构建复杂的应用来解决非常困难的问题,或者卡在使用某个提供商的特殊的自动化部署工具上。

但是选择一个正确的Docker容器托管平台并不是一件容易的事情,有很多的问题需要你去思考和注意。

image.png

我的观点是好处远远大于缺点。我认为真正的问题是,如果你已经使用了某个PaaS提供商,你是否应该花时间学习Docker并使得你的整个团队认可这个想法?你是否应该花时间去学习一个新的容器托管平台?

无可否认,是的。容器会一直在那里,PaaS提供商会转型成CaaS提供商,不要拒绝容器的浪潮,去拥抱它吧。

例如,一个标准的2x Heroku dyno有不限量的CPU和1GB内存。如果你需要8个这样的实例,你就需要每个月付400美元。

在DigitalOcean,你可以用80美元/月(加上你的CaaS提供商的每服务器成本)租用一个4CPU和8GB内存的droplet来运行8个0.5CPU和1GB内存的8个Docker实例,你大约可以每个月节省300美元,这对很多公司来说是一笔不小的数目。

你将可以真正的从更深的层次理解你的应用运行的情况。

能够使得团队中的每个人可以在本地测试他的代码然后编译,并且知道它可以工作,这对一个团队来说是一个非常大的进步。

你将会采用最好的工具来完成你的工作,而不是使用你的服务提供商所能提供的最好的工具。

image.png

感谢你阅读这篇从专用服务器到容器托管平台的背景知识的文章。希望这可以帮助到你回答一些问题和指出了一些好处能让你尝试一下容器。


标签:容器,提供商,PaaS,虚拟机,vs,服务器,IaaS,Docker
来源: https://blog.51cto.com/u_15127630/2820931