覆盖范围
后端、工作者、数据管道及其周围的 AWS。我们加上 CI/CD 和可观测性,让发布在扩展时仍然无聊。
这是产品团队倚靠的那一层。API、任务、数据、云。我们也接手已有代码库,让它停止崩溃,再往前推。
多数云工作在 AWS — 不是因为幻灯片这么写,而是大量生产已经在那里。我们也跑 Google Cloud 和 Azure。用 Docker 做容器;真正需要编排时用 Kubernetes 和 Helm。不该在控制台里点出来的部分用 Terraform。
CI 是 GitHub Actions 或 GitLab。可观测性是 Prometheus 和 Grafana,账户里已有则用 Datadog 和 Sentry。消息骨干是 Kafka 或 RabbitMQ。按你所处阶段定规模。两人产品不需要服务网格。
- API、工作者和数据管道
- AWS、Google Cloud 和 Azure
- 容器、Kubernetes 和 Terraform
- CI/CD、监控和可应对事故的日志
实际怎么做
- AWS:计算、存储、RDS、Lambda、网络和 IAM,不做表演
- 内部云已是 Google Cloud 或 Azure 时也做
- Docker 镜像、Kubernetes、Helm 和合理的集群规模
- 用 Terraform 让基础设施成为可评审的代码
- GitHub Actions、GitLab CI 或 Jenkins — 用你已有的
- Nginx、Cloudflare、Linux 以及中间那些不起眼的网络
- Postgres、MySQL、Redis、Elasticsearch、Kafka 和 RabbitMQ
- Prometheus、Grafana、Datadog 和 Sentry,好看见生产
- 尚未全部容器化的机群用 Ansible
- 接手已有平台:先稳住,再扩展
我们使用的技术
这些是我们用来交付的工具。为产品和后续维护的团队选,不是为幻灯片选。
云
AWS
Google Cloud
Azure
DigitalOcean
Heroku
Vercel
Cloudflare
平台与交付
Docker
Kubernetes
Helm
Terraform
Ansible
Linux
Nginx
GitHub
GitHub Actions
GitLab
Jenkins
数据与消息
PostgreSQL
MySQL
MongoDB
Redis
Elasticsearch
Apache Kafka
RabbitMQ
Celery
SQLite
观测
Prometheus
Grafana
Datadog
Sentry
放在该平台上的服务
Node.js
Python
Go
Django
FastAPI
NestJS
GraphQL
常听到的问题
- 做 AWS 和已有后端吗?
- 做。新服务和更老的平台。加上 CI/CD 和监控,好看见正在发生什么。
- 能接手已有代码库吗?
- 能。我们审计、稳住,再扩展。重点是你的团队能继续交付。
- 哪些云和工具?
- 多数是 AWS — 计算、存储、数据库、Lambda、网络。内部标准是 Google Cloud 或 Azure 时也做。Docker、Kubernetes、Helm、Terraform、GitHub Actions 或 GitLab、Nginx、Cloudflare、Linux。Postgres、Redis、Kafka、RabbitMQ。Prometheus、Grafana、Datadog、Sentry。我们不会卖给你一套运营不了的平台。

