一起聊聊 Supabase 如何构建其平台工程策略

简介: 【9月更文挑战第4天】Supabase 是一家开源 PostgreSQL 数据库基础设施提供商,被视为 Google Firebase 的替代方案。该公司采用不断演进的平台工程策略,为其开发团队提供高效的应用开发工具。自2020年起运营的 Supabase 通过整合与自动化内部开发平台,显著提升了生产力。平台工程师 Samuel Rose 加入后,进一步正式化和扩展了这一策略,结合自有产品与行业标准工具,实现了更高效的开发流程。目前,Supabase 的平台工程成果显著,为开发者提供了更好的自助服务和支持。

Supabase 分享其平台工程经验和见解,因为它进一步完善和构建其开源 PostgreSQL 数据库基础设施应用程序,该应用程序与 Google 的 Firebase 竞争。

译自How Supabase Is Building Its Platform Engineering Strategy,作者 Todd R Weiss。

平台工程不是终点,而是一个不断改进、创新和实验的演进过程,旨在为开发团队提供一致、经过测试且高效的应用程序开发工具。这是大多数公司开始其平台工程策略时的计划,也是开源PostgreSQL数据库基础设施应用程序供应商Supabase的持续工作方式。

Supabase 自称为Google 移动和 Web 应用程序开发平台 Firebase 的开源替代方案,几年前就开始使用平台工程。该项目始于公司意识到,为其大约 50 名开发人员构建自己的内部开发平台 (IDP)将使公司能够整合、标准化和自动化其开发应用程序,从而提高团队的生产力、代码质量和其他优势。Supabase 自 2020 年开始运营。

“它随着时间的推移而不断发展,”Supabase 的平台工程师Samuel Rose在 2024 年 2 月加入公司后告诉 The New Stack。“他们已经做了一些类似的事情,并且 [开始] 将每个人都在做的事情正式化,将其转变为一个角色,我们可以在整个公司中对此负责。”

“Supabase 一直采用不断发展的平台工程方法,但我被聘用是为了在整个组织中将其正式化并扩展,”Rose 说。“我们将继续每周对其进行改进,并且已经在公司不断发展的平台工程策略中取得了巨大进展。”

Rose 说,公司的平台工程项目源于许多团队的 IT 管理员和开发人员共同努力,为他们的工作创建平台工程方法。“需求越来越大,以至于 Supabase 需要至少聘用一名全职人员来推动它向前发展,”这就是他加入公司的原因。

Rose 解释说,导致这些决定的因素是 Supabase 不断增长的客户群以及在管理构建、测试和发布流程方面不断增长的技术复杂性。他还补充说,公司“希望在我们的内部平台上使用和利用我们的产品,只要它有意义”。

“我在这个行业工作了 20 多年,”Rose 说。“Supabase 四年前成立,在经过四年的工作和扩展之后,这家公司现在成长到满足这些需求是相当自然的。在 Supabase,我们使用自己的产品,并将我们的一些组件作为工具用于我们的内部平台。”

Supabase 并没有从头开始构建和创建其平台工程策略。相反,它从预先构建的平台工程工具推荐开始,这些工具来自Cloud Native Computing Foundation (CNCF)等组织的示例云原生景观概述,Rose 补充道。

“我们的平台与那些平台工程方法非常吻合,”他说。“但我们在平台中使用了一些我们自己的产品,包括我们自己的 API 和以 Postgres 为中心的开发,”而不是使用预构建推荐网格中提供的一些现成或软件即服务组件。

这种定制的平台工程方法非常适合 Supabase,使公司能够将内部工具与其他行业标准工具结合起来构建应用程序。

“主要目标是将我们正在使用的现有构建块用于平台工程,并将它们整合、自动化,并为每个人提供更坚实的基础,”Rose 说。“这并不是一种非常传统的平台工程方法,但它非常适合公司。它随着时间的推移而不断发展。”

Rose 表示,为了实现这一目标,Supabase 目前正在围绕某些标准和某些工具进行整合。

“有时人们谈论平台工程时,他们指的是采用整个平台,这实际上就像其他人编写的某种软件,并将所有东西都放在里面,就像一头扎进游泳池的最底部,”Rose 说。“我们并没有真正这样做。我们 [也使用] 我们自己的工具。” Rose 说,这些平台工程工作是 Supabase 开发工作和流程的自然产物。“所以,他们很容易看到这种需求——在我参与之前,他们就开始着手这项工作。我一直与他们合作,我们……将它变成了现实,就做你所说的平台工程而言,它已经进入生产阶段。它还在进行中。”

Supabase 内部开发者平台包含什么

为了给开发者提供构建 Supabase 应用所需的工具,该公司的 IT 管理员围绕少量开发应用构建了他们的平台工程平台。

Rose 说:“我们尽量节俭,这样就不会造成 [问题],因为如果你不断地往篮子里扔工具,你最终就需要管理所有这些工具。”“所以,我们在这方面很谨慎。我们大约有五到七种主要的组件,我们尽量整合和利用尽可能多的现有系统。”

Supabase 的 IDP 中包含的工具包括:

  • 开发者控制平面: Supabase 利用内部维基、GitHub、Terraform和Pulumi。该公司还使用基于Docker的自定义工具和其他相关工具在本地运行其平台,以及其 SaaS 后端即服务产品,该产品也可以在本地运行。
  • 集成平面: Supabase 使用 GitHub Actions、Nix 包管理器/Debian 包、Docker、Amazon S3 和自托管的 Nix 二进制缓存。此外,它还使用 Humanitec 的平台编排器和内部自定义应用程序。
  • 安全平面: Web 应用防火墙 (WAF)、AWSGuardDuty、Google云平台入侵检测系统 (IDS)、AWS Secrets Manager、AWS EC2 Instance Connect 和其自身工具(在某些情况下)。
  • 监控和日志记录平面: Vector、Sentry、BigQuery、VictoriaMetrics 和其自身的Logflare 工具。
  • 资源平面: Supabase 主要使用 AWS 和 GCP 平台中内置的工具,以及战略性地使用其自身产品来管理元数据、集群等。

到目前为止,其平台工程工作的结果对 Supabase 来说很有希望。

Rose 说:“其中一件事是,它为我们提供了一种途径来管理为客户提供更好的 Postgres 新版本。”“我们团队内部的人员可以 [创建] 他们所谓的确定性构建,他们可以构建一次,就不需要再构建了。这是我们正在为平台工程创建的新平台的一部分。[你] 可以反复使用它,除非你改变了什么,所以它可以减少构建时间,并有助于确保系统之间可重复。过去,这很难做到。”

Rose 解释说,通过使用 IDP,开发者可以专注于他们的代码,完成他们的工作,然后继续进行下一个项目,而不必花费宝贵的时间来配置、收集和维护他们的开发工具。“我们已经到了很多开发者可以自助服务他们大部分需求的阶段,同时拥有对监控和测试的安全访问权限,并支持生产部署。”

相关文章
|
2月前
|
Rust 前端开发 JavaScript
低代码使用问题之Supabase是什么,支持哪些客户端库
低代码使用问题之Supabase是什么,支持哪些客户端库
|
2月前
|
JSON Go API
go项目实现通过配置文件进行配置项统一管理
go项目实现通过配置文件进行配置项统一管理
18 0
|
4月前
|
存储
LabVIEW使用VI Package Manager(VIPM)下载和管理附加组件
LabVIEW使用VI Package Manager(VIPM)下载和管理附加组件
187 1
|
4月前
|
弹性计算 缓存 运维
Serverless 应用引擎产品使用之在阿里云函数计算中发现没有NAC(Native Application Component)选项,且无法自己上传MOD(模块)如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
4月前
|
运维 Kubernetes 前端开发
云效产品使用报错问题之部署主机上的globalParams.sh中变量的值是base64编码过的,如何解决
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。
|
4月前
|
数据可视化 IDE 开发工具
CodeWave智能开发平台--03--目标:应用创建--01模板创建依赖问题修改
CodeWave智能开发平台--03--目标:应用创建--01模板创建依赖问题修改
|
SQL 机器学习/深度学习 安全
将DAST集成到CI/CD管道中的优势和实施步骤
将DAST集成到CI/CD管道中的优势和实施步骤
134 0
|
测试技术 API PHP
php对接小鹅通API开发高级实战案例解析:小鹅通实战开发之合并用户user_id批量同步
php对接小鹅通API开发高级实战案例解析:小鹅通实战开发之合并用户user_id批量同步
241 0
|
Kubernetes 容器
开发 k8s 管理平台 - k8sailor 02. 使用 cobra 初始化程序命令与参数
开发 k8s 管理平台 - k8sailor 02. 使用 cobra 初始化程序命令与参数
146 0
开发 k8s 管理平台 - k8sailor 02. 使用 cobra 初始化程序命令与参数
|
Unix Android开发 开发工具
RK3399平台开发系列讲解(系统篇)1.10、 安卓系统中启动init.rc文件格式介绍
RK3399平台开发系列讲解(系统篇)1.10、 安卓系统中启动init.rc文件格式介绍
97 0