Web Scale IT 与 6 种 DevOps 工具
新年伊始,在总结过去一年 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 官方博客
Web Scale IT 与 6 种 DevOps 工具的更多相关文章
- Fbric、Ansible、Docker、Chaos Monkey:DevOps工具的年中回顾
Fbric.Ansible.Docker.Chaos Monkey:DevOps工具的年中回顾 [编者按]近日,Cyber Engineering Solutions Group 技术经理 Hasan ...
- 从大厂DevOps工具链部署,看现代产品的生命周期管理
目录 1. 认识DevOps 1.1. DevOps工具链 1.2. CI 持续集成(Continuous Integration) 1.3. CD(持续交付 & 持续部署) 1.4. Agi ...
- [备忘] DevOps 工具上的准备清单(不断补充中……)
目录 概念 发展历程 工具清单 规划 概念 从字面上来看,"DevOps"一词是由英文 Development(开发)和 Operations (运维)组合而成,但它所代表的理念和 ...
- 介绍编译的less的两种IDE工具
介绍编译的less的两种IDE工具 现在css预编译越来越普及了,著名的有less.sass.stylus等等等等.功能上基本上都是大同小异.这些个玩意儿主要表达的意思就是:"像编程一样的编 ...
- 如何选择正确的DevOps工具
坦白的讲:世界上没有哪种工具能够像DevOps这么神奇(或敏捷,或精益).DevOps在开发和运营团队之间建立了完美的合作与沟通,因此与其说这是一种神奇的工具,不如说是一种文化的转变. 然而,团队之间 ...
- 实现web数据同步的四种方式
http://www.admin10000.com/document/6067.html 实现web数据同步的四种方式 1.nfs实现web数据共享 2.rsync +inotify实现web数据同步 ...
- 最受Web前端开发者欢迎的五大开发工具
工其事,必利于器.好的开发工具毋容置疑会帮助Web前端开发者事半功倍,51CTO在上期主办的技术沙龙<大型网站PHP开发之道> 对现场的百余位Web开发者做了问卷调查,后经51CTO调研小 ...
- Java 开发者不容错过的 12 种高效工具
Java 开发者常常都会想办法如何更快地编写 Java 代码,让编程变得更加轻松.目前,市面上涌现出越来越多的高效编程工具.所以,以下总结了一系列工具列表,其中包含了大多数开发人员已经使用.正在使用或 ...
- 性能调优之提高 ASP.NET Web 应用性能的 24 种方法和技巧
性能调优之提高 ASP.NET Web 应用性能的 24 种方法和技巧 poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对 ...
随机推荐
- SQLServer怎样导入excel
--从Excel文件里,导入数据到SQL数据库中,非常easy,直接用以下的语句: /*======================================================== ...
- careercup-栈与队列 3.1
3.1 描述如何只用一个数组来实现三个栈. 解答 我们可以很容易地用一个数组来实现一个栈,压栈就往数组里插入值,栈顶指针加1: 出栈就直接将栈顶指针减1:取栈顶值就把栈顶指针指向的单元的值返回: 判断 ...
- 【转】cocos2d-x游戏开发(八)各类构造器
欢迎转载:http://blog.csdn.net/fylz1125/article/details/8521997 这篇写cocos2d-x的构造器. cocos2d-x引入自动释放机制后,创建的对 ...
- HDU2054JAVA
(包括2016级新生)除了校赛,还有什么途径可以申请加入ACM校队? A == B ? Time Limit: 1000/1000 MS (Java/Others) Memory Limit: ...
- NDK开发之Application.mk文件详解
做过NDK开发的同学应该都知道有个Application.mk文件,这是android NDK构建系统使用的一个可选构建文件.它的目的是描述应用程序需要哪些模块,也定义了所有模块的一些通用变量.主要有 ...
- Silverlight OOB 程序自动更新
Silverlight OOB 程序 提供了非常方便的自动更新功能! 要让 Silverlight OOB 安装到客户端电脑后实现自动更新,必须实现以下两个条件: 一.为 程序的 xap 文件进行签 ...
- php 5.3起弃用session_register
最近下了dedecms V5.7时,在登陆后台时,用户名和密码也没错,就是跳转不走,进不了后台管理页面,追踪了好久才发现根目录/include/userlogin.class.php中289行左右的位 ...
- springmvc获得项目根目录(绝对路径)
原文:http://www.bubuko.com/infodetail-790547.html 在项目中有时候我们需要记录日志或者上传图片,需要知道项目的具体路径,如果项目中使用了spring,那么获 ...
- php程序员的开始
最近又懒惰了,博客没有更新,学习一直在停止,反思自己最近在学习什么了,但是脑子里面空白的一片,让我冒汗了.程序是一个不断的积累,最近在学习的路上,发现自己懂的越来越少,人就有点急躁了,什么都想学,导致 ...
- 前后端分离--构建前端Mock Server--windows部署rap
mock:模拟的,虚假的 mock server:模拟服务,模拟请求,模拟虚假数据 为了前后端更好的分工,接口文档是必须的,前后端都根据接口文档写代码,然后对接接口就行了. 但是,后端跟不上前端节奏, ...