Heroku 与 PaaS
heroku;快速原型部署。
25 分钟
Heroku 与 PaaS
Heroku 是经典 PaaS:git push heroku main 触发构建与发布,Dyno 跑进程,Add-on 挂 Postgres、Redis、监控——开发者几乎不碰 OS 与补丁。2022 后 Salesforce 调整免费层,但 原型与教学 仍常提到 Heroku 作为 PaaS 思维样本。
学习目标
- 说清 PaaS 相对 IaaS 的责任边界
- 理解 Buildpack / Container 两种发布路径
- 对比 Heroku、GCP Cloud Run、DO App Platform、AWS Elastic Beanstalk
PaaS 心智模型
你提供 → 代码、Procfile/启动命令、环境变量、Add-on 选型
平台提供 → 构建、路由、日志聚合、水平伸缩、补丁
与 dc-intro 的 SaaS/PaaS/IaaS 表一致:越往上,Infra 越不可见。
核心概念
| 概念 | 说明 |
|---|---|
| Dyno | 运行容器/进程的单元,可 scale 数量 |
| Buildpack | 自动检测语言并打包(Java、Node 等) |
| Add-on | 托管 Postgres、Redis、Papertrail 等 |
| Config Vars | 环境变量;密钥应走平台 Secret,见 dc-secrets |
Container 模式:也可 heroku container:push 推 OCI 镜像——与 Cloud Run「只关心镜像」更接近。
何时用 PaaS
- Hackathon、Demo、内部工具:最快路径
- 团队无专职 SRE:接受平台限制换速度
- 流量可预测且中等:Dyno 账单可估算
何时退出 PaaS:需要自定义内核、复杂网络(多 VPC 对等)、极致成本优化、合规指定 Region——迁到 K8s 或 IaaS(kubernetes-essentials、aws-essentials)。
与 CodeRoadMap
Spring Boot backend 可打 jar + Procfile;platform 若 Next.js 静态导出也可部署。生产级 仍建议容器 + CI(github-actions-essentials)+ 可审查的 IaC(terraform-essentials)。
练习
- 写 Procfile 一行:启动 Spring Boot jar 的命令
- 对比 Heroku Dyno 与 GCP Cloud Run 计费维度(各列两项)
- 列出三条从 Heroku 迁出到 K8s 的必做事项(数据、DNS、Secret)