前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >英国卫报基于 Serverless、React 和 GraphQL 构建内容协作工具 Pinboard

英国卫报基于 Serverless、React 和 GraphQL 构建内容协作工具 Pinboard

作者头像
深度学习与Python
发布2024-03-18 19:34:16
560
发布2024-03-18 19:34:16
举报

作者 | Rafal Gancarz

译者 | 明知山

策划 | Tina

英国卫报创建了一个讨论和资产共享工具 Pinboard ,并将其整合到公司使用的各种内容管理平台中。该解决方案使用了一系列技术,包括用于编写业务逻辑的 Typescript、用于执行代码的无服务器服务、API 端点和 GraphQL 服务器,以及用于存储的 AWS RDS(PostgreSQL)。

卫报在制作内容时使用了许多编辑工具,包括 Composer(内容管理系统)和 Grid(图像资产管理系统)。卫报高级软件工程师 Tom Richards 解释了为新闻编辑部创建协作工具的必要性:

在过去的几年里,新闻编辑部的许多数字沟通都是通过电子邮件和聊天进行的。问题在于,考虑到新闻日程的快节奏,在我们的编辑工具之外这样做可能会导致混淆和错误。与此同时,人们普遍认为,在制作过程中提前准备资产(图像和视频)对产出作品更有益。

为了满足编辑人员的需求,一个小团队一直在开发一个工具,该工具将与现有的基于 Web 的工具紧密集成,提供消息传递和资产共享功能。目标是在不创建新的独立工具的情况下将协作功能嵌入到现有工具集中,让编辑可以在生产内容项的上下文之上进行协作。

Pinboard 使用 TypeScript 编写客户端、服务器和基础设施代码。客户端应用程序是用 Preact 和 Emotion 创建的,并使用 Webpack 进行打包。它使用 Apollo 作为 GraphQL 客户端库。在服务器端,使用 AWS Lambda 执行所有业务逻辑,使用 AWS RDS for PostgreSQL 存储用户和项目数据。AWS AppSync,AWS 的托管 GraphQL 服务,用于抽象化各种数据源,包括 Postgres 数据库和其他系统。AWS CDK 和一个 自定义 CDK 包装器 用于基础设施配置,esbuild 用于构建。

Pinboard 的架构(来源:卫报工程博客)

Pinboard 的架构在很大程度上依赖于无服务器组件,Lambda 函数充当了各种不同的角色,包括为嵌入到编辑工具中的客户端应用提供服务、提供 AppSync 解析器、提供电子邮件(使用 SES)和网络推送通知、数据同步和身份验证。

Pinboard 使用 GraphQL 获取和聚合来自多个数据源的数据,避免编写自定义数据聚合层,并充当 API 的适配器门面。GraphQL 不仅支持 查询,还支持 mutation,这些是用于添加 / 修改数据的操作,因此由 GraphQL 服务器按顺序执行,而不是像查询那样并行执行。

GraphQL 提供的第三种操作类型是 GraphQL 订阅,客户端维护与 GraphQL 服务器的长时间连接(通常通过 WebSocket),接收关于后端数据变化的实时通知。AppSync 支持所有这三种 GraphQL 操作类型,并提供了定义订阅服务器端过滤器和订阅失效的能力。它还支持 Pub/Sub API,支持通过 WebSocket 进行 异步消息传递。

AWS AppSync 概览(来源:AWS AppSync 网站)

通过一些内部推广,Pinboard 在卫报内部得到了广泛的采用。开发团队正在努力提供新功能,包括交换编辑文章注释的能力,避免注释被意外添加到正文中而被发布,以及改进的制作 / 增强图像的工作流,用以取代基于电子邮件和附件的工作流。

查看英文原文

https://www.infoq.com/news/2024/03/guardian-pinboard-serverless/

声明:本文为 InfoQ 翻译,未经许可禁止转载。

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

本文分享自 InfoQ 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
多因子身份认证
多因子身份认证(Multi-factor Authentication Service,MFAS)的目的是建立一个多层次的防御体系,通过结合两种或三种认证因子(基于记忆的/基于持有物的/基于生物特征的认证因子)验证访问者的身份,使系统或资源更加安全。攻击者即使破解单一因子(如口令、人脸),应用的安全依然可以得到保障。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com