首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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

该解决方案使用了一系列技术,包括用于编写业务逻辑的 Typescript、用于执行代码的无服务器服务、API 端点和 GraphQL 服务器,以及用于存储的 AWS RDS(PostgreSQL)。...Pinboard 使用 TypeScript 编写客户端、服务器和基础设施代码。客户端应用程序是用 Preact 和 Emotion 创建的,并使用 Webpack 进行打包。...它使用 Apollo 作为 GraphQL 客户端库。在服务器端,使用 AWS Lambda 执行所有业务逻辑,使用 AWS RDS for PostgreSQL 存储用户和项目数据。...AWS CDK 和一个 自定义 CDK 包装器 用于基础设施配置,esbuild 用于构建。...Pinboard 使用 GraphQL 获取和聚合来自多个数据源的数据,避免编写自定义数据聚合层,并充当 API 的适配器门面。

8910
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    基础设施即代码的历史与未来

    我们不定义这些东西将在哪些主机上执行,以及如何配置这些主机——我们只关心正确使用云供应商提供的托管服务。 然而,它与 Ansible 共同的地方是它们都具有声明式的特性。...这是为了连接 SQS 和 Lambda 而需要的“粘合剂”,正确配置这些“粘合剂”资源并不容易。...例如,让我们来看一个与上述 CloudFormation 模板等效的 Cloud Development Kit(CDK) 程序(本例中我将使用 TypeScript ,但任何其他受 CDK 支持的语言看起来都非常相似...注意到如何从队列触发函数的细节是通过 addEventSource() 方法和 SqsEventSource 类优雅地封装的。...由于双方都使用托管服务的语言进行交流,我在应用程序代码中想要使用的任何资源都需要在基础设施代码中存在,就像我们在 Lambda 和 SQS 示例中看到的那样。 因此,这些工具将两者统一起来。

    24810

    蜂窝架构:一种云端高可用性架构

    你的应用程序可能由五种不同的微服务组成,运行在 Kubernetes、AWS Lambda 和 EC2 等平台上。...单元注册表的最后一个组件是一个小型的 TypeScript 库,它知道如何从 S3 检索这些数据,并将其转换成 TypeScript 对象。...它应该包含用于识别用户的最基本的逻辑(根据请求中的一些信息),确定应该将流量路由到哪个单元,然后相应地代理或重定向请求。...图 11:CloudFormation JSON 与 CDK TypeScript 使用编程语言,比如 TypeScript,来表达基础设施的另一个好处是,我们可以将 npm 库作为依赖项。...对于入站权限,我们可以循环遍历注册表中所有开发人员和单元账户,并使用 CDK 授予适当的角色。在向单元注册表添加新账户时,自动化机制会自动设置正确的权限。

    20910

    使用 AWS CDK Python 从零开始构建 EKS 集群

    前言 上篇文章《AWS CDK | IaC 何必只用 Yaml》笔者介绍了 AWS CDK 的概念和基本使用方法,本篇文章就来使用 CDK 在 AWS 从零开始构建一个全新的 KES 集群,实际感受一下使用...cidr='10.3.0.0/16', # CIDR max_azs=3, # 跨3个AZ nat_gateways=1 # 新建一个 NAT Gateway ) 还有很多其他参数可以配置...结语 非常感谢来自 AWS 的 @pahud[1] 同学的指导和帮助,总体来说 Python 版本的 CDK 使用起来比较方便,但文档和源码中的说明略有不足。...AWS CDK 的核心引擎其实是使用 Typescript 编写,其他语言的版本都是采用 JSii[2] 通过 TypeScript 转化而来。...如果要深入使用,这里还是推荐使用 Typescript 的版本(其实我已经换成 Typescript 来写了),难度不是很大,值得一试。

    1.9K10

    AWS CDK | IaC 何必只用 Yaml

    Declarative IaC Imperative 和 Declarative 也就是命令式和声明式的 IaC,他们的不同点在于命令式的 IaC 是由代码编写者来确定如何达到自己想要目的的,如:我需要一个创建...如何破解 YAML 地狱?...比如我之前介绍过的 Grabana 就是采用这种模式,使用 Golang 来生成 Grafana Dashboard 配置并部署,详见:《Grabana:使用 Golang 或 Yaml 生成 Grafana...AWS CDK AWS Cloud Development Kit(AWS CDK) 是 AWS 开发的一种开源软件开发框架,可以使用 Python 或 Typescript 之类的编程语言,利用函数快速构建代码框架...结语 如果你是 AWS 用户,推荐可以尝试使用 AWS CDK,无论是使用体验还是开发速度都十分突出,只需不到 100 行的代码,就可以生成 上千行 CloudFormation 配置,随着基础设施越来越复杂

    2K20

    成员网研会:用cdk8s结束YAML工程!(视频+PDF)

    ,用于使用熟悉的编程语言定义Kubernetes应用程序和资源。...随着应用程序的发展和团队的成长,这些YAML文件变得越来越难以管理。通过配置文件重用和创建抽象也非常困难——从以前的项目复制和粘贴并不是解决方案!...在这个网络研讨会上,cdk8s的创建者向你展示了如何定义你的第一个cdk8s应用程序、定义称为“construct”的可重用组件,以及如何与YAML编写说再见(非常感谢)。...使用支持的语言之一(TypeScript、JavaScript、Python、Java和.NET)为你的笔记本电脑设置你喜欢的开发环境。...视频 PDF https://www.cncf.io/wp-content/uploads/2020/05/cdk8s_CNCF-052020.pdf 参与网络研讨会 CNCF网络研讨会是教育新成员和现有社区成员了解趋势和新技术的好方法

    39110

    后无服务器时代的云计算:目前及未来趋势

    下面作者将通过 AWS 的几个具体示例,展示从 Lambda 函数代码到云构造的过渡: 请求路由: 无需使用 Lambda 解析请求并路由至正确的后端端点,API Gateway 路由即可完成路由操作。...不仅如此,API Gateway 也与其他 AWS 服务集成,无需使用函数而实现对服务的直接调用。 请求验证:API Gateway 可以通过 OpenAPI 验证请求体、查询字符串参数和请求头。...数据转换:API Gateway 可使用阿帕奇 Velocity 模板转换请求和响应数据,从而在不使用 Lambda 的情况下覆写工作负载、参数、请求头及状态码。...像是 Pulumi 和 AWS 云开发者指南(CDK)这类新工具是站在了这股浪潮的前沿,支持 TypeScript、Python、C#、Go 和 Java 的编程语言。...这样一来就需要开发者为开发和拼装云应用程序承担更为广泛的责任,举例来说,Lambda 函数内代码实现的业务逻辑同样需要在 API Gateway 中路由、过滤和配置转换请求。

    18410

    如何在微服务架构中实现安全性?

    每个外部请求都由API Gateway和至少一个服务处理。例 如,考虑getOrderDetails()查询。...首先,我们来谈谈如何验证API客户端,然后介绍如何支持基于登录的客户端。 图 4 显示了APIGateway如何验证来自API客户端的请求。...APIGateway通过向OAuth 2.0授权服务器发出请求来验证API客户端,该服务器返回访问令牌。然后,API Gateway将包含访问令牌的一个或多个请求发送到服务。 ?...APIGateway 向客户端返回访问令牌和刷新令牌。然后,API客户端在向API Gateway发出请求时提供这两个令牌。 ? 图5 客户端通过将其凭据发送到 API Gateway 来登录。...客户端在其对 APIGateway 的请求中包括这些令牌 事件顺序如下: 1. 基于登录的客户端将其凭据发送到 API Gateway。 2.

    4.9K30

    Spring Cloud Zuul 综合使用

    Zuul:Pre和Post过滤器 目前我们项目的架构图: ? 从上图中可以看到,Zuul是我们整个系统的入口。当我们有参数校验的需求时,我们就可以利用Zuul的Pre过滤器,进行参数的校验。...例如我现在希望请求都一律带上token参数,否则拒绝请求。...带上token参数再测试一下,请求成功: ? 从以上的示例中,可以看到利用Pre可以对请求进行一些预处理。如果希望在请求处理完成后,对返回的数据进行处理的话。...需要注意的是,用于限流的过滤器应该在请求被转发之前调用,常见的限流算法有计数器、漏铜和令×××桶算法。 令×××桶算法示意图: ?...,以及在Zuul上做限流,接下来我们看看如何通过Zuul实现鉴权。

    41220

    SpringCloud升级之路2020.0.x版-41. SpringCloudGateway 基本流程讲解(1)

    由于 Spring Cloud Gateway 基于 Spring-Boot 和 Spring-Webflux 实现,所以我们会从外层 WebFilter 开始说明,然后分析如何走到 Spring Cloud...Gateway 的封装逻辑,以及 Spring Cloud Gateway 包含的组件,请求是如何转发出去,回来后又经过了哪些处理,这些我们都会逐一分析。...SpringApplication.run(Application.class, args); } } 启动,访问路径: http://127.0.0.1:8181/test-ss/anything,可以看到请求被发送到... handle(ServerWebExchange exchange); } 但是最外层传进来的参数是 request 和 response,需要将他们封装成 ServerWebExchange...HttpWebHandlerAdapter 其实主要任务就是将各种参数封装成 ServerWebExchange(除了和本次请求相关的 request 和 response,还有会话管理器 SessionManager

    67820

    我们的虚拟化变革之旅

    KubeVirt 还提供虚拟化 API,允许创建虚拟设备和驱动程序,使用户能够配置和自定义虚拟机以满足其特定需求。...CDK8s(Kubernetes 云开发套件)——一种开源软件开发框架,使开发人员能够使用熟悉的编程语言(如 TypeScript、Python 和 Java)定义 Kubernetes 资源。...声明式配置:ArgoCD 允许用户使用 YAML 文件定义 Kubernetes 资源的所需状态,从而实现声明式配置管理。...我们还可以使用ArgoCD的声明式配置管理来简化复杂Kubernetes环境的管理,从而更轻松地管理跨多个集群的配置。...它使您能够使用声明性语法轻松定义、路由和过滤事件。借助 Argo Events,您可以创建事件驱动的工作流程来执行各种任务,例如运行作业、部署应用程序或发送通知。

    12610

    用于Web爬虫解决方案的无服务器体系结构

    image.png * AWS Lambda免费使用层包括每月100万个免费请求和每月40万GB-秒的计算时间。查看AWS Lambda定价。...触发后,AWS Batch将从Amazon ECR获取预构建的Docker映像,并在预定义的环境中执行它。AWS Batch是一项免费服务,可让您配置任务执行所需的环境和资源。...调度程序启动新任务时,它将使用更新的脚本文件获取新映像。如果您想进一步探索或者想要实际实现这种方法,请查看GitHub上的项目示例。...自动化Lambda函数开发的一种方法是使用 AWS Cloud Development Kit (AWS CDK),这是一个开放源代码软件开发框架,可以使用熟悉的编程语言来建模和配置您的云应用程序资源...最初,设置和学习可能会很费力;但是好处是值得的。举个例子,请看一下GitHub上的这个Python类,它创建一个Lambda函数,一个CloudWatch事件,IAM策略和Lambda层。

    2.6K20

    灵活服务的五大部署技术

    现在可以说,容器给云上软件的部署和管理方式带来了革命性的变化。 服务发现框架 容器给用户带来了灵活性,可以几乎在任何地方运行服务,但是用户仍然需要向这些服务发送请求。...这意味着系统里的某个地方需要知道实现应用程序的容器在哪里运行,以及如何将流量路由到正确的地址和端口上。在RESTful的设计里,这里的需求包括基于第7层内容来路由请求。...哪种方案更适用取决于你当前的代码基和所处的开发阶段。和普通代理不同,发现层涉及更多的服务和基础架构之间的合作,因此每种方案如何支持你已经在使用的语言和工具,这是影响决策的重要因素。...它们填补了单个容器的运行和让很多不同容器运行起来并且一起工作之间的空白,后者包括这些容器如何在特定数量的宿主机上运行,使用特定的网络规则,自动扩展参数,访问存储等等。...当和APIGateway搭配使用时,可以用来在零基础架构的环境里部署整个微服务的实现。

    1.3K120

    Python 和 CDK的aws-route53那些事

    CDK介绍 1.什么是CDK? CDK,与使用 YAML(或 JSON)的声明式方法相比,CDK 允许您命令式声明基础设施。主要语言为 TypeScript,同时也支持另外几种语言。...2.为什么要使用 CDK? 增强基础设施,为了操作awk的接口,对awk的实例等进行操作 3.route53是干啥的?...Route 53 是一种具有很高可用性和可扩展性的域名系统 (DNS) Web 服务。您可以使用 Route 53 以任意组合执行三个主要功能:域注册、DNS 路由和运行状况检查。...如果选择使用 Route 53 来执行所有这三种功能: 1)域名注册 2)将 Internet 流量路由到您的域的资源 3)检查资源的运行状况 如何使用route53 1.安装route53 ## 方法一...添加私有托管区域 enableDnsHostnames和enableDnsSupport必须已为正在为专用托管区域配置的专有网络。

    96530

    Docker容器逃逸

    .dockerenv文件是Docker守护进程的配置文件,它包含了Docker守护进程的运行参数和配置信息。这个文件通常用于配置Docker守护进程的行为,例如容器的网络设置、存储驱动、卷管理等。....core_pattern(核心转储模式)是Linux系统中的一个配置参数,用于定义在程序崩溃时生成核心转储文件的方式和位置。.../cdk-team/CDK/wiki/CDK-Home-CN 如何将CDK上传到容器内部?...该端口可以被Docker守护进程用于接收来自客户端的请求,并与其进行交互和通信。需要注意的是,使用该端口需要确保防火墙设置正确,以避免潜在的安全风险。...wget http://$IP:2375:这个命令使用wget工具向指定的IP地址和端口发送HTTP请求。具体来说,它尝试连接到Docker守护进程的REST API端点,通常默认使用端口2375。

    51930

    Spring Cloud Gateway 没有链路信息,我 TM 人傻了(中)

    Body //之后,使用新的 body 以及原始请求封装成新的请求,继续 GatewayFilters 链路 .map(dataBuffer -> decorate(exchange, dataBuffer...获取请求 Body 是通过 exchange.getRequest().getBody() 获取的,其结果是一个 Flux.请求的 Body 是一次性的,如果你需要请求重试的话,...--log4j2异步日志需要的依赖,所有项目都必须用log4j2和异步日志配置--> com.lmax ...Body //之后,使用新的 body 以及原始请求封装成新的请求,继续 GatewayFilters 链路 .map(dataBuffer -> decorate(exchange...:]: 0 在 Spring Cloud Gateway 中,Request Body 的 FluxReceive 使用的线程池和调用 GatewayFilter 的是同一个线程池,所以可能线程还是同一个

    1K10
    领券