前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >2015.5 技术雷达 | 工具篇

2015.5 技术雷达 | 工具篇

作者头像
ThoughtWorks
发布2018-04-20 14:52:04
1.2K0
发布2018-04-20 14:52:04
举报
文章被收录于专栏:ThoughtWorksThoughtWorks

(点击图片可以查看大图)

尽管依赖管理的概念并不新奇,在很多技术栈下它甚至已经被作为一种基础开发实践,但在PHP 社区却并非如此。Composer(getcomposer.org)作为 PHP 技术栈下的依赖管理工具,深受其他技术栈下依赖管理工具的影响。例如,Node 的 npm 以及 Ruby 的 Bundler 等。现如今 Composer 已经被 PHP 项目广泛使用,并且其本身也日趋成熟。虽然在对内部库的管理上,Composor还有待改进,但是对于大多数外部库的管理 Composor 已能够完全胜任。

在企业级应用中,对组件进行良好的测试至关重要,尤其是对于服务的分离和自动化部署这两个关系到微服务架构是否成功的关键因素,我们更需要更合适的工具对其进行测试。“服务虚拟化”这一行业术语,意指能够在组件化服务的场景下模拟特定组件的工具。Mountebank 显然取得了不错的成绩。它是一个轻量的测试工具,可以被用于对HTTP、HTTPS、SMTP 和 TCP 进行模拟(Mock)和打桩(Stub)。

Postman(getpostman.com/features)是一个在Chrome 中使用的 REST 客户端插件,通过 Postman,你可以创建请求并且分析服务器端返回的信息。这个工具在开发新的 API 或者实现对于已有 API 的客户端访问代码时非常有用。Postman支持 OAuth1 和 OAuth2,并且对于返回的 JSON 和 XML 数据都会进行排版。通过使用 Postman,你可以查看你通过 Postman 之前发起过的请求,并且可以非常友好的编辑测试数据去测试 API 在不同请求下的返回。同时,虽然我们不鼓励录屏式的测试方法,但是 Postman 提供了一系列的拓展允许我们将它作为跑测试的工具。

Brighter(iancooper.github.io/Paramore/Brighter.html)是一个基于.Net的开源工具库,主要实现了命令调用模式。我们从正在使用它的一些团队中收到了很好的反馈,尤其在与端口模式、适配器模式和命令查询职责分离模式(CQRS)一起使用的时候。特别值得一提的是,它还可以很好地与 Polly(github.com/michael-wolfenden/Polly)集成并提供熔断器模式的支持。

支持 DNS 和基于 HTTP 发现机制的服务发现工具Consul(consul.io)持续让我们印象深刻。它提供了定制化的注册服务健康检查并标记不健康实例的功能远胜于其他类似的工具。更多时兴的工具与Consul的集成使其功能更加强大。ConsulTemplate (github.com/hashicorp/consultemplate) 可以直接使用Consul的信息来填充配置文件,使得像用mod_proxy进行客户端负载均衡更加容易。在使用Docker的场景里,有了registrator(github.com/gliderlabs/registrator) 的帮助,只需要很小的工作量就可以自动化地向Consul注册Docker容器,使得管理基于容器技术的配置更加容易。

在我们软件开发领域,盲目地假设网络总是可靠,服务器总是能够快速并正确的响应导致了许多失败的案例。Hamms(github.com/kevinburke/hamms)是一个有趣的开源工具,它可以模拟一个行为损坏的HTTP服务器,触发一系列的失败,包括连接失败,或者响应缓慢,或者畸形的响应。它可以帮助我们更优雅的测试我们的软件在处理异常时的反应。

我们的多个使用.NET技术栈的项目已经在推广使用Polly(github.com/michael-wolfenden/Polly)来帮助我们构建基于微服务的系统。它鼓励使用基于流畅表达式的透明错误处理机制,以及包含了多种断路模式(Circuit Breaker Pattern),如重试,不断重试,稍后重试。在其他语言中已经存在类似的程序库,如Java中的Hystrix,而Polly是.NET家族的一个很好补充。

REST-assured(code.google.com/p/rest-assured)是一个用于测试和验证RESTful服务的Java DSL。它使得为基于HTTP的RESTful服务编写测试变得更加简单。REST-assured支持不同类型的REST请求,并且可以验证请求从API返回的结果。它同时提供了JSON校验机制,用于验证返回的JSON数据是符合预期的。

ZED Attack Proxy(ZAP)(owasp.org/index.php/OWASP_Zed_Attack_Proxy_Project)是一个OWASP的项目,允许你以自动化的方式探测已有站点的安全漏洞。可以用来做定期的安全测试,或者集成到CD的Pipleline中提供一个持续的常规安全漏洞检测。使用ZAP这样的工具并不能替换掉对安全的仔细思考或者其他的系统测试,但是作为一个保证我们的系统更安全的工具,还是很值得添加到你的工具集里。

相对于通过发送同步点对点请求的方式修改状态,最近许多企业级软件开发都在致力于基于异步不变事件序列的架构演进。ApacheKafka是一个开源消息框架,它支持基于有序的发布消息到许多独立的轻量级的消费方的架构风格。Kafka的独特设计使它能够在保持消息顺序强相关的前提下动态增加消费方的数量。

Blackbox(github.com/StackExchange/blackbox)是一个用于加密源代码仓库中特定文件的简单工具。如果你需要存储密码或者私钥的时候,这个工具特别实用。Blackbox 可以和 Git,Merurial 和Subversion 结合使用,并使用 GPG 加密。每个用户拥有自己的密钥,使得细粒度级别的权限撤销变得很容易。这个领域正在发生很多变化,一些其他的工具也可以考虑包含进来,如 git-crypt Trousseau

在数据科学和分析的世界里,大部分工作都是使用 Python 和R 来完成,但是这两个语言只为 Web 可访问的可视化图形绘制提供了有限的几个支持。一种做法是将分析的结果转换成为能够在浏览器里很容易呈现和交互的格式。我们知道有两个工具来尝试这样做。Bokeh是一个可以让你创建像 D3.js 一样风格的交互式可视化的 Python 和 JavaScript 库,但是在处理大数据集或者流式的数据集时,具有更高的性能。Vega是一种针对 D3 的声明式可视化语法,它接收服务器端生成的 JSON 数据并将可视化描述转化为 D3.js 的代码。

Gor是一个开源工具, 可以实时捕获线上HTTP请求,并在测试环境中重放这些HTTP请求,以帮助我们使用到这些产品环境数据来持续测试我们的系统。使用它之后可以大大提高我们在产品部署,配置修改或者基础架构变化时的信心。

NaCl (nacl.cr.yp.to) 库(读作‘Salt’)提供了关于加密,解密和数字签名的一系列的功能,使得实现安全的网络传输,或者满足其他密码学方面的需求变得简单。尽管有一些其他的工具库也能提供这些功能,NaCl承诺提供更快的速度和更简单易用的 API。当前支持 C 和 C++ 的库,关于 Python 的封装正在进行中。

Origami(facebook.github.io/origami) 是一款免费的用户原型设计工具,其对常用功能提供了大量的快捷键操作。它为将原型设计导出为代码片段提供了可能性,支持的语言有:iOS开发上的Objective-C,Android开发上的Java,以及Web开发上的Javascript。该工具可以被用来快速构建面向用户的交互式原型和测试用户使用流程。根据从一些团队收集的使用经验来看,我们建议您在需要时对该工具进行考察。

Pdfmake是一个可以在浏览器里直接生成和打印PDF文档的JavaScript库。使用pdfmake,你可以创建一个支持表、列和富样式等结构元素的文档,再通过辅助方法创建并打印或者下载为不包含客户端JavaScript的PDF文件

在我们的经验中,相比其他办法而言,通过在一开始创建大量详尽的设计图表来开发软件系统,并不是什么好的选择。但用图表来表达系统中格外复杂和难懂的部分却往往是个好的想法,何况UML本身也已经提供了若干实用的、众所周知的图表。我们喜欢用PlantUML(plantuml.sourceforge.net)来创建这些图表,因为它让我们以清晰的文字形式来表达图表背后的意图,而不用再去摆弄那些“过度”的图形化工具。同时,文字形式的表达方式还支持版本管理,并且可以和源代码存放在一起。

SoundCloud最近开源了一个Graphite的替代品:Prometheus(prometheus.io)。SoundCloud在解决生产环境中使用Graphite所遇到的困难的过程中,开发了Prometheus,它的工作方式和Graphite不同,主要体现在其对基于HTTP的拉模型的支持上(尽管它也支持和Graphite更类似的推模型)。不仅如此,它还因为支持根据获取到的度量指标进行告警的功能而比Graphite更胜一筹,所以,在你的运维工具套件中他会变得更加活跃。尽管在生产监控领域采用新技术需要谨慎行之,但早前的报告亦显示,SoundCloud对其在生产环境使用Prometheus表示满意,而且Docker也已参与到该工具后续的开发工作中。

Quick是一个针对Swift和Objective-C的测试框架,它和用来做测试验证的Nimble捆绑发布。Quick主要用于Swift和Objective-c程序行为的验证。它和rspec和jasmine具有相同的语法风格,基础环境很容易建立。Quick良好的结构和类型断言使得测试异步程序更加容易。

Security Monkey 是 NetflixSimian Army 工具系统中的一员,设计这套工具的初衷是为了确保系统是以有弹性的方式构建的。它不仅提供了针对AWS设置进行可配置的潜在安全漏洞评估功能,还对正在使用的AWS 设置的变更进行监控并及时通知相应的负责团队。早于 AWS 的 Trusted Advisor Report 和 Cloudtrail 可用之前开发出来的SecurityMonkey虽然提供的功能在某种程度上与他们有些重叠,但Security Monkey还提供了更多的功能。如果这些 AWS 的服务不太能够满足你的需求,SecurityMonkey值得一试。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2015-05-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 思特沃克 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
Prometheus 监控服务
Prometheus 监控服务(TencentCloud Managed Service for Prometheus,TMP)是基于开源 Prometheus 构建的高可用、全托管的服务,与腾讯云容器服务(TKE)高度集成,兼容开源生态丰富多样的应用组件,结合腾讯云可观测平台-告警管理和 Prometheus Alertmanager 能力,为您提供免搭建的高效运维能力,减少开发及运维成本。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档