《PaaS程序设计》一2.2 开发者早期的选择

2.2 开发者早期的选择

不幸的是,扩展问题和数据丢失的情形非常普遍,主要是由于上一代应用开发者几乎没有太多的选择。大部分人要么选择共享web主机,要么选择专用web主机。如今,我们可以在两者之间加入一个更为强大,并且相对比较新的选择,那就是所谓的平台即服务。在我们深入平台即服务之前,先来检视一下前两种方案。

2.2.1 共享web主机

通常认为,web开发者刚开始的时候使用共享web主机是一种最容易的方式。例子包括GoDaddy、Yahoo!、Comcast以及如今的很多互联网服务提供商。
共享主机的核心概念就是一个FTP账号,即为登录FTP应用服务器而获取的凭证信息。这个服务器通常托管着几千个,甚至数万个网站。一般情况下,服务器是非常强大的,但是会很快陷入困境。如果这些网站中有一个或者两个开始出名,即使服务器能力非常强大,也会很快耗尽所有的服务器资源。于是会出现这样的结果:上千个网站变得异常缓慢,甚至没有任何响应。
使用共享主机有利的方面就是价格。共享主机价格便宜,有时候还是免费的。而且,是不需要手工维护的。开发者不需要安装安全补丁包、不需要管理软件、也不需要深入地理解软件是怎么编写的,只需要知道怎么编写HTML代码就可以了。开发者将写好的HTML代码交给服务商,后者会处理其他所有的事情。但是,由于非常便宜,服务供应商可能无法将所有的事情都处理得很好。例如,由于不能超出计算能力的限制,因此导致无法扩展规模。但是,对于简单的应用来说,通常还算不错的。
虽然,对于主机托管供应商来说,规模上比较划算,但这并不是非常可靠,尤其对于需要搭建一个网店、一个复杂的网站、甚至一个给客户提供稳定的联系信息访问的网站等应用。
另外一个不足之处就是安全。你的代码可能与其他10 000份代码共存于一个系统之上。记住,一个普通的网站每天遭到数百次的安全攻击是很容易的。将这一数据乘以10 000,就可以看到将正式的网站放在共享主机上的风险有多大了。
尽管有这些缺点,开发者依然觉地使用共享主机来托管个人网页、分享观点或者尝试新的想法,还是比较有用的。共享主机比较适用于开发时还不确定是否需要投资独立的服务器,并且还不需要面对规模扩展问题的时候。但问题是,一旦需要扩展,从共享主机迁移到独立主机会经历一段痛苦的过程。

2.2.2 独立主机

由于共享主机便宜而且易于使用,因此,开始的时候,开发者——尤其是web开发者——通常会选择共享主机。但在经历了这一阶段之后,通常都会转向独立web主机。这和在家里通过互联网托管自己的服务器一样简单。但是,独立主机也会依据不同的选项,提供不同级别的服务和可伸缩性。
以下是可供选择的独立主机类型的一个列表,按照控制程度(通常也是性能)降序排列:
托管服务器
管理服务器
虚拟私有服务器
基础设施即服务
下面我们来深入探讨一下每种类型。
托管服务器
使用服务器托管,你通常得自己购买服务器,然后将服务器安置在一个可以通过宽带连接的数据中心,并按月付费。托管数据中心提供互联网访问,有时候也帮助调试或者重启服务器。但是,除了需要预先花钱购买服务器之外,你还得自己负责维护和管理服务器。
管理服务器
“管理服务器”这个名词有点不是那么恰当。事实上,对于服务器的管理是非常有限的。如果RAM损坏了,服务商会把内存换掉。如果其他硬件有问题,服务商也会将这些硬件换掉。但是,在RAM或者磁盘被换掉的时候,他们并没有把你的数据换回来。因此,对数据进行离线备份就相当必要。
采用管理服务器有许多不同的好处。通常,不需要自行购买服务器,只需要从托管和管理服务器的供应商那里直接租用就可以了。相对于其他独立主机方案来说,管理服务器可能更快,更稳定和健壮。管理服务器也会挂掉,但一般不会那么快。通常是在磁盘失效的时候,而磁盘的平均失效时间在一年或者两年左右。对比起来,亚马逊的Web服务中短暂的服务器,差不多每隔几天或者几个星期就会宕机。管理服务器不利的一面,就是通常需要几个星期甚至一个月的时间来开通新的服务器。
虚拟私有服务器
虚拟私有服务器,或者VPS,与管理服务器非常相似,但它是虚拟的。在桌面环境下,Parallels、VirtualBox以及Fusion等虚拟机软件可能广为人知。对于服务端虚拟化来说,可以使用的工具(也叫管理程序)包括XenServer、KVM、Virtuozzo、VServer以及Hyper-V。
通过虚拟化,可以将拥有若干TB字节的RAM和数百个处理器核的大型服务器划分成若干个拥有GB的RAM和 1~4个核的虚拟服务器。这就可以比较容易地启动和运行服务器,而且相比非虚拟化的独立服务器来说,更容易替换。
虚拟化技术可以使每个虚拟服务器在安全方面独立于其他服务器,相对于以多宿主方式在一个Apache实例上共享服务器的形式来说,以一种更为全面的方式隔离进程和宿主程序。每个虚拟机都有自己的Root账号,这个账号在遭受攻击的时候,没有办法访问其他的虚拟服务器。
VPS也有其不利的一面,那就是由于底层的物理资源也是可以共享的,那么其他的宿主程序就有可能过多地占用你的处理器和磁盘I/O,从而以一种非预期的方式降低程序的性能。
基础设施即服务
基础设施即服务类似按需使用的、易伸缩的、具备一个应用编程接口(API)的虚拟私有服务器(VPS)。从可用性的角度来看,这是独立主机最快的实现方式。但是,由于依然需要获取Root访问权限,因此这依旧是一种独立Web主机。与其他主机托管方式最大的不同在于,IaaS可以让服务器在30秒之内启动并且运行。Iaas可以是独立的真实的服务器,但通常是虚拟服务器。可以用来实现虚拟化的软件从VMware的vSphere到Xen,从Citrix到微软的Hyper-V。最流行的Iaas就是亚马逊(Amazon)的Web服务,它采用Xen来虚拟化硬件。
使用IaaS的时候,可以得到一个独立的服务器以及一个专有的IP地址。但是,必须自己完成所有的系统配置和管理:安装软件、安装和配置Apache、配置安全属性、优化服务器、优化MySQL、增加账号、分发密码、设置SSH、生成SSH的密钥、安装和升级软件包,以及确保应用软件与服务器上的其他软件相互兼容。
采用IaaS的好处在于,可以按照实际需要获得任意数量的服务器,并且可以非常快地完成扩充。不利的一面在于,这些服务器通常要比其他独立主机方案慢。由于没有办法提供高性能和高可靠性,通常这些服务器的运行都是短暂的,意思是可能在没有任何通知的情况下就宕机。因此,必须从系统的角度进行设计,以专门处理非预期的服务器宕机,这就增加了复杂的层次。
比较成本
这几种独立Web主机的成本构成差别很大。
主机托管方式,开始的时候需要支付购买服务器的固定成本,然后只需要在托管数据中心租用场地即可。因此,相对于小规模的IaaS来说,后继成本极低。很多大型应用都采用了主机托管的方式,通过硬件的投资来节约每个月的成本。这也被称为通过增加资本支出(capex)来减少日常运营成本(opex)。主机托管的成本也有所不同,可以在刚开始的时候每月花费大约1000美元租一个机架,最多可以放置16台服务器。记住,采用主机托管,开发者仍然负责维护和管理这些服务器,因此开发者需要进入数据中心,安装机器,将它们相互连接,并且在服务器出故障的时候,自己去解决问题。
相对而言的另一端,即采用IaaS的时候,则要按照实际需要使用的资源,按小时支付特定的费用(也称为通过增加日常运营成本来减少前期的资本支出)。通常,有很多不同的组合方案可供选择,包括不同的CPU速度、磁盘大小以及I/O性能。
由于IaaS通常按小时付费,并且不需要长时间的保障,因此在短时间之内需要很多服务器的时候就非常方便,例如,在一定量的数据之上进行大规模计算。这个应用场合会对预算造成多大的影响呢?
假设我们需要进行DNA测序。这一工作有着确定的一组问题以及一组数据。使用IaaS,就可以启动上千台服务器,在特定的时间之内完成DNA测序,然后再关闭这些服务器。那么整个过程只需要为使用这些服务器的实际时间支付费用。如果购买上千台服务器,那么完成DNA测序之后,服务器将无事可干,而采用IaaS则只需要按照实际需要付费。
Web应用的生命周期通常要比DNA测序程序长很多,因此,表面上看来,采用capex可能要比opex更划算些,因为可以得到长期的服务。采用IaaS的方式来托管Web应用就不那么经济了。但是,由于Web应用程序可能会遇到访问峰值,因此,当考虑到准备上一场脱口秀或者一项新节目的时候,我们就必须要准备好应付随之而来的网站访问流量地增长。当采用服务器托管方式时,必须首先购买服务器,等待几周的时间,然后将它们放置到数据中心,并花费数周的时间安装配置。而采用基础设施即服务的方式时,则可以每天24小时的调用自动化的应用编程接口,并且可以在数分钟之内加入上千台服务器。在访问流量减少之后,则又可以释放这些服务器,并且仅需要为实际使用的时间支付费用。
使用IaaS最常见的问题就是,由于服务器通常都不是永久的,因此,必须采用某种方式的持久化块存储,用于保存数据。例如,当采用MySQL作为数据库时,在服务器宕机而又不想丢失数据的情况下,就必须要将数据持久化到块存储设备或者其他类似的持久化存储设备上。这些服务以及其他一些服务需要额外按小时付费。
基础设施即服务是一种按需所求的系统。因此,可以按照实际需要增加服务并且按小时支付费用。

时间: 2024-07-28 22:30:10

《PaaS程序设计》一2.2 开发者早期的选择的相关文章

《PaaS程序设计》一导读

前 言 编程很艰难编程是一项很艰苦的工作.相当艰苦.当你完成代码编写并且编译成功,你很开心.可是你会发现程序存在bug,这耗费了你几小时.几天.甚至几周时间去查找.定位.解决这些问题和边界情况.当你完成所有编码并且认为不会再有更难的问题了,你还得部署代码:Vim apache.conf.vim my.cnf.vim /etc/host.iptables.当你觉得你是一个程序员时,突然你深深陷入了系统管理的泥潭中,完全不明白怎么会这样.程序员比较擅长的事是创造性的偷懒.当一个程序员重复做同一件事情

PaaS将会迎来春天 开发者成为用户主体

随着云计算行业的日益盛行,平台即服务(Platform-as-a-Service,简称PaaS)也得到了相应的发展,不过它依然被很多分析师.公司和开发者所忽视.有研究表明,PaaS将不再是丑小鸭,他们在未来的几年里将会蓬勃发展. 据研究公司Gartner的报告,虽然整个云计算行业的产值达到1090亿美元,但是PaaS只能占到整体的1%左右.不过到2016年的时候,PaaS服务的产值有可能达到29亿美元,甚至占云计算行业总体的2%以上!比起Gartner,IDC对PaaS服务更为看好,他们认为这个

《PaaS程序设计》一1.1 开发者的困境

1.1 开发者的困境 开发者到处都是,他们工作于小公司.政府机关.企业或者自己创业.所有开发者都在面临相同的挑战:处理开发过程的运维事项.工作环境的不同使得问题看起来不同,其实核心问题是一样的. 例如,让我们回顾一下传统的瀑布开发过程.通常,开发者编写代码并在开发/测试环境里成功运行.然后就交付给IT团队,在这一环节的运维人员花几周甚至一个月时间验证应用的质量并实施部署,造成应用产品化的极大延迟.工作超期,产品测试延迟,最终,也许最难以承受的后果就是减缓了创新的速度. 速度,或者缺少速度,就成为

《PaaS程序设计》一3.2 可移植性:不再繁琐

3.2 可移植性:不再繁琐 可移植PaaS是这样一种平台,在其上运行的代码编写完成之后,就不需要进行较大修改.开发者在共享主机或者专用主机上开发的代码迁移到可移植PaaS上不再那么困难.想要运行应用不再需要依赖服务转接器. 平台仍然存在局限性,这是需要应对的挑战,但这些局限相对代码来说更偏功能性. 可移植性扩大了平台即服务支持的语言数量和类型,也扩大了语言自身的灵活性.如果我们想要将应用移植到不同的可移植PaaS平台上,需要调整应用的某些内容,但不需要彻底改写系统. 相对而言,看看早期的Goog

《PaaS程序设计》一1.3 云:发展历程简介

1.3 云:发展历程简介 什么是云?这个外来术语被过度使用. Dropbox就是所谓的云么?或者是iPhone?还是Gmail? 对某些人来说,这些林林总总的例子也许就是所谓的云,但对开发者而言不是. 对开发者来说,云是相互关联的一组基础技术,借助这些技术可以采用新的方法来构建和运行新的技术.如果用户不能在基础技术上开发新技术,那就不是云. 很多应用和SaaS都是基于基础云技术构建的.Dropbox和Gmail就是建立在基础云技术上的SaaS应用.但它们本身不是云技术. 20世纪90年代数据中心

《PaaS程序设计》一2.4 PaaS:现代应用的虚拟工具

2.4 PaaS:现代应用的虚拟工具 在过去的数十年中,应用开发发生了巨大的变化.从早期的在计算机上运行编译的代码,到客户/服务器架构,再到现在的REST 应用编程接口(API),编译和运行代码的工具也发生了很大的变化. 2.4.1 转向高级语言 让我们回到早些的那个例子:需要一个程序进行DNA测序,这个程序要运行得尽可能快,因此,我们可以使用诸如C或者汇编的底层语言,以便获得尽可能高的性能.使用PaaS,通常需要构建Web应用程序,延迟并不是那么的至关重要.对于运行在PaaS上的不同类型的应用

《PaaS程序设计》一3.1 不可移植的PaaS:遵照一个模板

3.1 不可移植的PaaS:遵照一个模板 采用不可移植PaaS的平台即服务,我们就可以基于这个平台的独特规范和API编写代码,从而创建应用.这意味着我们的代码结构需要严格依附于特定的模板或应用编程接口(API).这些API可能主要集中在服务数据库.存储架构或者搜索架构上.而其他时候,API属于低层次并且面向编码的.有时候我们必须使用专门为那个平台所构建的特定语言.正如我们所看到的,这种平台里有各种不同类型的"钩子",使得它可移植性较差.最早形式的平台即服务就是建立在这种结构化很强的想法

《PaaS程序设计》一1.6 云计算的承诺(或者炒作)

1.6 云计算的承诺(或者炒作) 从开发者的角度来看,这个兴盛的新兴领域的部分挑战决定了云计算是不是都是炒作. 对于一个开发者.公司或者政府机关,Gmail究竟能有多大改变?可能不会很大.它也许是有一定先进性,但绝不是变革性的.然而,学会在现代化公司的运维工作中充分使用基础云技术,例如DevOps或者PaaS,无论你是刚开始使用还是正在使用,只要这些技术能让我们的工作更简单高效,那就不是炒作.相反,这正是高科技公司创建和运维的模式.这是事实.毫无疑问,我们正迎头迈入云计算时代. 当技术产生于技术

《PaaS程序设计》一2.3 PaaS:综合两种方式的最佳方案

2.3 PaaS:综合两种方式的最佳方案 对于开发者来说,通常会以共享主机的方式起步.很快,就会经历需要更强的功能和控制的阶段,于是,就会转向独立主机托管.在完全拥有了控制权之后,你可能会感到很惬意,也会很兴奋,因为你可以对服务器进行调整和优化,让它们运行得更快,网站可以更快地的被加载,并且可以处理更多的用户请求. 然后,随着时间的流逝,兴奋感很快就会烟消云散,因为日复一日维护服务器所增加的负担,会让人筋疲力尽.独立服务器可以提供更强的功能和控制,但是很容易就会遭受攻击,而作为开发者,你必须自己