Enable javascript in your browser for better experience. Need to know to enable it? Go here.
第31期 | 十月 2024

工具

  • 工具

    采纳 试验 评估 暂缓 采纳 试验 评估 暂缓
  • 新的
  • 移进/移出
  • 没有变化

工具

采纳 ?

  • 42. Bruno

    Bruno是一个用于 API 测试、开发和调试的开源桌面工具,类似于 PostmanInsomnia 。它旨在通过简单的离线设计提供更卓越的协作、隐私和安全性。集合直接存储在您的文件系统中,采用自定义的纯文本标记语言 Bru Lang 编写,可以通过 Git 或您选择的版本控制工具进行共享以便协作。Bruno 既可作为桌面应用程序使用,也可作为 CLI tool。它还提供了官方的 VS Code 扩展,并计划支持其他 IDE。Bruno 已成为多支 Thoughtworks 团队的默认选择,但我们也建议团队在 VPN 和代理环境下工作时保持警惕,因为在这些情况下发出的请求 可能会意外失败

  • 43. K9s

    K9s 通过集成更详细的图表和视图,显著地提升了其可视化能力。它现在提供了更友好的日志和指标展示功能,并更加灵活地支持自定义资源(CRDs)的显示。对于 Pods 的操作也得到了扩展,包括与调试工具(如 kubectl debug)更深入的集成,以及对多集群环境的增强支持。对于 CRD 的支持有显著地提升,现在提供了更好的资源导航和管理能力,并且可以更加流畅地与自定义资源进行交互。快捷键面板也得到了增强,以便于对 kubectl 不太熟悉的开发者使用。 K9s 最初主要专注于 DevOps 团队,所以这次改进可以看作是它一次重大的改进。

  • 44. SOPS

    SOPS 是一个加密文件编辑器,支持多种文件格式的加密,并与密钥管理服务 (KMS) 兼容。我们在处理秘密管理时的建议一直是要将其与源代码解耦。然而,当面临在完全自动化(符合基础设施即代码) 的精神下)和一些手动步骤(使用像 vaults 这样的工具)之间进行选择以管理、种子和轮换种子机密时,团队常常需要权衡。例如,我们的团队使用 SOPS 来管理引导基础设施的种子凭证。然而,在某些情况下,无法从遗留代码库中移除 Secret。在这些情况下,我们使用 SOPS 来加密文本文件中的 Secret。SOPS 可以与云管理的密钥存储(如 AWS 和 GCP 密钥管理服务 (KMS) 或 Azure Key Vault)集成, 作为加密密钥的来源。它还支持跨平台使用,并支持 PGP 密钥。我们的几个团队在需要管理代码库中的秘密时默认使用 SOPS。

  • 45. 视觉回归测试工具

    我们之前强调过 视觉回归测试工具 ,并观察到它们的算法从原始的像素级比较进化到更复杂的模式匹配和光学字符识别(OCR)。早期的视觉回归工具产生了很多误报,只有在界面稳定的后期开发阶段才有用。BackstopJS 通过配置选择器和视口来定位页面上的特定元素进行视觉测试,避免了这个问题。但机器学习使得检测和比较视觉元素更加准确,即使在这些元素移动或包含动态内容的情况下。这些工具变得越来越有用,并且具备利用 AI 和机器学习最新进展的优势。现在,几个商业工具,如 ApplitoolsPercy ,声称在其视觉回归测试中使用了 AI。我们的一支团队广泛使用了 Applitools Eyes,并对结果感到满意。尽管视觉回归测试不能替代编写良好的端到端功能测试,但它们是测试工具箱中的一个宝贵补充。我们正积极推动它们的采用,因为它们已经成为全面 UI 测试策略中的一个安全默认选项。

  • 46. Wiz

    Wiz 已成为我们多个项目中的云安全平台首选。我们的团队喜欢它能够比类似工具更早地检测到风险和威胁,因为它能够持续扫描变更。Wiz 可以检测并警报尚未部署到生产环境的工件(如容器镜像、基础设施代码)以及生产环境中的工作负载(如容器、虚拟机和云服务)的错误配置、漏洞和泄露的机密。我们也非常欣赏它为开发团队和领导团队提供的强大报告功能。该分析帮助我们了解漏洞如何影响特定服务,从而能够在该上下文中解决问题。

试验 ?

  • 47. AWS Control Tower

    AWS Control Tower 仍然是我们在多团队环境中管理 AWS 账户的首选工具。它提供了一个便捷的机制,可以预配置安全和合规控制,这些控制将自动应用于新的着陆区。这是 在变更点合规 的一个实例,因为这些控制在创建新基础设施时被应用和验证,消除了后续进行手动合规检查的需求。AWS Control Tower Account Factory for Terraform (AFT) 自我们上次使用以来不断发展,现在已在更多的 AWS 区域提供。AFT 允许通过基础设施即代码 流水线来创建 Control Tower 账户。我们喜欢 AFT 的定制化能力,它可以通过发送 webhooks 或采取特定操作,安全地与外部工具 GitHub Actions集成。我们的团队报告说使用 AWS Control Tower 管理账户效果很好,但我也希望 AWS 能接受社区对该项目的贡献,尤其是在我们发现改进机会时。

  • 48. CCMenu

    对于实践持续集成(CI) 的团队来说,了解中央构建在 CI 中的状态非常重要。在疫情之前,团队会议室中的大屏幕仪表盘 可以让人一目了然地获取这些信息。随着远程工作成为常态,团队需要一种适用于开发者个体工作站的解决方案。在 Mac 上, CCMenu 就是一款这样的工具,这是一个由 Thoughtworks 员工编写的小应用程序。最初它是 CruiseControl 的一部分,适用于所有可以提供 cctray 格式信息的服务器,包括 Jenkins 和 TeamCity。最近的重写增加了对 GitHub Actions 的支持,并为更深入集成更多 CI 服务器和身份验证方式奠定了基础。

  • 49. ClickHouse

    ClickHouse 是一个开源的列式在线分析处理(OLAP)数据库,用于实时分析。它于 2009 年作为一个实验项目启动,之后发展成为一个高性能且线性可扩展的分析数据库。其高效的查询处理引擎结合数据压缩,使其适合在不进行预聚合的情况下运行交互式查询。ClickHouse 也是 OpenTelemetry 数据的优秀存储选择。它与 Jaeger 的集成允许您存储大量的追踪数据并高效分析。

  • 50. Devbox

    尽管开发工具不断进步,保持一致的本地开发环境仍然是许多团队面临的挑战。为新工程师进行入职设置通常需要运行命令或自定义脚本,而这些操作可能会在不同机器上不可预测地失败,导致环境不一致。为了解决这个问题,我们的团队越来越依赖Devbox。Devbox 是一个命令行工具,提供了简洁的界面,用于创建可复现的、按项目定义的本地开发环境,它利用了 Nix 包管理器,但不使用虚拟机或容器。Devbox 极大地简化了团队的入职流程,因为一旦为代码库配置好环境,在新设备上只需一个 CLI 命令(devbox shell)就能复现已定义的环境。Devbox 支持 shell 钩子、自定义脚本以及生成 devcontainer.json,以便与 VSCode 集成。

  • 51. Difftastic

    Difftastic 是一种用于在语法感知的基础上高亮显示代码文件差异的工具,和传统的文本 diff 工具(例如经典的 Unixdiff 命令)有很大不同。例如,在像 Java 或 TypeScript 这样的以分号分隔的语言中,Difftastic 会忽略为了分割长语句而插入的换行符。该工具仅突出显示对程序语法有影响的更改。它首先将文件解析为抽象语法树,然后使用 Dijkstra 算法计算它们之间的距离。我们发现,Difftastic 在审查大型代码库时特别有用。只要编程语言有解析器,它就可以用于任何编程语言,并且开箱即用地支持 50 多种编程语言以及 CSS、HTML 等结构化文本格式。尽管这不是一个新工具,但在大语言模型(LLM)代码助手时代,人工审查越来越庞大的代码库变得至关重要,我们认为有必要强调这一工具的价值。

  • 52. LinearB

    LinearB 是一个软件工程智能平台,为我们的工程领导者提供数据驱动的洞察,以支持持续改进。它对关键领域进行对齐,如基准测试、工作流自动化以及增强开发者体验和生产力的针对性投资。我们对 LinearB 的体验表明,它能够在工程团队中培育改进和效率的文化。我们的团队使用该平台来跟踪关键的工程指标,识别需要改进的领域,并实施基于证据的行动。这些功能与 LinearB 的核心价值主张高度一致:基准测试、自动化收集指标,并实现数据驱动的改进。LinearB 集成了源代码、应用生命周期、CI/CD 和沟通工具,使用预配置和自定义的工程指标,提供有关开发者体验、生产力和团队绩效的全面定量洞察。作为 交付核心四指标 的支持者,我们特别欣赏 LinearB 对这些特定指标的强烈关注,以及其衡量软件交付性能关键方面的能力,这对于提升效率至关重要。历史上,团队在收集交付核心四指标特定指标时会面临挑战,往往依赖复杂的自定义仪表盘或手动过程。LinearB 持续提供一个引人注目的解决方案,能够自动跟踪这些指标,并提供实时数据,以支持围绕开发者体验、生产力和可预测性进行的主动决策。

  • 53. pgvector

    pgvector 是一个开源的 PostgreSQL 扩展,用于进行向量相似性搜索,允许将向量与结构化数据一起存储在单一且成熟的数据库中。虽然它缺少一些专用向量数据库的高级功能,但它受益于 PostgreSQL 的 ACID 合规性、时间点恢复等强大功能。随着生成式 AI 驱动的应用程序的兴起,我们看到越来越多的模式是存储并有效搜索嵌入向量以进行相似性匹配,pgvector 有效地解决了这一需求。pgvector 在生产环境中的使用日益增多,尤其是在团队已经使用云提供商管理的 PostgreSQL 时,它表现出能够满足常见向量搜索需求,而无需单独的向量存储库。我们的团队在对比结构化和非结构化数据的项目中发现了它的价值,展示了其广泛采用的潜力,因此我们将其移动到试验环(Trial ring)。

  • 54. Snapcraft 构建工具

    Snapcraft 是一个开源的命令行工具,用于在 Ubuntu、其他 Linux 发行版和 macOS 上构建和打包名为 snaps 的自包含应用程序。Snaps 可以在包括 Linux 机器、虚拟环境和车辆车载计算机系统在内的硬件平台上轻松部署和维护。虽然 Snapcraft 提供了一个公共的 应用商店 用于发布 snaps,但我们的团队使用这个构建工具将自动驾驶系统打包为 snap,而不将其发布到公共应用商店。这使我们能够在本地构建、测试和调试嵌入式软件系统,同时将其发布到内部工件库。

  • 55. Spinnaker

    Spinnaker 是由 Netflix 创建的一个开源持续交付平台。它将集群管理和云端烘焙镜像的部署作为核心功能。我们喜欢 Spinnaker 对微服务部署的特定做法。在之前的版本中,我们提到了缺乏将流水线配置为代码的能力,但这一问题已通过添加 spin CLI 得到解决。尽管我们不建议在简单的持续交付场景中使用 Spinnaker,但在复杂的情况和同样复杂的部署管道中,它已经成为许多人的首选工具。

  • 56. TypeScript OpenAPI

    TypeScript OpenAPI (或称 tsoa)是 Swagger 生成 OpenAPI 规范的一个替代方案,用于从代码中直接生成 API 规范。它采用代码优先的方式,将 TypeScript 控制器和模型作为唯一的真实数据来源,并使用 TypeScript 注解或装饰器,而不像使用 OpenAPI 工具时需要复杂的文件和配置。它能够生成 2.0 和 3.0 的 API 规范,并且支持为 Express、Hapi 和 Koa 生成路由。如果你在使用 TypeScript 编写 API,值得看看这个项目。

  • 57. Unleash

    尽管我们仍然推荐使用最简特性开关,但随着团队的扩展和开发速度的加快,管理手工制作的开关变得更加复杂。现在我们团队广泛使用 Unleash,它能够应对这种复杂性并支持 CI/CD。它既可以作为服务使用,也可以自托管。Unleash 提供了多个语言的 SDK,拥有良好的开发者体验和友好的管理界面。尽管目前还没有对 OpenFeature 规范 的官方支持,但你可以找到由社区维护的 Go 和 Java providers。Unleash 既可以用于简单特性开关,也支持分组和渐进式发布,使其成为适合大规模功能管理的选择。

评估 ?

  • 58. Astronomer Cosmos

    Astronomer Cosmos is an Airflow plugin designed to provide more native support for dbt core workflows in Airflow. With the plugin installed, when DbtDag is used to wrap a dbt workflow, it turns dbt nodes into Airflow tasks/task groups, allowing engineers to visualize dbt dependency graphs and their execution progress directly in the Airflow UI. It also supports using Airflow connections instead of dbt profiles, potentially reducing configuration sprawl. We're experimenting with the tool for its potential to make working with dbt in Airflow more seamless.

  • 59. ColPali

    ColPali is an emerging tool for PDF document retrieval using vision language models, addressing the challenges of building a strong retrieval-augmented generation (RAG) application that can extract data from multimedia documents containing images, diagrams and tables. Unlike traditional methods that rely on text-based embedding or optical character recognition (OCR) techniques, ColPali processes entire PDF pages, leveraging a visual transformer to create embeddings that account for both text and visual content. This holistic approach enables better retrieval as well as reasoning for why certain documents are retrieved, and significantly enhances RAG performance against data-rich PDFs. We've tested ColPali with several clients where it has shown promising results, but the technology is still in the early stages. It's worth assessing, particularly for organizations with complex visual document data.

  • 60. Cursor

    The arms race for AI-assisted programming tools is ongoing, and the most eye-catching one is Cursor. Cursor is an AI-first code editor designed to enhance developer productivity by deeply integrating AI into the coding workflow. We've paid attention to it in previous Radar assessments, but it's clear that the recent continuous improvement of Cursor has ushered in a qualitative change. In our use, Cursor has demonstrated strong contextual reasoning capabilities based on the existing codebase. While other AI code tools like GitHub Copilot tend to generate and collaborate around code snippets, Cursor's multi-line and multi-file editing operations make it stand out. Cursor is forked from VSCode and developed based on it, providing a fast and intuitive interaction method that conforms to the developer's intuition. Powerful operations can be completed with ctrl/cmd+K and ctrl/cmd+L. Cursor is leading a new round of competition in AI programming tools, especially regarding developer interaction and understanding of codebases.

  • 61. Data Mesh Manager

    Data Mesh Manager provides the metadata layer of a typical data mesh platform. In particular, it focuses on the definition of data products and the specification of data contracts using the OpenContract initiative and can be integrated into build pipelines using the associated DataContract CLI. The application also provides a data catalog to discover and explore data products and their metadata and allows for federated governance, including the definition of data quality metrics and the management of data quality rules. It’s one of the first native tools in this space, which means it isn’t just trying to retrofit existing platforms to the data mesh paradigm.

  • 62. GitButler

    Despite its power and utility Git's command line interface is notoriously complex when it comes to managing multiple branches and staging commits within them. GitButler is a Git client that provides a graphical interface that aims to simplify this process. It does this by tracking uncommitted file changes independently of Git and then staging those changes into virtual branches. One might argue that this is a solution to a problem that shouldn't exist in the first place; if you make small changes and push to trunk frequently, there’s no need for multiple branches. However, when your workflow involves pull requests, the branching structure can become complex, particularly if there is a long review cycle before a PR can be merged. To address this, GitButler also integrates with GitHub so you can selectively group changes into pull requests and issue them directly from the tool. GitButler is another entry into the growing category of blips aimed at managing the complexity inherent in the PR process.

  • 63. JetBrains AI Assistant

    JetBrains AI Assistant is a coding assistant designed to integrate smoothly with all JetBrains IDEs to support code completion, test generation and style guide adherence. Built on models like OpenAI and Google Gemini, it stands out for its ability to ensure consistent output by remembering coding styles for future sessions. Our developers found its test generation capabilities particularly useful and noted its ability to handle longer outputs without stability issues. However, unlike some competitors, JetBrains does not host its own models, which may not work for clients concerned about third-party data handling. Still, the tool’s integration with JetBrains IDE makes it a promising choice for teams exploring AI-driven coding assistants.

  • 64. Mise

    Developers working in a polyglot environment often find themselves having to manage multiple versions of different languages and tools. mise aims to solve that problem by providing one tool to replace nvm, pyenv, rbenv and rustup, among others, and is a drop-in replacement for asdf. Mise is written in Rust for shell interaction speed, and unlike asdf which uses shell-based shims, mise modifies the PATH environment variable ahead of time, so the tool run times are called directly. This is partly why mise is faster than asdf. For those developers already familiar with asdf, it provides the same functionality but with a few key differences. Being written in Rust, it's faster and has a few features that asdf doesn't, such as the ability to install multiple versions of the same tool at the same time and more forgiving commands, including fuzzy matching. It also provides an integrated task runner, useful for things like running linters, tests, builders, servers and other tasks that are specific to a project. If you're a bit fed up with having to use multiple tools to manage your development environment as well as the at times clunky syntax of other tools, mise is definitely worth a look.

  • 65. Mockoon

    Mockoon is an open-source API mocking tool. It has an intuitive interface, customizable routes and dynamic responses as well as the ability to automate the creation of mock data sets. Mockoon is compatible with OpenAPI and lets you generate different scenarios that can be tested locally and integrated with a development pipeline. You can also create "partial mocks" by intercepting the requests and only faking the calls that are defined in Mockoon. The partial mocks help simulate specific API routes or endpoints and forward other requests to actual servers. While partial mocks can be useful in certain scenarios, there is a risk of overuse, which may lead to unnecessary complexity. Besides that, Mockoon remains a valuable tool for quickly setting up mock APIs as well as improving and automating development workflows.

  • 66. Raycast

    Raycast is a macOS freemium launcher that enables you to quickly launch applications, run commands, search for files and automate tasks from your keyboard. Our teams value its out-of-the-box features for developers and its easy extensibility, which allows you to interact with third-party apps and services like VSCode, Slack, Jira and Google, among many others. Raycast is tailored for productivity and minimizes context switching, making it a useful tool for anyone looking to streamline their daily tasks. Pro users have access to Raycast AI, a specialized AI-powered search assistant.

  • 67. ReadySet

    ReadySet is a query cache for MySQL and PostgreSQL. Unlike traditional caching solutions that rely on manual invalidation, ReadySet leverages database replication streams to incrementally update its cache. Through partial view materialization, ReadySet achieves lower tail latencies than a traditional read replica. ReadySet is wire compatible with MySQL and PostgreSQL, so you can deploy it in front of your database to horizontally scale read workloads without requiring application changes.

  • 68. Rspack

    Many of our teams working on web-based frontends have switched from older bundling tools — Webpack comes to mind — to Vite. A new entrant in this field is Rspack, which after 18 months in development has just seen its 1.0 release. Designed as a drop-in replacement for Webpack, it’s compatible with plug-ins and loaders in the Webpack ecosystem. This can be an advantage over Vite when migrating complex Webpack setups. The main reason why our teams are migrating to newer tools like Vite and Rspack is developer experience and, in particular, speed. Nothing breaks the flow of development more than having to wait a minute or two before getting feedback on the last code change. Written in Rust, Rspack delivers significantly faster performance than Webpack, and in many cases, it's even faster than Vite.

  • 69. Semantic Router

    When building LLM-based applications, determining a user's intent before routing a request to a specialized agent or invoking a specific flow is critical. Semantic Router acts as a superfast decision-making layer for LLMs and agents, enabling efficient and reliable routing of requests based on semantic meaning. By using vector embeddings to infer intent, Semantic Router reduces unnecessary LLM calls, offering a leaner, cost-effective approach to understanding user intent. Its potential extends beyond intent inference, serving as a versatile building block for various semantic tasks. The speed and flexibility it offers position it as a strong contender in environments that require fast, real-time decision-making without the overhead of LLMs.

  • 70. Software engineering agents

    One of the hottest topics right now in the GenAI space is the concept of software engineering agents. These coding assistance tools do more than just help the engineer with code snippets here and there; they broaden the size of the problem they can solve, ideally autonomously and with minimum interference from a human. The idea is that these tools can take a GitHub issue or a Jira ticket and propose a plan and code changes to implement it, or even create a pull request for a human to review. While this is the next logical step to increase the impact of AI coding assistance, the often advertised goal of generic agents that can cover a broad range of coding tasks is very ambitious, and the current state of tooling is not showing that convincingly yet. However, we can see this working sooner rather than later for a more limited scope of straightforward tasks, freeing up developer time to work on more complex problems. Tools that have been released with beta versions of agents include GitHub Copilot Workspace, qodo flow, Tabnine's agents for JIRA, or Amazon Q Developer. The SWE Bench benchmark lists more tools in that space, but we caution you to take benchmarks in the AI space with a grain of salt.

  • 71. uv

    Rust is well suited for writing command-line tools due to its fast startup performance, and we see people rewriting some toolchains in it. We mentioned Ruff, a Python linter written in Rust in the previous Radar. For this volume, we evaluated uv, a Python package management tool written in Rust. The value proposition of uv is "blazing fast" and it beats other Python package management tools by a large margin in their benchmarks. However, during our Radar evaluation, we discussed whether optimizing within seconds for build tools is a marginal improvement. Compared with performance, what’s more important for a package management system is the ecosystem, mature community and long-term support. That being said, feedback from the project team has shown us that this marginal speed improvement could be a big plus for improving feedback cycles and overall developer experience — we tend to manually make CI/CD caching very complex to achieve this little performance improvement; uv simplifies our Python environment management. Considering there is still much room for improvement in package and env management for Python development, we think uv is an option worth assessing.

  • 72. Warp

    Warp is a terminal for macOS and Linux. It splits command outputs into blocks to improve readability. Warp features AI-driven capabilities such as intelligent command suggestions and natural language processing. It also includes notebook features that allow users to organize commands and outputs and to add annotations and documentation. You can leverage these features to create README files or onboarding materials and provide a structured and interactive way to present and manage terminal workflows. Warp easily integrates with Starship, a flexible cross-shell prompt, allowing you to customize the terminal experience and retrieve information about running processes, the specific version of a tool you’re using, Git details or the current Git user, among other details.

  • 73. Zed

    After the shutdown of the Atom text editor project, its creators built a new editor named Zed. Written in Rust and optimized to leverage modern hardware, Zed feels fast. It has all the features we expect from a modern editor: support for many programming languages, a built-in terminal and multibuffer editing to name a few. AI-assisted coding is available through integration with several LLM providers. As ardent pair programmers we're intrigued by the remote collaboration feature built into Zed. Developers find each other via their GitHub IDs and can then collaborate on the same workspace in real time. It's too early to tell whether development teams can and want to escape the pull of the Visual Studio Code ecosystem, but Zed is an alternative to explore.

暂缓 ?

  • 74. CocoaPods

    CocoaPods has been a popular dependency management tool for Swift and Objective-C Cocoa projects. However, the CocoaPods team announced that the project is in maintenance mode after more than a decade of being a key tool for iOS and macOS developers. While the tool and its resources will remain available, active development will cease. Developers are encouraged to transition to Swift Package Manager, which offers native integration with Xcode and better long-term support from Apple.

无法找到需要的信息?每期技术雷达中的条目都在试图反映我们在过去六个月中的技术洞见,或许你所搜索的内容已经在前几期中出现过。由于我们有太多想要谈论的内容,有时候不得不剔除一些长期没有发生变化的条目。技术雷达来自于我们的主观经验,而非全面的市场分析,所以你可能会找不到自己最在意的技术条目。

下载 PDF

 

English | Español | Português | 中文

订阅技术雷达简报

 

立即订阅

查看存档并阅读往期内容