首页 > 范文大全 > 正文

Thoughtworks技术雷达(二)

开篇:润墨网以专业的文秘视角,为您筛选了一篇Thoughtworks技术雷达(二)范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

在本期文章中,技术雷达将对当前业内最热门的开发工具进行详细的分析和介绍,包括XML、Rake、Hadoop等等。

编者按:

在IT产业的发展过程中,技术始终起着至关重要的作用。因此,无论是IT厂商、服务商或是用户的IT管理者,对于技术都十分的关注。他们想第一时间了解,各类IT技术的发展现状和趋势,想清晰地知道有哪些最新的技术可以被企业采用。但IT技术的更新和变化速度之快,使得这些需求很难得到满足。

为此,我们与thoughtworks 公司合作,推出了技术雷达这一栏目,通过图解的方式,将各种最新技术进行分类,并加以分析,来帮助读者了解目前能够影响市场的新兴技术和趋势。

ThoughtWorks技术战略委员会由ThoughtWorks内部的资深技术专家组成,他们经常聚在一起讨论全球技术战略和对行业有巨大影响的技术趋势。技术雷达总结了这些讨论的结果,将所有项目分为技术、工具、语言和平台几大类。另外,ThoughtWorks通过将每一个项目放入采用、试用、评估、保留四类环中,来做相应的推荐。评估阶段:值得探索的技术,以了解其对公司的影响。风险可控的项目中试用。

工具:

在各种项目中,我们使用过多种语言与构件工具,其中一个经常被我们使用的就是Rake。Rake 是一种优雅、简单和强大的构建语言,它作为内部DSL并基于Ruby实现。Ruby可以运行于多种虚拟机平台,这意味着Rake也同样可以,并为用户留下了利用更多特定语言工具实现特定任务的空间。无论你使用哪种平台,你都很难找到像Rake这样的优雅与灵活性的结合体,所以我们推荐尝试 Rake for Java and .Net 项目。

以XML为基础的构件工具,例如Ant和Maven,由于太多令人生厌的尖括号和粗糙的插件框架而逐渐失宠。虽然尖括号问题可以通过自动生成来解决,但当项目变得越来越复杂的时候,粗糙的插件框架却严重地限制了构建工具的能力。我们已经逐渐感觉到插件框架其实是一种不合理的抽象层次,更推荐使用以语言为基础的工具,例如 Gradle 和 Rake,因为它们从长远来看抽象更加合理而且也更加灵活。

在Java和Ruby混搭的应用开发中,对包的格式和依赖管理的方式将截然不同。通过提供与Ivy兼容的将RubyGems和JAR打包,并且使用Ivy来解决Gem依赖,GemJars将合并和简化Java和Ruby混搭系统的构建工作。

在企业数据中心中,以前由云服务提供商所设定的准则也在发生着变化。在云环境中,很多系统将会自动扩容以提供额外的可用性或应对访问量的增长。对于寻求 IaaS 和 PaaS 解决方案的企业来讲,管理日益增长的集群环境,使用不可变更服务器(或者称为“凤凰服务器”)是一个不错的选择。与此相对应的是,配置可更改的雪片服务器增加了运营团队的负担并且鼓励了一种“在我的机器上可以啊?!”的工作心态。利用例如 Chef 或 Puppet 工具可以通过脚本快速构建服务器或虚拟机,从而大大减轻了管理服务器集群的复杂度。配合应对系统异常的软件共同使用将大大增加系统的扩展性和稳定性。

我们一直以来都认为 Javascript 是一流的计算机语言,并且它努力跟随着它所在领域的测试工具的发展。优秀的成果之一就是基于浏览器的测试框架 Jasmine。Jasmine 搭配 Node.js 使用是构建强壮的客户或服务器端的 JavaScript 应用的最佳选择。

当构建分布式应用来应对网络扩展或大数据需求的时候,配置合适的监测工具将是一件不可舍弃的工作。Zipkin 可以采集不同服务组建的数据,并可通过类似于 firebug 的显示方式显示经由不同服务组建的具体访问信息。原始数据可保存在 Hadoop 中用于进一步的数据挖掘。

Zucchini 是提供给 iOS 应用的 Cucumber 风格的BDD测试框架。它使用 CoffeeScript 进行特征定义,并且我们非常高兴的是它可以在运行中保存快照信息。iOS 本地应用是Apple移动平台成功的基石。在 JetBrains 将其在其它平台上的IDE的优势注入并了 AppCode 以后,开发 iOS 和 OS X 应用已经变得越来越方便和高效。

Hadoop 继续作为开发分布式系统的主流框架。尽管使用 Java 开发 Hadoop 应用并不困难,但设计高效的 MapReduce 的数据处理通道确实需要相当的项目开发经验。Apache Pig 通过提供高层语言 Pig Latin 和语言运行环境,简化了 Hadoop 的开发。Pig Latin 是过程式语言,提供类似于 SQL 的方式与大型数据集进行交互。底层运行平台将 Pig Latin 编译成为运行在集群上的一系列优化后的 MapReduce 程序。Pig Latin 可以基于不同语言,例如 Ruby,JavaScript,Python 和 Java 通过用户自定义函数的方式进行扩充。

有很多实用性测试工具非常适合我们的游击战方式。视线跟踪一直以来是设计迷人的用户界面的有效工具,然而与之相关的软件和硬件设备都非常昂贵并需要专业公司的指导。Crazy Egg 是廉价的软件解决方案,它基于鼠标移动产生热成像图,鼠标移动与视线焦点又具备非常相关的联系并且可作为近似估算。Silverback 不仅在测试过程中可以截屏,也可以录制用户的面部影像和声音。这些特点能为大型开发团队提供非常宝贵的测试体验分享。

尽管存在许多用以支持系统监测的图表生成工具,Graphite 无疑正在成为它们之中的首选。除了可以实时显示图表数据,它所采用的环状数据库既可以存储大量的历史数据,也可以提供可靠的近期数据。在界面上还提供了不少配置选项,最终的数据图表也可被嵌入网页从而提升展示效果。

Riemann 是一个开源服务器,它可以实时地将各种事件进行整合和传递。它基于 Netty 用 Clojure 编写,能够应对单个节点上的成千上万次的并发请求。Riemann 使用简单的 Protobuf 作为事件处理协议,支持将各种类型,例如 CPU、内存使用、订单错误率的事件信息整合起来,并可将数据提供给例如 Graphite 类型的图表系统或者触发邮件通知,同时提供数据的监测页面。Riemann 把数据处理理解为实时的通用事件流,相对于使用特定系统处理特定类型的数据的而言,Riemann 无疑是向前迈出了一大步。

JavaScript 引擎的性能提升结合着广泛被采纳的基于 HTML 的嵌入式 SVG 文档,这使得基于纯 Javascript 的客户端图表和可视化解决方案被更多人所接受。Highcharts 是我们尝试过的优秀者之一,它具备对高可配置性互动图表的灵活支持,并可轻而易举地对大数据集进行渲染。

我们对代码可视化技术非常着迷。特别是已经被证明非常有用的 Dependency Structure Matrices (DSM) ,它支持进化式结构与浮现式设计并且存在大量的支持 DSM 的工具。

我们已经谈论过很多关于 embedded servlet containers 的事情,并且它们也已经被我们的项目所广泛采用。像 SimpleWeb 和 Webbit 这样的工具通过简单和嵌入式的途径更进一步提供了无需实现 Java Servlet 标准的精简 HTTP 服务器功能。我们也高兴地看到利用此优势的相关测试代码的复杂度也在降低。

我们是内建式自动化性能测试的信仰者,但目前在这领域的开源测试工具数量有限。Locust 是非常推荐的 Python 测试工具,它支持运行多个注入器,生成基本的统计数据,还提供了实用的网页面板。它在性能测试方面更专注于对用户行为的模拟而不仅是生成访问流量,所以相对于传统的 JMeter 和 Grinder 我们更推荐使用 Locust。

当前 SaaS 性能测试工具,例如 Blitz.io 和 Tealeaf 的兴起使我们避免了性能测试中搭建集群环境以及软件许可给我们带来的种种麻烦。