导语:
在互联网+时代,架构师们都在努力设计既能功能上满足业务需求,又能在业务量突然变化或者在有计划内业务峰值的时候,根据外部压力自动调整的软件架构。例如淘宝双11期间,业务量剧增,而且流量无法预测,服务器等资源需要根据业务自动扩展,这种情况下传统的架构就很难满足自动扩展要求。
要设计能自动扩展的应用架构,需要基础设施平台有很强的自动扩展能力,也需要软件系统分层和松散耦合。在业务峰值时期,基础实施平台能根据压力分配更多的前端、中间件服务器及其他服务器,并在不同层间实现自动的负载均衡。业务低谷的时候,释放资源,供其他用户使用。云计算就提供了这样一个高扩展性的平台,能让我们软件的架构更灵活,扩展性更强。

云计算经过多年的发展,现在已经非常成熟并推向市场。一般而言,云计算包括三种服务模式: IaaS, PaaS和SaaS。本文将主要谈论的是云计算中的IAAS。目前,包括Oracle、IBM、EMC、VMWare、Ctrix在内的一些主流厂商都在IAAS上投入巨资,个人认为未来会有越来越多的软件应用走向云端。
1从技术的角度来看云平台的特点
云计算是当下非常热的话题,对云计算也有很多的争论,评价有好有坏。为了不使本文泛、空、大,这里从技术的角度,以Amazon的AWS平台为例,对云计算进行一些分析。
2云计算的特点
初创公司和大型的企业不会为了“云”化而走向云端,云实实在在的为我们带来了很多的好处, 下面是云计算本身的特点:
A.按需服务
通过云平台,可以不用先期大量投入硬件,再花时间来维护和管理这些硬件,我们可以更专注于本身业务的开发。我们可以在云平台中精准配置所需的计算资源,我们也可以根据需要实时访问任意多的资源,而且只需按实际用量付费,如果担心峰值时容量不够可以预定资源。
B.完善的云化产品
目前市场上的云提供商都提供了很多的云产品,以AWS为例,AWS提供了非常丰富的计算资源,供我们使用,我们可以使用这些产品在云上构建和维护高可用应用,比如:
——计算类产品
1. 虚拟的服务器
EC2提供了虚拟化Window或Linux服务器。
2. 负载均衡
Elastic Load Balance提供了负载均衡,将用户的请求发给多个Web服务器或中间件服务器。
3. 自动扩展组件
Auto Scaling能根据用户设置的条件,自动增加或者减少Web或者中间件服务器的数量,根据用户的请求,弹性的修改计算容量。
——存储类产品
不同的数据可以存放在不同类型的存储上,我们可以放弃备份存储,磁带库等的使用。例如AWS提供了:
1. EBS存储
EBS类似Linux的本地文件卷或windows的本地硬盘。根据访问需求不同,EBS提供了更多的选择,用户可以使用通用性能的SSD,高性能的IOPS SSD或者磁性磁盘。
2. S3
S3类似我们使用的网盘,是具备可扩展的,高可用性的网络存储S3,通过web service接口存取文件。
3. Glacier
Glacier类似冷备份数据的磁带设备,是云中的低成本归档存储,可以将长期不用的数据备份到Glacier上。
4. CDN
将网站的静态内容发布到全球的边缘节点,加宽网站的访问速度。
——数据库产品
1. RDS服务器
提供Mysql,Oracle等关系型数据库服务,并且提供跨数据中心的高可用。
2. NOSQL数据库
提供基于key-value的,高扩展性的NOSQL数据库。
——网络类产品
VPC
提供了Virtual Private Cloud网络产品,使用VPC可以创建自己在公有云上的私有网络,并提供安全等机制。
除了这些还提供了安全的机制,完善的监控体系和其他很多产品,具体可以参考云提供商的产品。
C.超强的扩展性
能使用云平台中可动态扩展的资源,构建具有弹性的高可用系统。例如服务器及资源能横向扩展,AWS中有Auto Scaling Group能动态的监控流量和压力,当压力增大时候,动态的分配更多的服务器和资源,同时利用Elastic Load Balancer将负载均衡到新启动的资源上。云平台中,服务器等资源也可以纵向扩展,如AWS中的EC2服务器只需要保存成映像文件AMI,然后就可以启动到性能更好的服务器上,这个过程只需要几分钟。
D.高可用性
云平台的设计本身就考虑了高可用性,例如AWS中的区域由多个可用区组成,可用区分布在不同的数据中心,因此你无需担心某个机房断电、火灾、地震等影响应用的稳定性。你的服务器可以部署在不同可用区实现高可用,像RDS数据库产品可以多可用区部署,遇到灾难能够自动切换。S3文件存储服务也是高可用的。你无需到同城去租用机房保障灾难下的高可用,云平台本身帮你实现了部分的高可用性。
E.灾备能力
在互联网时代,数据就是公司最宝贵的财富,数据备份非常重要。很多公司投入大量金钱建两地三中心,同城或异地的灾备。灾备的服务器一般和生产处理能力相当,但只能闲置,对资源是极大的浪费。云计算上的应用可以利用服务器的纵向和横向的扩展能力,低成本的解决灾备的问题。用户的数据也可以备份到S3及Glacier上。
F.良好的安全性
公有云的安全是重中之重,公有云的用户和提供商都非常关注安全。目前公有云都提供了一系列安全的措施,能够保障数据的基本安全。如AWS中提供了多种安全的手段,如访问服务器需要公钥/私钥、网络访问控制ACL、服务器防火墙(Security Group)、身份管理IAM、数据加密等等。
G.无需为数据中心投入成本
使用共有云平台可以无需维护自己的数据中心,也无需购买昂贵的网络和其他设备。在开发,测试,上线等不同阶段,可以灵活在云平台上分配资源,无需预先计划购买资源,后期应用基础维护,数据备份/恢复,高可用性等维护可以交给云提供商或第三方运维厂商维护。
3走向云端的方式
企业内部的应用走向云端可以有多种不同的方式,我们可以使用公有云,私有云等。

私有云
使用云并不意味着一定要去阿里云、AWS等云平台上部署你的软件,对于有条件的企业可以使用VMWare,Ctrix,OpenStack等厂商提供的虚拟化软件,在自己的机房内搭建私有云的平台。在私有云平台上,你可以在需要的时候分配开发,测试,部署等资源,不需要的时候释放资源,也可以使用私有云平台部署你的软件。
公有云
目前有很多公有云的提供商,包括Amazon AWS、IBM、微软、Oracle、VMWare等都提供了公有云服务,你可以将应用部署到具有高可用特性,可扩展性的云平台上,使你应用的架构更容易扩展。
混合云
对于公司内部已经有机房、服务器、存储、路由器等设备的公司来说,全部走向公有云意味着很多投资浪费了?别急,云厂商还提供了混合云的方案,如AWS有AWS Direct Connect可以将公司内部网络和公有云上的网络使用专线连接起来,形成一个大的混合云网络。像数据库等重要的私密的数据,可以放在公司内部网络中,前端服务器可以放到公有云上。
云存储
如果你不想使用服务器等产品,还可以只使用云存储。如在AWS中,你可以选择使用类似AWS Storage Gateway这样的产品,可以方便的将数据备份到S3,Glacier上,同时本地还可以保留缓存,从而使本地的访问更快捷。
4限制应用走向云端的因素
目前的云上的应用没有我们想象的那么多,很多中小应用都还是从数据中心提供商租用服务器或虚拟服务器来支撑业务。个人觉得,以下的原因限制了应用走向云端:
技术
目前IT从业人员对于云及云上的产品使用的比较少,技术上存在不足。
价格
很多用户对于云计算是不是真的能节省开支抱有疑问,毕竟当流量、计算量上来的时候,可能会付费很多。不过好消息是等用户量上来的时候,你的业务可能已经赚了很多钱了。
数据安全
担心数据的安全无法保障,如数据库内的数据及网络的安全等。
稳定性
担心云基础设施的稳定性,也有一些云平台发生安全事故,导致云上的所有服务都宕机,这会大大的影响客户走向云的信心。
5未来的发展趋势
行业厂商都在投资IAAS及PAAS,因为他们已经看到了未来云的发展趋势。随着云计算的发展,未来软件厂商可能很难靠卖软件的License生存,未来产品都会在云端发布,像我们手机下载应用一样,直接在云端下载安装,给云厂商付费。代码在云端开发,测试和部署都在云端做,并且在云端发布,发布后就是AMI,也就是映像文件,客户直接在自己的环境启动映像文件就可以了。未来的硬件厂商直接卖硬件给客户的份额也会越来越少,因为客户需要的是更高层次的软件服务,而不是一个机器或设备。
6结论
目前云平台是有不足,有些云平台的稳定性和安全性也存在问题,但个人认为他带给我们的好处多过坏处。目前越来越多的应用迁移到云端,事实也证明了云服务的实用性。对于互联网+下的公司,现在应该要有计划的进行转变,有计划的将应用一步步的迁移到云端,而不是等到为时已晚再开始行动。

本文作者:蓝勇(点融黑帮),点融网Principal SDE,曾在Oracle任职。关注数据库、数据安全、大数据、机器学习与软件架构等。
随着点融网新一轮融资,点融网即将开始大规模的扩张,需要各种优秀人才的加入,如果你觉得自己够优秀,欢迎加入我们!获取更多职位信息,请关注点融黑帮。


