首页 > 代码库 > Web Scale IT 与 6 种 DevOps 工具

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 的一些观点。阮志敏。

  • 拥有成千上万台机器的计算能力
  • 仅仅需少数project师就能够运维大量机器
  • 应用能够承载非常高的用户訪问量
  • 即使有些机器出现问题,应用仍然工作正常
  • 应用每天能够升级部署应用好几次

传统企业渴望拥有和互联网公司一样的 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 server数量就增长了 8 千多台。

而腾讯云凭借自身强大的游戏运营能力,凭借渠道的力量,在游戏行业、 O2O 领域及一些正在向互联网转型的传统行业中建立了良好的知名度。

UCloud 最近获得国内 Laas 领域最大投资千万美元。在手游领域混的风生水起。

在各个领域,都有越来越多的互联网企业和向互联网转型的传统行业開始使用云服务,包含游戏、在线商务、在线教育、在线医疗、大数据分析、互联网金融。甚至传统的化工、生物行业等等。

DevOps 产品催化 Web Scale IT

Web Scale IT 要求减少基础架构成本,越来越多的 DevOps 工具应运而生。有很多工具用于基础设施自己主动化,使用哪个工具决定于体系结构和基础设施的需求。

以下我们列出了一些优秀的 DevOps 产品。包含容器平台、配置管理工具、服务平台、监控工具等。

1.容器平台 Docker

技术分享

Docker 是一个自己主动化工具之上的 Linux容器,容器已经成为 DevOps 中的新热点技术。特别是 Docker 公司,已经成为了提供容器技术服务的领头公司。使用 Docker 平台。应用程序及其依赖能够被打包进一个单元,也就是所谓的镜像。随后,能够执行这个镜像的实例,实现高速的測试、部署。

Docker 的兴起和普及是由于它能提供一种一致性机制来构建、部署和扩展应用组件并隔离系统资源。有了Docker。开发人员们就能够从同一个主机执行多个开发环境(每一个开发环境有独特的软件、操作系统和配置)。在新的或不同的server上測试项目,以及让不论什么人都能够在设置一模一样的情况下处理同一项目,不管本地主机环境怎样。

有人说虚拟机也能实现多种环境。但不得不说。和传统虚拟机相比,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 这种容器出现之前,理论上最好的方法是使用配置管理工具来自己主动化server基础设施以及部署工作流。这就要提到 Chef、Puppet、Salt 等等。本文先简介一下同样基于 Ruby 开发的配置管理工具 Chef 和 Puppet。

使用配置管理工具,须要编写代码来描写叙述希望怎样安装和配置系统的一些组件。

在server上执行代码的时候。它应该在理想状态下结束执行。使用这种工具的长处是对要配置的对象提供了跨平台的抽象,比方抽象掉一些各种不同的操作系统在处理相似包管理这种功能时所带来的不同。让用户大部分时间仅仅需跟这些抽象的资源打交道,而不用关心具体实现。

举个样例,假设你想安装 libxml2,能够用 Chef 写一个代码块。抽象掉不同的发行版之间的差异。从而在 libxml2 包存在的不论什么地方执行这个同样的 Chef 代码时,它都会正常执行,不论是 Ubuntu、CentOS 或者 Fedora。

package “libxml2” do
action :install
done

但也有一些开发人员觉得跟使用容器比起来,使用配置管理工具复杂且easy出错。Chef 有一种集成方案,同意使用 Chef cookbook 和 recipe 构建 Docker 镜像以及管理怎样把容器部署到server上。

在遇到不能非常好地与容器兼容的较为古老的软件时,管理和自己主动安装它们的唯一方法是使用配置管理。

3.服务平台 Stackshare

StackShare 开发人员服务平台是一个致力于开发人员所使用的开发工具和开发服务,发现和分享优质资源的站点,帮助开发人员使用最方便的开发工具和最便捷的服务。

该站点成立于2013年,之前仅仅是作为一个辅助项目。后来随着开发人员和project师们的不断分享。汇集了大量的优质工具。

技术分享

Stackshare 对 Devops 有自己的看法,觉得 DevOps 主要分两块:一块是监控。通过监控方案高速发现问题。明白究竟是 Dev 的责任。还是 Ops 的责任,而且迅速做出反应;还有一块是 Build Test Deploy,就是高速的測试、部署等等。

工欲善其事,必先利其器。使用优秀的开发工具和服务。能极大地帮助团队提高效率,尤其是资源和资金或许并不那么充足的中小型创业公司。

4.监控产品 Cloud Insight

Web Scale 要求企业拥有成千上万台机器的计算能力,这就须要保证机器数量和复杂度,不然难以满足如今的需求。在机器数量增多,复杂度变高的情况下,须要少数project师来运维大量机器,能够对大规模集群和云平台进行监控产品应运而生。

而国内大多数现有的监控产品无法批量安装探针,不能对数据进行聚合。Cloud Insight 却能够做到这一点。

技术分享

这是 Cloud Insight 对平台监控的拓扑图,从图中能够看到哪部分server负载过重,也能够锁定实时性能不佳的server。进行重点关注,查看具体性能。

Cloud Insight 採用 StatsD 的採集技术,对接 MySQL、Redis、MongoDB。以及 CentOS、RedHat 操作系统,利用 Hbase 存储和 OpenTSDB 的数据聚合、切片等功能,使数据终于流向 Cloud Insight 进行展现。来监控日益复杂的基础设施架构。

5.版本号工具 GitLab

Gitlab 是一个利用 RoR 开发的开源代码托管平台,能够通过 Web 界面訪问公开或私人项目,能使人们能进行及时的代码协作,而且其代码日志是在本地的,能够随时查看。

由于对高可用性的重视,GitLab 提供了一个稳定的设置,即使在一个没有特别措施的server上也能应用。而由于分布式的天然特性。即使 GitLab 不能使用。Git 使用者也仍然能够提交代码。经常使用的源代码的版本号工具还有 SVN。

技术分享

拥有界面友好,对project权限管理方便。有 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 公司,减少在系统监控上的人力和时间成本投入,让运维工作更加高效、简单。本文出自

utm_source=Community&utm_medium=Article&utm_term=Web%20Scale%20IT%20%E4%B8%8E%206%20%E7%A7%8D%20DevOps%20%E5%B7%A5%E5%85%B7&utm_campaign=CiArti&from=jscwurqe">OneAPM project师,想阅读很多其它技术文章,请訪问 OneAPM 官方技术博客。
本文转自 OneAPM 官方博客

<script type="text/javascript"> $(function () { $(‘pre.prettyprint code‘).each(function () { var lines = $(this).text().split(‘\n‘).length; var $numbering = $(‘
    ‘).addClass(‘pre-numbering‘).hide(); $(this).addClass(‘has-numbering‘).parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($(‘
  • ‘).text(i)); }; $numbering.fadeIn(1700); }); }); </script>

Web Scale IT 与 6 种 DevOps 工具