关于 Web-Scale IT 的一些观点

  • 阮志敏

2014 年 10 月 12 日

话题:SOAAWS云计算DevOps架构

FIT2CLOUD联合创始人阮志敏近日通过邮件向 InfoQ 中文站分享了他对 Web-Scale IT 的一些观点,当中列举了 Web-Scale IT 的典型特征,并对企业实现 Web-Scale IT 提供了一些建议。以下是邮件内容:


Gartner 近日发布了2015 年十大 IT 趋势预测,其中包括 Web-Scale IT。Gartner 指出:未来将有更多的企业以亚马逊、谷歌、Facebook 等互联网科技巨头的方式去思考、行动和打造应用程序和基础设施。传统企业渴望拥有和互联网公司一样的 IT 能力去进行业务创新,同时提高 IT 运营效率、降低费用。Web-Scale IT 和国内的"去 IOE"运动有着相同的逻辑,都是互联网企业影响、颠覆传统 IT 解决方案的一种趋势。

Web-Scale IT 和传统 IT 不仅在技术上有差异,而且在文化上也有差异,所以企业也并不是要完全从传统 IT 转向 Web-Scale IT。比如,一些交易型应用 /System of Record 应用仍然离不开传统 IT,传统 IT 有其存在的价值和理由。但是,企业应该开始用 Web-Scale IT 的方式去构建一些新型的社交化、移动化、面向外部用户的应用。企业应该怎么做才能实现 Web-Scale IT 呢?

我认为 Web-Scale IT 有 5 个典型特征:

  1. 拥有成千上万台机器的计算能力
  2. 只需少数工程师就可以运维大量机器
  3. 应用可以承载非常高的用户访问量
  4. 即使有些机器出现故障,应用仍然工作正常
  5. 应用每天可以升级部署应用好几次

1、拥有成千上万台机器的计算能力

这里的机器是指商品化服务器 (Commodity)。企业可以通过两种路径实现这个目标,一是采用公有云,二是自建方式 / 私有云。目前我们观察到的情况是,国内对 IT 需求稍大一些的企业,都倾向于通过采用自建方式。而在国外,采用公有云的比例会高一些,比如像 Netflix 等,在 AWS 上面的虚机数量超出 1 万台,仍不自建数据中心 / 私有云。随着国内公有云服务的完善、API 的开放、费用的进一步下调,更多的企业应该会优先考虑采用公有云。

很多企业实施"Go to Cloud"战略的第一步就是构建自己的私有云服务,而不是采用公有云,这种策略值得商榷:对企业而言,基于云的可编程特性,学习在云中开发、部署和运营大规模、分布式的云应用是更重要的,而不是将全部精力放在构建私有云基础设施上。一种更好的做法是,比如,企业可以先使用青云公有云,如果业务取得成功、使用的规模越来越大,可以考虑基于青云构建自己的私有云并托管给青云来运维。

2、只需少数工程师就可以运维大量机器

如果用户采用公有云,那么这个问题就转变成:如何高效管理成千上万台虚机?这包括:

  1. 如何快速启动部署一个应用所需要的一序列资源
  2. 如何给这些虚机做配置
  3. 如何一键给这些虚机打 patch
  4. 如何对这些虚机进行统一监控和告警
  5. 如何进行安全和费用统一管理

实现这些的核心是要充分利用云的 API 来实现自动化管理,用户可以采用云服务商提供的工具 (比如 Cloudformation、 OpsWorks),也可以采用第三方管理工具 (比如 Rightscale), 也可以自己基于云服务 API 构建自己的管理部署工具 (比如 Netflix)。

若用户采用私有云,用户可以自己运维也可以采用托管方式。如果是自己运维,则不仅需要对整个私有云解决方案非常熟悉,而且需要投入相当的开发和运维人力,同时伴随着很大的风险。而想减少运维人员,托管、外包方式应该是更好的选择。

3、应用可以承载非常高的用户访问量

Web-Scale IT 通过以下两个方面来实现这个特点:

  1. Web architecture/SOA 服务架构, 把整个系统分为松耦合的组件,尽量实现无状态,使得组件可以水平扩展。
  2. 充分利用云来动态、快速地创建资源 (scale-out),根据各层次的监控数据来实现自动伸缩。

传统 IT 则是更多地通过 Scale-up 方式来进行扩容,和 Web-Scale IT 相比在架构方面也有些差异,比如,采用 session 复制方式也多于基于 Redis/Memcached 的集中式 session 方案。

在云环境下,云服务商除了提供计算、网络和存储资源外,还提供负载均衡服务、缓存服务、RDS 服务等很多上层服务。云服务商负责这些服务的创建并提供自动化运维方案以实现确保安全性、可用性和扩展性。企业也可以通过 API 动态管理这些服务。从这个角度看,在云中开发、运维应用和传统方式有很多不同,企业需要进行相应的转变。

4、即使有些机器出现故障,应用仍然工作正常

传统 IT 可以通过 Infra 层面的冗余来保证系统的高可用性,而 Web-Scale IT 是构建在商品化硬件上,其冗余度比较低。Web-Scale IT 在 Infra 层次的 SLA 是无法保证的,这就需要用户 Design for Failure。这不仅仅需要在 Infra 层次部署架构方面做相应的设计,如把应用部署在两个可用区、使用负载均衡服务等,在应用本身的逻辑架构、中间件、数据库存储层等方面做针对性的设计,同时在应用本身的管理上也需要有相应的设计,如数据的备份、恢复、动态地更改 DNS、更改负载均衡的后端配置等。

5、应用每天可以升级部署应用好几次

传统 IT 对变更有着严格的控制和要求,开发和运维团队有着明确的分工和责任,应用要实现每天十几次的变更是不太可能的。

Web-Scale IT 能够实现持续部署和交付,不单是靠自动化工具,更重要的是依靠流程、组织、文化上面的变革。很多时候,思维方式、文化方面的改变比技术上更重要。因此 Gartner 说,开发与运营之间的高效协作配合 (DevOps) 是实现 Web-Scale IT 的第一步。

小结

从上述分析可以看出,要向 Web-Scale IT 转变,企业需要实现在 Infra、平台和管理部署工具、应用架构,流程、组织和文化等各个层面的改变。云计算的进一步普及会加速企业在 Infra 层面的转变,而另一方面,随着各个行业云标杆用户的出现,会示范和引导更多企业去实现其他层面转变。

作者简介

阮志敏是 AWS 认证解决方案架构师 (专业级别),FIT2CLOUD联合创始人,长期关注于如何使用云服务进行业务创新。FIT2CLOUD是一个云管理及 DevOps 协作平台,旨在帮助开发人员、运维人员实现应用全生命周期的自动化管理,提升云使用成熟度。


你对于 Web-Scale IT 有什么观点?欢迎分享!InfoQ 中文站投稿信箱:editors@cn.infoq.com

SOAAWS云计算DevOps架构