Enable javascript in your browser for better experience. Need to know to enable it? Go here.

平台

采纳 ?

试验 ?

  • 随着各个组织持续关注改善开发人员体验和效率,我们看到Backstage越来越受欢迎,且组织开始采纳开发者门户。这些组织正在寻求支持和简化其开发环境。随着各种工具和技术数量的增加,某种形式的标准化,对于保持一致性变得越来越重要。这样开发人员可以专注于创新和产品开发,而不是陷入重新造轮子的泥潭。Backstage 是一个由 Spotify 创建的开源开发者门户平台。它基于软件模板、统一的基础设施工具和一致且集中的技术文档。其插件式架构,使其在组织的基础设施生态系统中,具有可扩展性和适应性。我们将持续关注新的 Backstage Service Catalog 。它目前正处于alpha测试阶段,可以用来追踪组织生态系统中所有软件的所有权和元数据。

  • ClickHouse 是用于实时分析的开源柱状在线分析处理(OLAP)数据库。它起始于2009年的一个实验项目。从那以后,它已经发展成一个高性能且可线性扩展的分析数据库。它兼备高效查询处理引擎和数据压缩功能,使其适合在不进行预聚合的情况下,运行交互式查询。我们已经使用过ClickHouse,并且对它的高性能印象深刻。

  • Kafka 是事件驱动架构的常规默认平台,但若调整其以适应遗留系统的环境,则会引入不匹配的问题。然而在一些案例中,我们成功地使用 Confluent Kafka REST Proxy,来将遗留系统环境的复杂度降至最低。该代理允许开发人员通过 HTTP 接口访问 Kafka ,这在难以使用原生 Kafka 协议的环境中尤为有用。例如,只须让 SAP 团队通过预配置好的 SAP 远程函数调用,发出一条 HTTP POST 命令,就能消费到由 SAP 发出的这个事件。这避免了启用 SAP 相关的 Java 抽象(以及用来管理它的团队)。尽管此代理的功能非常全面,但与任何此类适配器工具一样,我们都建议应谨慎且清醒地了解其中所涉及到的利弊权衡。我们相信,该代理允许遗留系统的生产者发送事件这一点是很有价值的,但经由它来创建事件的消费者时要多加小心,因为抽象会变得更为复杂。该代理不会改变 Kafka 消费者是有状态的这一事实,这意味着由 REST API 创建出的消费者实例,会与特定的代理相绑定。此外,需要进行 HTTP 调用来消费主题中的消息,会改变 Kafka 事件的标准语义。

  • 虽然曾在技术雷达中提出慎用的建议,但我们依然看到了用户对于GitHub Actions的持续热情。尽管如此,之前的建议依然有效——对于复杂工作流来说,GitHub Actions还不算成熟的CI/CD工具。例如,它不能重新触发工作流中单独的一个job,不能在composite action中调用其他的action,也不支持共享库。另外,虽然GitHub Marketplace 生态圈具备显著的优势,但让第三方的Github Actions访问自己的构建流水线,会带来以不安全的方式共享机密的风险(我们建议遵循GitHub 的安全加固建议)。尽管有种种顾虑,但在GitHub源代码旁直接创建构建工作流的便利性,对很多团队还是有着不小的吸引力。另外,还可以使用act 在本地运行Github Actions。和以前一样,我们建议审慎地权衡Github Actions的优缺点。但我们的很多团队还是非常喜欢它的简单性。

  • K3s 是一个轻量级的用于物联网和边缘计算的 Kubernetes 发行版。它可以带来与 Kubernetes 相当的优势,同时又降低了运营的开销。它的增强部分包括轻量级的存储后端( K3s 默认使用 sqlite3 作为存储后端,而非 etcd )和一个单一且具有最少的操作系统依赖的二进制包,这些都使得 K3s 适用于资源受限的环境。我们已经在POS机中应用了 K3s 并对它十分满意。

  • Mambu 是一个 SaaS 云银行平台。它使客户能够轻松灵活地构建和更改他们的银行和借贷产品。与其他开箱即用但只能通过硬编码来集成的银行核心平台不同, Mambu 是专为不断变化的金融产品而设计的。它具备别具一格的工作流,同时使用 API 驱动的方法,来定制业务逻辑、流程和集成方式。我们目前有几个项目在使用 Mambu 。凭借其基于云的可扩展性和高度可定制的特性,它正在成为构建金融产品时明智的默认业务领域系统。

  • 基于 Kafka Connect 框架构建的MirrorMaker 2.0 (也称为 MM2 ),弥补了以前 Kafka 复制工具中的许多短板。它可以成功地跨集群 geo-replicate 主题数据和元数据,包括偏移量、消费者组和授权命令行( authorization command lines, ACLs )。MM2 能够保留分区,并能检测新的主题和分区。我们很欣赏其所具备的下述逐步进行集群迁移的能力(当从本地集群迁移到云集群时,这种方法尤其有用):同步主题和消费者组之后,先把客户端迁移到新集群里;然后把生产者迁移到新集群里;最后关闭 MM2,并将旧集群下线。此外,MM2 还可用于灾难恢复和高可用性场景。

  • 用于Kubernetes的OPA Gatekeeper 是为 Kubernetes 实现的一个可定制的准入 webhook。它可以确保所有的规则都会被 Open Policy Agent (OPA) 执行。我们正在使用 Kubernetes 平台的这个扩展,来为集群添加一个安全层,以便通过提供一个自动化的治理机制,来确保所有的应用都符合定义好的规则。我们的团队喜欢它的可定制化能力。使用 CRD(CustomResourceDefinitions),就可以定义 ConstraintTemplates 和 Constraints。这会使得定义规则和对象(例如 deployments, jobs, cron jobs 等) 以及计算中的命名空间变得容易。

  • 我们已经看到在各种组织中,使用Pulumi的团队数量有所增加。尽管Terraform在基础设施编程世界中地位稳固,但Pulumi却填补了其中的一个空白。虽然Terraform是一个久经考验的常备选项,但其声明式的编程特质,却深受不足的抽象机制和有限的可测试性的困扰。如果基础设施完全是静态的,那么Terraform就够用了。但是动态基础设施的定义,则需要使用真正的编程语言。允许以 TypeScript/JavaScript、PythonGo语言编写配置信息(无需标记语言或模板)这一点,就使Pulumi脱颖而出。Pulumi专注于云原生架构,包括容器、无服务器函数和数据服务,并能良好支持Kubernetes。最近,虽然面临着AWS CDK的挑战,但Pulumi仍然是该领域唯一的能独立于任何云平台厂商的工具。

  • Kubernetes原生支持称为“机密”(secret)的键值对象。然而默认情况下,这些Kubernetes的“机密”其实并不真的那么机密。尽管它们与其他键值数据分开处理,可以单独采取预防措施或访问控制,且支持在将“机密”存储在 etcd 之前,对其进行加密,但在配置文件中,“机密”是以纯文本字段的形式保存的。Sealed Secrets提供组合运算符和命令行实用程序,使用非对称密钥来对“机密”进行加密,以便仅在集群中用控制器将其解密。此过程可确保“机密”在Kubernetes用于部署的配置文件中不会泄漏。一旦加密,这些文件就可以安全地共享或与其他部署制品一起存储。

  • 自从首次评估JAMstack以来,我们已经看到越来越多这种风格的Web应用。然而,当构建传统的动态网站和后端服务的基础设施对JAMstack来说太重的时候,我们的团队就会选择Vercel。Vercel是一个托管静态网站的云平台。更重要的是,它实现了开发、预览和发布JAMstack网站工作流程的无缝衔接。相关的部署配置非常简单。通过和GitHub集成,每个代码提交或Pull Request,都可以触发一个新的带有预览链接的网站部署。这个操作极大地加快了开发过程中的反馈。Vercel还使用CDN来扩展和加速生产环境的站点。值得一提的是,Vercel背后的团队也在支持另一个广受欢迎的框架——Next.js

  • 使用机器学习(ML)平台 Weights & Biases 的实验跟踪、数据集版本控制、模型性能可视化和模型管理功能,能够更快地构建模型。此外还可以将其与现有的机器学习代码集成,从而将实时指标、终端日志和系统统计数据快速传输到仪表盘中,用于进一步分析。我们的团队已经使用了 Weights & Biases ,非常喜欢它在模型构建方面的协作功能。

评估 ?

  • Azure认知搜索为需要对异构内容进行文本检索的应用程序,提供搜索即服务的功能。它提供基于推送或基于拉取的API,来上传图像。它能将图像、非结构化文本或结构化文档内容编入索引,也能有限地支持基于拉取的数据源类型 。它能以REST和 .NET SDK为基础,提供用来执行搜索查询的API。搜索时既可以使用简单的查询语言,又可以使用更强大的Apache Lucene查询。后者具有字段范围查询、模糊搜索、中缀和后缀通配符查询、正则表达式搜索等功能。我们已经成功地将Azure认知搜索与其他的Azure服务一起使用,包括在Cosmos DB中搜索上传的内容。

  • 即使现在已经有了各种开发和基础设施工具,但我们还是经常会需要使用脚本,将几项工作粘接起来,或者自动化重复的任务。当前编写这类脚本多使用 bash 或 Python 。然而,我们很高兴地看到, Clojure 成为了这类工作令人兴奋的新选择。这都要归功于 Babashka,一个使用 GraalVM 实现的完整的 Clojure 运行时。Babashka 附带的库已经可以涵盖大多数的脚本工具使用场景,并且它还支持加载更多的库。使用 GraalVM 保证了脚本的启动时间与原生工具相当。 Babashka 也是少见的支持多线程的脚本环境,可以用于少数特定的场景。

  • ExternalDNS 将Kubernetes的Ingress和Service所对应的DNS记录,同步给外部的DNS提供商。而这项工作原本由kops dns-controllerZalando's Mate或者route53-kubernetes来完成。由于人们更加青睐ExternalDNS,后两者目前已被弃用。该工具使得用户可以通过公共DNS服务器,来发现Kubernetes的内部资源,从而减少了因 Ingress 主机或者 service IP地址发生改变,而需要更新DNS时的一些人工步骤。它支持大量可以直接使用的DNS服务提供商,并且正在通过社区支持增加更多DNS服务提供商。就像那句老玩笑话所说,万事皆关乎DNS

  • 用来管理 Kong API网关Konga,是一个开源UI平台。它曾在往期技术雷达中位于试验环。我们的团队喜欢它快捷的配置和丰富的功能,因为这可以使团队能轻松地试验和试用配置。另外它是开源的,这使团队不必担心软件使用许可成本。

  • Milvus 2.0 是一个云原生的开源向量数据库,用于检索和管理由机器学习模型和神经网络所生成的嵌入向量。它支持多种向量索引,以供对音频、视频、图像或其他任意非结构性数据的嵌入向量进行近似最近邻(ANN)搜索。如果有相似性搜索方面的需求,我们推荐对Milvus 2.0这款相对较新的数据库进行评估。

  • 我们很少在技术雷达中讨论商用软件,更不用说银行核心平台了。然而,讨论Thought Machine Vault(与Thoughtworks没有任何关系)却是一次破例。这个产品旨在支持良好的软件工程实践,比如测试驱动开发、持续交付和基础设施即代码。开发者通过在Vault里用Python编写智能合约,来定义银行产品。这与通过GUI或专属配置文件或两者兼有,来实现定制化的标准无代码方式截然不同。因为产品是用常规的Python代码定义的,因此开发者可以使用一系列工具,包括测试框架和版本控制工具,以此来确保工作是安全而准确的。我们希望更多的金融服务平台的设计,能像上面那样多考虑提升开发者的效率。

  • 具备双时态图查询的开源文档数据库 XTDB ,每条记录都原生支持两个时间轴:valid time时间轴(涉及事实发生时间),以及 transaction time时间轴(涉及事实被数据库处理和记录的时间)。在很多场景中,支持双时态都是有益的,比如当进行用于执行时间感知查询的分析型用例的设计时,当审计事实的历史变化时,当支持分布式数据架构以保证时间点查询的全局一致性时(例如数据网格,当保持数据不变性时,等等。XTDB 以文档形式获取信息,而信息用可扩展数据表示法 (EDN,是 Clojure 语言的一个子集) 格式表示。 XTDB 支持图和 SQL 查询,并可通过 REST API 层和 Kafka 连接等模块进行扩展。我们很高兴地看到, XTDB 的采用率有所增长,另外它也增加了对事务和 SQL 的支持。

暂缓 ?

 
新建
移进/移出
没有变化

无法找到需要的信息?

 

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

无法找到需要的信息?

 

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

Radar

下载第25期技术雷达

 

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

Radar

获取最新技术洞见

 

立即订阅

查看存档并阅读往期内容