主要观点:Rails 从一开始以高速推进想法而闻名,但如今部署和运行全功能应用像成为火箭科学家。标准 Web 应用架构随时间变得更复杂,如今 Heroku 应用的服务器和服务数量大幅增加。但进步也可以是简化,Rails 8 和 SQLite 可一起将 Rails 变为“一人框架”,实现强大与简单的结合。
关键信息:
- Rails 8 使
rails new
命令具备生产就绪性,新的 Solid 宝石为 Rails 核心数据绑定组件提供生产就绪、灵活且可扩展的默认值。 - Kamal 为生产部署提供新的改进解决方案,可通过 Docker 部署和管理 Web 应用。
- SQLite 是世界上使用最广泛的数据库,虽曾被认为不适合 Web 应用,但通过调整配置和使用,在 Rails 8 中已成为完全可行的生产选项。
- 解决了使用嵌入式数据库在多线程 Web 应用中的两个问题,使 SQLite 在高并发负载下性能大幅提升。
- 用 Campfire 应用和其他现有应用实例证明单机器上运行全功能 Rails 应用的可行性,同时指出运行 SQLite 生产环境时需注意备份机制、迁移和垂直扩展等问题。
重要细节: - Rails 7 中
rails new
的生产默认值在生产环境中存在问题,如异步作业适配器、文件缓存存储等。 - SQLite 运行在 Ruby 线程和进程中,是一个文件和嵌入式可执行文件,虽存储在单个文件中,但可处理高达 281 太字节的数据。
- 解决 SQLite 在 Rails 中默认体验的两个问题的相关 PR 及详细技术内容可在作者博客查看。
- Campfire 应用通过更换适配器用 Rails 8、Solid 宝石和 SQLite 运行,性能与标准版本相当。Ruby Video 应用在单台每月 4 美元的服务器上用 SQLite 运行良好。
- Litestream 是用于 SQLite 的备份工具,可将更新流式传输到存储系统,作者已将其封装为 Ruby 宝石。
- 垂直扩展可通过租用大型服务器实现,如 Hetzner 的 VPS 具有 48 核、192G 内存和 1T NVME SSD 空间,每月费用不超过 350 美元。
- 大多数应用是读重写轻,使用嵌入式数据库能大幅提升性能,在云数据库环境下性能差异更明显。但对于大量写入操作,SQLite 的线性写入可能会影响应用性能。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。