手把手教你在 Serverless 平台上部署应用
2009 年 10 月 30 日
如今,部署一个三层(表示层、业务逻辑和存储)架构应用程序可能会有些棘手。假设我们有一个简单的 Django 应用程序,即本教程中的 民意投票 应用程序。它在我们的本地计算机上运行完美,我们添加了requirements.txt 来保存该项目的依赖项。至于数据库,由于我们仅在本地开发,因此可以使用SQLite。
本文中,项目的目的是构建一个系统,使我们能够推送分支代码并将更改部署在单独的环境中,为我们提供唯一的URL 进行检查。与 now.sh 和 heroku.com 的功能类似,我们需要一种机制,可以打包我们的代码和依赖项并进行部署,但同时还需要考虑系统的多版本、升级、负载平衡、扩展及数据库状态。
Indroduction
为了实现这一目标,我们需要两个主要组件:一个组件是获取我们的代码并准备将其发布,即 CI/CD 组件,另一个组件将我们的变更发布到互联网,称为服务组件。我们可以添加第三个组件来保持应用程序的某些状态,例如数据库和存储,但是我们将其添加到服务组件中。
Serving component
对于服务组件,我们可以使用 Knative 。它是基于 Kubernetes 的 Serverless 解决方案,并集成了其他一些在 Kubernetes 上构建的组件。从根本上讲,它可以通过 Docker 运行并公开到互联网,而无需繁琐的部署流程。你只需要定义一个描述镜像及其运行环境的服务, Knative 就会处理其他所有事情(从路由、日志记录、监视到应用程序不同版本的管理以及服务自动扩缩容,包括 0 缩放以停止服务使用)。