Nohost 开源了

2021-01-18 09:10:14 浏览数 (1)

项目背景

一个需求的研发需要经历开发联调、产品体验、测试验证、发布部署这4个阶段,在这个过程中,我们经常会遇到下面这些问题:

1、环境冲突、代码被覆盖

随着业务的发展,常常会有多个需求同时涉及开发一个项目的场景。由于测试服务器数量不够,经常会有环境冲突问题,甚至会出现环境被其他需求代码覆盖的情况。

2、切换环境成本高

多需求并行开发的时候,开发同学需要切换环境开发,测试同学需要切换环境验证,产品也需要切换环境体验不同需求。

而切换环境这个操作,需要操作代理工具或者修改系统 host 文件,效率低。更麻烦的是,当测试服务器 IP 变化时,还需要每一个使用该环境的人去修改配置。

3、定位问题信息不全

产品、测试反馈问题的时候,通常只提供异常界面截图、视频等信息,这对开发定位问题来说,明显不够。有些产品或测试会从代理工具中导出请求信息,给开发同学定位问题带来了一定的便利。然而,开发还是需要下载对应文件并导入代理工具才能查看,整个链路冗长且高度依赖于代理工具。

Nohost就是为了解决以上问题而诞生的一个多环境配置及抓包调试平台。

项目简介

Nohost 是腾讯IMWeb前端团队打造的一个多环境配置及抓包调试平台,覆盖了研发过程中开发联调、测试、产品体验三大阶段,提供跨端代理工具、支持一键切换体验测试环境、请求mock、实时/历史抓包、代理转发等能力,解决了测试环境管理粗糙、易冲突、联调效率慢、配置复杂等问题,支撑了腾讯在线教育近年来数以万计的需求研发,提升了研发过程中联调体验环节的效率

Nohost 本身是一个通用化设计、可扩展的方案,在腾讯内部以及业界各大前端团队均有较为广泛的使用。在腾讯内有超过80个前端团队直接部署了 Nohost 或者基于 Nohost 能力扩展的应用,覆盖使用用户群体超过1000人。业界上也有多个公司(小赢科技、网易游戏、字节跳动、转转二手车等)的前端团队独立部署使用。

适用场景

开发联调阶段:

1、开发阶段:

借助 Nohost 进行请求抓包、数据mock、配置个人专属的测试环境(静态资源代理、请求转发到测试服务或者引用后台配置好到测试服务环境),且全面支持Whistle规则以及Whistle插件生态(比如注入vConsole、eruda等)。

联调阶段:

后台开发配置个人的测试服务环境,前端可以通过Nohost 切到指定环境进行联调。联调过程中发现问题,可以通过实时抓包定位问题,或者将抓包数据导出分享发给后台,后台可以在线预览抓包信息,并对请求进行修改、重放。

配置好的环境后续也可以在产品体验、测试验证阶段使用。

产品体验阶段:

产品同事只需打开Nohost客户端(无需重复配置切换host)或在手机端配置固定Wi-Fi代理,通过界面的“环境选择小面板”选择测试环境进行体验。体验过程中如果出现问题,开发人员可以通过远程进行实时抓包或通过历史抓包数据进行定位。

测试验证阶段:

测试同事同样只需打开Nohost客户端或在手机端配置固定Wi-Fi代理,通过界面的“环境选择小面板”选择测试环境进行测试,并在测试过程中通过Nohost 实时抓包,将出现问题的请求抓包数据导出,并提供可直接访问的链接,测试可直接将抓包链接放到问题单中,方便开发人员定位问题。

功能介绍

1. 自动注入“环境选择工具”-小圆点

通过注入的“环境选择工具”-小圆点,在页面快捷切换任意环境体验/调试

“环境选择工具”还会有其他的快捷功能,比如查看抓包,复制链接等。支持使用自定义Whistle插件扩展。

“环境选择工具”支持多端注入:Web、PC客户端、H5、小程序,更多技术栈正在支持中。

2. 支持多账户多环境配置

Nohost支持多账户,每个账户都可以新建属于自己的环境

环境代理规则可以通过 `@` 快捷引入别人配置好的环境,别人改了任何配置都会实时同步,无需通知引入该环境的人。

3. 支持抓包并分享

在我们调试测试过程中,如果分析到某个请求可能有问题,这时候希望能把这个请求给后台查看具体什么问题,最原始的方式是截图但信息显然很难截全。而Nohost支持将抓包日志共享给其他人看。

开发在网页直接查看抓包信息。

4. 强大的插件化系统

一个强大的插件化系统,可以让其他开发者在不了解系统实现的情况下,用插件的形式来进行自定义的功能扩展。Nohost 支持用插件进行扩展。用户有自定义的需求时,可以使用插件进行自定义。像是功能的扩展,注入vConsole、抓包信息汇总、Mock等,都可以通过插件进行实现(Nohost兼容Whistle的所有插件)。

功能演示

Nohost原理

当一个请求被代理到 Nohost ,Nohost 会从请求中读取用户选择的 `账户/环境` 信息,转发到对应的进程(如无,会先fork出一个进程,启动Whistle),进行请求、响应的处理。不同的账户使用不同的进程,环境间天然形成隔离,同时多进程也能充分利用机器的性能。

如何接入

接入 Nohost 是非常简单的。需要准备一台有 Node 环境的服务器,简单三步便可以快速接入。

更多配置或者更高级的应用,可以去 Nohost git 和Nohost 官网了解:

官网:https://nohost.pro/

https://github.com/Tencent/nohost

(点击文末阅读原文直接访问)

请给项目 一个 Star !

欢迎提出你的 issue 和 PR!

国内镜像地址:

https://git.code.tencent.com/Tencent_Open_Source/nohost

(登录后才能访问公开项目)

腾讯工蜂源码系统为开源开发者提供完整、最新的腾讯开源项目国内镜像

0 人点赞