IaaS vs. PaaS vs. CaaS如何选择?

IaaS vs. PaaS vs. CaaS如何选择?

网络托管的技术发展很快,选择如此之多,用户很容易感到不知所措,甚至会开始质疑是否现在所用的服务,对于当前的业务和需求来说是否是最好的选择。本文会通过以下几个服务产生的背景,分析其差异:

  • 基础设施即服务(IaaS)

  • 平台即服务 (PaaS)

  • 容器即服务(CaaS)

 

读完本文你应该会对以下内容有充分的了解:

  • 每一种服务实际上意味着什么?

  • 为什么这种服务对你很重要?

  • 哪一种解决方案对你来说最有意义?

 

当然这些都要根据你的实际情况考虑。

 

 

专用服务器/Bare Metal

网络托管服务的基础,都是塞满了服务器、交换机、路由器、存储阵列和其他网络设备的数据中心。我们要讨论的PaaS / IaaS /CaaS是上层的东西,他们加上一层抽象层使管理更容易,并使那些过去运行缓慢或必须手动完成的任务自动化。

专用服务器,即我们所知的Bare Metal有他的优缺点。

优势

  • 性能——你正在直接使用计算机,中间没有任何附加的抽象层的开销,例如虚拟化;

  • 可靠性——在没有抽象层与虚拟化的情况下更不容易出错;

  • 资源用度——你的进程不会和其它的虚拟机或进程,去竞争CPU,内存和带宽等资源。

缺陷

  • 管理困难:bare metal中没有AMI货镜像的概念,所以不能快速复制;

  • 价格:多数情况下实用bare metal需要提前为硬件付费,还要支付放机器的房租。停下这些机器并不能帮你节省开支,你需要做好预算;

  • Bare metal环境下,所有的进程和应用都运行在同样的操作系统上。出于扩展性的考虑,通常会在一台服务器上只运行一个任务,比如web服务器,数据库服务器。

 

虚拟化:让事情简单化

显然这些缺点产生的影响盖过了优点,虚拟化成了很自然的选择。

什么是虚拟化?

简单来说,虚拟化将物理机分隔成了更小的虚拟服务器,如果你的物理机有2个双核的CPU和16G的RAM,你可以分成8个1 CPU和16GB RAM的虚拟机。

优势

  • 虚拟机可以克隆;

  • 为了安全和灾备,可以备份虚拟机镜像

缺陷

  • 使用虚拟化意味着增加了开销,并有潜在的性能降低;

  • 一般来说,常用的虚拟技术有Xen,KVM,VMware和Hyper-V等,这些虚拟机的镜像并不能通用;

  • 使用虚拟机仍是一项手动的工作,并且要求时间与专业知识。

 

 

从虚拟化到IaaS的质变

啥是IaaS?

  • 通过API虚拟化并管理其他人的硬件资源;

  • 编程访问计算、存储和网络资源和配置;

  • 当你需要时请求一个新的虚拟机,不需要时就停止,并且只为你使用的资源付费;

  • 将数据中心资源看成通用的资源。

根据这些特性,2006年亚马逊推出了AWS服务及其EC2的产品。

 

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

以前当你想要加载一个在线业务时,你必须做很多计划,以确保有数据中心和足够的服务器和存储空间来承载你的业务增长,足够的带宽来支撑你的用户流量。做这个计划不容易,特别是对于早期的、未来与发展路线都不确定的业务。

1.开发者不再被硬件资源所束缚:

  • 可以迅速把想法付诸实践;

  • 如果成功了,服务能轻松地随之增长;

  • 如果失败了,停掉虚拟机就没有额外的花费了。

2.数据中心变得更自动化:

  • 完全自动化的基础设施成为现实;

  • Web基础设施可以根据需求自动扩展和收缩;

 

IaaS的诞生确实是很重要的里程碑,但随着技术的发展,人们也在想是否有更简单的使用虚拟资源的方式。『我想要一个SQL服务,你却给我一台虚拟机?』这个思考了催生了PaaS和容器技术,有趣的是,很多PaaS的提供商都运行在IaaS之上,比如最受欢迎的是Heroku运行在AWS上。同时PaaS所依赖的底层技术又是CaaS的标准交付物。

PaaS虽然简化了开发者部署和管理应用,但也向开发者隐藏了实现的细节,例如管理服务器,负载均衡,DNS等等。

PaaS减少了开发者将应用从idea到实现的时间,使那些原本需要手动的进程自动化,让开发者专注于应用的开发,从这些角度来说,PaaS的产生是一大进步,就像从Bare Metal到IaaS的转变。

 

PaaS难以构建

PaaS之下有几个主要组件:

  • 构建系统:将代码编译为随时可以运行的格式,并将其存储起来供以后使用;

  • 应用管理数据库:追踪git修正,构建版本和应用元数据;

  • 集群调度程序:把多个服务器当作一个大的计算机,在这个计算资源池中运行构建好的应用,并保持对失败作业的检测;

  • 负载均衡:合理引流内网和外网的流量;

  • DNS自动化:当你创建或修改应用时,会自动更新记录;

  • 最重要的一点:通过FreeBSDjails,solaris zones或Linux Container来隔离用户间的应用。

最后一点也是Docker爆炸性增长的重要原因。Linux内核对container的支持已经有一段时间,但只有某些大公司或PaaS提供商将其自动化了。比如Docker公司的前身dotCloud,当其底层的容器技术Docker开源出来,立刻在社区得到了广泛关注。Docker不但使linux container的处理简单化,还提供了标准化的镜像格式。

 这个功能非常强大,因为很多公司都面临着用户爆炸性增长带来的挑战:他们希望能摆脱超长的发布周期,达到持续部署;他们想采用面向软件的架构或微服务架构;他们希望实现自动部署和测试新代码,并且在流量激增时尽可能做到收放自如。但问题是没有资源或必要的经验向开发团队提供该功能,所以他们将这些需求外包给了PaaS平台。不幸的是当你这样做的同时也放弃了很多控制权,花了很多钱,却被绑定在了PaaS供应商之上。

 最好的选择是在你自己的数据中心或者云账户中运行一个PaaS,在那里你拥有完全控制权,并且你的团队可以直接部署应用,创建一个真正的DevOps文化。Docker,和其驱动的标准化的生态系统正在大步前进使之成为可能。

 

容器托管平台/CaaS

那么CaaS是什么呢?首先,上一段中PaaS所具备的功能CaaS都有:自动化构建系统,集群调度,负载均衡,自动DNS,服务发现等,也就是说你能在CaaS上使用容器,托管复杂的分布式多层应用。

Docker镜像取代了janky buildpacks,很容易进行构建与测试,可以在部署之前确保它们能工作;同时不再局限于PaaS供应商提供的集成功能,任何能构建成Docker镜像的应用都能在其上运行。

 由于Docker的可移植性,你的应用更容易在各个CaaS平台间迁移。你不再纠结于为一个复杂问题建立解决方案,或者耗费人力学习某个供应商的自动部署工具。

 但是选择适合的Docker托管平台有一些需要注意的事:

  • 目前已经有了一些CaaS供应商,你可能不知道选哪个。但是只要你的应用Docker化了,就很容易去测试他们;简单到什么程度?读一读灵雀云用户文档你就知道了:http://docs.alauda.cn/tutorial/introduction.html

  • 像Triton或ECS等托管提供商的解决方案,依然会将你绑定,而Docker最令人兴奋的优势恰恰在于它的可移植性;

  • 许多CaaS解决方案的整个管理系统都运行在他们自己的硬件上,在你的服务器上只运行一个代理连接到他们API上。所以如果他们的硬件宕机了,你的服务器集群也会被停掉;灵雀云集成了AWS、Azure、金山云等多个IaaS平台,提供跨云部署、迁移和容灾服务,保证了某个IaaS宕机情况下,您的服务不间断;

  • 那些允许你在防火墙之后运行整个系统的解决方案是复杂的,并且会有很多碎片任务,这需要一个团队来管理和升级;

  • 而那些比较简单的,可以运行在防火墙之后的解决方案,有时会不太重视高可用性;

 

 

值得从PaaS到CaaS吗?

如果你已经使用了PaaS,还应该花时间学习Docker吗?你的团队会同意你的想法吗?你应该花时间学习一个新的容器托管平台吗?

答案是肯定的,因为PaaS提供商正在向CaaS转变,不要抗拒容器的这波浪潮,顺应它!

  • CaaS比PaaS更省钱

例如,一个标准的2X的Heroku实例,提供的是一个普通的CPU和1 GB的RAM,要花费320元/月;

而在灵雀云,运行1 CPU,1GB RAM的Docker容器,只需要58元/月。

  • 你有更多的权限来运行你的服务,能够从更深的层次理解你的应用是如何运行的

  • 你能享受到PaaS不能提供的Docker的优势

团队中每个开发人员都能在本地拥有一个和生产环境一样的测试环境,测试他们的代码,然后构建它。只要测试通过了,就能保证在生产环境通过,这是巨大的效率提升。

  • 可以选择最好的工具来工作,而不是从PaaS供应商已经集成的工具中选择。

posted @ 2015-11-30 15:58  geekkiller  阅读(2652)  评论(0编辑  收藏  举报