新年伊始,在总结过去一年 IT 行业变化和发展的同时,不少企业更关注未来一年甚至几年的行业趋势。Gartner 于 2014 年发表了文章 Gartner Says By 2017 Web-Scale IT Will Be an Architectural Approach Found Operating in 50 Percent of Global Enterprises 表示:
截止至 2017 年,全球 50% 的企业将使用 Web Scale IT 架构。
在 2016 年年初,我们回顾 Gartner 对 2015 年所做的预测,来说说 Web Scale 在中国 IT 界的发展与变化。
图为 Gartner 对 2015 年 10 大 IT 趋势的预测,其中就包括了:Web Scale IT。这个词条被用来描述未来将有更多的企业以亚马逊、谷歌、Facebook 等互联网科技巨头的方式去思考、行动和打造应用程序和基础设施。
作为有效的 Web Scale IT 方法的关键组成部分,普遍被接受的要素包括开放硬件方法、新型软件体系架构、敏捷过程、从 DevOps 入手的协同一致的公司、以及风险包容文化。
什么是 Web Scale IT?
那究竟什么是 Web Scale IT 呢?是又一次的 DevOps 文化运动?还是存在切实可行的工具和方法?
其实, Web Scale IT 是一种趋势,一种解决方案,也是一个机会。
我们可以通过 Web Scale IT 的 5 个特性来更为清楚地认识 Web Scale IT。
以下信息摘自:关于 Web Scale IT 的一些观点,阮志敏。
- 拥有成千上万台机器的计算能力
- 只需少数工程师就可以运维大量机器
- 应用可以承载非常高的用户访问量
- 即使有些机器出现故障,应用仍然工作正常
- 应用每天可以升级部署应用好几次
传统企业渴望拥有和互联网公司一样的 IT 能力去进行业务创新,同时提高 IT 运营效率、降低费用。此概念可让他们减少 IT 服务的营销时间,降低基础架构成本,同时提高灵活度,增强他们促进 IT 文化变革的能力,并能提高服务质量。Web-Scale IT 和国内的"去IOE"运动有着相同的逻辑,都是互联网企业影响、颠覆传统IT解决方案的一种趋势。
云计算是 Web Scale IT 的基础
Web Scale IT 希望企业拥有拥有很强的计算能力,降低基础架构成本。而从没有互联网到有互联网,再到云计算,事实上是一个解放劳动力的过程。可以这么理解,云计算的出现和发展是 Web Scale IT 的基础。
如果假想成盖房子,传统 IT 相当于在拥有的土地上根据流程自行设计、施工,再找人装修和维修。有很多现有的经验,成熟的方案可以参考。而云计算一出来,就相当于直接买到了毛坯房,只需要装修就好了,还附带物业管理。这是一个分工更加细化的时代,Laas 让 IT 能力变成廉价可靠的资源,只要按需选择、付费即可。而在这个基础上,Web Scale IT 就变的可能,中小型创业公司也可以将精力更多的投入到创新和运营上去。
目前很多 IT 公司都在做云,BAT、IBM,包括 HP 和 Dell 也都要开始做云,还有以 UCloud 为代表的第三方专注、中立的云公司,在云计算领域可谓风头正盛。阿里云从 2012 年初开始大规模推广和密集的运营活动,目前从市场份额上讲,是当仁不让的国内一哥。从去年 4 月到 5 月仅一个月的时间,从阿里云直接连接到国际互联网的 Web 服务器数量就增长了 8 千多台。
而腾讯云凭借自身强大的游戏运营能力,凭借渠道的力量,在游戏行业、 O2O 领域及一些正在向互联网转型的传统行业中建立了良好的知名度。UCloud 近期获得国内 Laas 领域最大投资千万美元,在手游领域混的风生水起。
在各个领域,都有越来越多的互联网企业和向互联网转型的传统行业开始使用云服务,包括游戏、在线商务、在线教育、在线医疗、大数据分析、互联网金融,甚至传统的化工、生物行业等等。
DevOps 产品催化 Web Scale IT
Web Scale IT 要求降低基础架构成本,越来越多的 DevOps 工具应运而生。有许多工具用于基础设施自动化,使用哪个工具决定于体系结构和基础设施的需求。下面我们列出了一些优秀的 DevOps 产品,包括容器平台、配置管理工具、服务平台、监控工具等。
1.容器平台 Docker
Docker 是一个自动化工具之上的 Linux容器,容器已经成为 DevOps 中的新热点技术。特别是 Docker 公司,已经成为了提供容器技术服务的领头公司。使用 Docker 平台,应用程序及其依赖可以被打包进一个单元,也就是所谓的镜像。随后,可以运行这个镜像的实例,实现快速的测试、部署。Docker 的兴起和普及是因为它能提供一种一致性机制来构建、部署和扩展应用组件并隔离系统资源。有了Docker,开发者们就可以从同一个主机运行多个开发环境(每个开发环境有独特的软件、操作系统和配置),在新的或不同的服务器上测试项目,以及让任何人都可以在设置一模一样的情况下处理同一项目,无论本地主机环境怎样。
有人说虚拟机也能实现多种环境,但不得不说,和传统虚拟机相比,Docker 具有启动速度快,资源利用率高,性能开销小的优势。虚拟机的 Guest OS 和 Hypervisor 层在 Docker 中被 Docker Engine 层所替代,Docker 有着比虚拟机更少的抽象层。由于 Docker 不需要通过 Hypervisor 层实现硬件资源虚拟化,运行在 Docker 容器上的程序直接使用实际物理机的硬件资源。因此在 CPU、内存利用率上 Docker 略胜一筹。Docker 利用的是宿主机的内核,而不需要 Guest OS,因此,当新建一个容器时,Docker 不需要和虚拟机一样重新加载一个操作系统内核,因此新建一个 Docker 容器只需要几秒钟。
“生产环境上就出问题,明明本地运行的很好!” 这是一句听过很多遍的话。容器使应用程序的跨平台可移植性比以往任何时候都更高,它解决了开发环境与生产环境差异的老问题。也许相对于灵活的部署,迭代和引用这些优点来说,Docker 相对复杂的网络配置,container 之间的通信,仍是需要攻破的难题,但随着容器技术的快速发展,对于开发和运维人员来说,体现着「化繁为简,All in One」理念的 Docker 出现绝对是一件好事。
2.配置管理工具 Chef & Puppet
注重用户体验和工作效率的开发和运营团队都有着这样的目标吧?编写简洁的、可维护的和高性能的代码,尽可能在不宕机的情况下部署代码。在 Docker 这样的容器出现之前,理论上最好的方法是使用配置管理工具来自动化服务器基础设施以及部署工作流,这就要提到 Chef、Puppet、Salt 等等。本文先简单介绍一下同样基于 Ruby 开发的配置管理工具 Chef 和 Puppet。
使用配置管理工具,需要编写代码来描述希望如何安装和配置系统的一些组件。在服务器上执行代码的时候,它应该在理想状态下结束运行。使用这种工具的好处是对要配置的对象提供了跨平台的抽象,比如抽象掉一些各种不同的操作系统在处理类似包管理这样的功能时所带来的不同,让用户大部分时间只需跟这些抽象的资源打交道,而不用关心具体实现。
举个例子,如果你想安装 libxml2,可以用 Chef 写一个代码块,抽象掉不同的发行版之间的差异。从而在 libxml2 包存在的任何地方执行这个相同的 Chef 代码时,它都会正常运行,不论是 Ubuntu、CentOS 或者 Fedora。
package “libxml2” do
action :install
done
但也有一些开发者认为跟使用容器比起来,使用配置管理工具复杂且容易出错。Chef 有一种集成方案,允许使用 Chef cookbook 和 recipe 构建 Docker 镜像以及管理如何把容器部署到服务器上。在遇到不能很好地与容器兼容的较为古老的软件时,管理和自动安装它们的唯一方法是使用配置管理。
3.服务平台 Stackshare
StackShare 开发者服务平台是一个致力于开发人员所使用的开发工具和开发服务,发现和分享优质资源的网站,帮助开发者使用最方便的开发工具和最便捷的服务。该网站成立于2013年,之前只是作为一个辅助项目,后来随着开发者和工程师们的不断分享,汇集了大量的优质工具。
Stackshare 对 Devops 有自己的看法,认为 DevOps 主要分两块:一块是监控,通过监控方案快速发现问题,明确到底是 Dev 的责任,还是 Ops 的责任,并且迅速做出反应;另一块是 Build Test Deploy,就是快速的测试、部署等等。
工欲善其事,必先利其器。使用优秀的开发工具和服务,能极大地帮助团队提高效率,尤其是资源和资金也许并不那么充足的中小型创业公司。
4.监控产品 Cloud Insight
Web Scale 要求企业拥有成千上万台机器的计算能力,这就需要保证机器数量和复杂度,不然难以满足现在的需求。在机器数量增多,复杂度变高的情况下,需要少数工程师来运维大量机器,能够对大规模集群和云平台进行监控产品应运而生。而国内大多数现有的监控产品无法批量安装探针,不能对数据进行聚合,Cloud Insight 却能够做到这一点。
这是 Cloud Insight 对平台监控的拓扑图,从图中可以看到哪部分服务器负载过重,也可以锁定实时性能不佳的服务器,进行重点关注,查看详细性能。
Cloud Insight 采用 StatsD 的采集技术,对接 MySQL、Redis、MongoDB,以及 CentOS、RedHat 操作系统,利用 Hbase 存储和 OpenTSDB 的数据聚合、切片等功能,使数据最终流向 Cloud Insight 进行展现,来监控日益复杂的基础设施架构。
5.版本工具 GitLab
Gitlab 是一个利用 RoR 开发的开源代码托管平台,可以通过 Web 界面访问公开或私人项目,能使人们能进行及时的代码协作,并且其代码日志是在本地的,可以随时查看。因为对高可用性的重视,GitLab 提供了一个稳定的设置,即使在一个没有特别措施的服务器上也能应用。而由于分布式的天然特性,即使 GitLab 不能使用,Git 使用者也仍然能够提交代码。常用的源码的版本工具还有 SVN。
拥有界面友好,对工程权限管理方便,有 issues 功能并支持 wiki 等优点的 GitLab,除了显著地 social 元素,该有的 CI 整合和 REST API 一个也不缺。也可由 merge request 模式来达到 code review。功能较为全面,而且各个平台都有对应的支持,很多团队已经逐渐由 SVN 移到 GitLab 上来。
6.测试工具 JMeter
Apache JMeter 是 Apache 组织开发的基于 Java 的压力测试工具。相比其他 HTTP 测试工具, JMeter 最主要的特点在于扩展性强。JMeter 是免费的,开放源码软件,拥有简单直观的图形用户界面,独立于平台,也可用于执行应用程序自动化测试和功能测试。
项目上线之后可能会面对巨大的吞吐量,在这样的环境下可能出现各种各样的性能问题,而这都是低吞吐量时无法发现的。因此,在上线之前做好压力测试是一件十分必要的事。
JMeter 在性能测试工具中较为流行,同类产品有 LoadRunner, 部分开发者认为 JMeter 的结果分析没有 LoadRunner 详细,但它的优点也有很多:
- 开源。
- 小巧,不需要安装,但需要 JDK 环境,因为它是使用 java 开发的工具。
- 功能全面,JMeter 设计之初只是一个简单的 web 性能测试工具,但经过不段的更新扩展,现在可以完成数据库、FTP、LDAP、WebService 等方面的测试。
总结
向 Web-scale IT 的转移意味着与 IT 界传统方式的完全背离,这将是一个巨大的转变。Web-scale IT 要求 IT 专业人员用比以前更快的速度部署并有效管理大型基础架构。随着商用硬件、开源软件、本土化供应和管理软件的发展,规模化管理基础架构变得越发困难,基础架构亦变得越发复杂。如何才能够在 Web Scale IT 大潮中分一杯羹?
目前技术的资源都在类似 Facebook、Google 这样的大型互联网公司,相对来说传统企业,是比较落后的。但好在,越来越多的开源技术和产品在试图帮助大家解决这些问题。根据体系结构和基础设施的需求,借力于云平台和其他 DevOps 工具,将帮助企业紧跟变革的步伐,取得更快的发展。
Cloud Insight 集监控、管理、计算、协作、可视化于一身,帮助所有 IT 公司,减少在系统监控上的人力和时间成本投入,让运维工作更加高效、简单。本文出自 OneAPM 工程师,想阅读更多技术文章,请访问 OneAPM 官方技术博客。
本文转自 OneAPM 官方博客