DZone>Web Dev Zone>从Heroku迁移到Render
从Heroku迁移到Render
从Heroku迁移到Render有多难?在这篇文章中,请跟随一步步的过程,只花了大约10分钟。
-
五月。13, 22 - Web Dev Zone -教程
喜欢 (1)
评论
保存
鸣叫
409次浏览
加入DZone社区,获得完整的会员体验。
不时有一些词或短语被我反复听到,以至于我最终想到,"嗯,我应该去看看这个"。渲染就是这些词之一。
在Twitter上,我看到各种对话,人们想从Heroku迁移到其他服务。人们提出的一些问题包括。
-
成本
-
缺少持久性存储的选择
-
对于托管静态网站来说并不理想
-
最近的产品开发速度放缓
在其中一些对话中,我看到了这样一个问题:"那Render呢?"
那么,Render怎么样?从Heroku转移到Render有多难?我想弄清楚。我从一个部署在Heroku上的简单网络应用开始,经历了将其迁移到Render的过程。总的来说,我花了大约10分钟。在这篇文章中,我将介绍一下我所采取的步骤。
你只需要一个GitHub账户就可以开始了。
我的Node.js应用程序的简要概述
目前,我有一个简单的Node.js应用程序在Heroku上运行。我还安装了Heroku Postgres和Heroku Redis作为该应用的附加组件。
这个应用程序很简单。当我向/countries 发送GET请求时,我得到一个响应体,告诉我数据的来源(数据库或缓存),并给我一个国家的列表。
还有一个端点(/clear_cache ),我可以用POST请求来清除Redis的缓存。
第1步:在Render中设置我们的应用程序
首先,去render.com,登录或用GitHub注册。一旦你登录了,点击顶部栏中你的账户头像旁边的 "新建"按钮。然后,选择网络服务。
接下来,选择你要部署的GitHub仓库。为你的应用程序提供一个名称,并给它适当的启动命令。对于这个演示,由于这是一个Node.js项目,我的应用程序被设置为运行npm install 和npm start 。
在这里也选择免费计划。就目前而言,这足以满足我们的演示需求。当你的应用程序规模扩大时,你可以随时升级你的计划。
第2步:在Render上设置Postgres
在Render上设置Postgres很简单。同样,在顶部的菜单栏中,你所要做的就是点击新建,然后点击PostgreSQL。
接下来,为你的Postgres数据库提供一个名称。在这个演示中,我保留了其余的默认值,而且我选择了免费计划。
然后,点击创建数据库。
你会看到下面有一个配置环境变量的步骤,但我们稍后会回来讨论这个问题。现在,我们将继续设置Redis。
第3步:在Render上设置Redis
Redis是一个快速而灵活的键值存储,我们将在我们的演示应用程序中使用它来进行缓存。不断地查询数据库会变得很昂贵,特别是当你的应用程序扩展时。当随后的查询返回相同的结果时,缓存这些结果以防止对数据库的不必要的点击是有意义的。Redis让我们做到这一点。
直到最近,Render还没有提供一个可管理的Redis服务。你必须自己在其他地方托管Redis,但好消息是:在几个月的早期访问可用性之后,Render最近发布了其管理的Redis服务,其中包括一个免费层
所以,就像以前一样,点击新建,从下拉菜单中选择Redis。请确保命名你的Redis实例,选择免费计划,然后点击创建Redis。
现在Redis和Postgres都设置好了,我们可以继续设置我们的环境变量。
第4步:配置环境变量
我们的网络应用依赖于某些环境变量。特别是,我们希望能够灵活地指定Postgres数据库的位置和Redis的位置,而不是把这些位置硬塞进代码中。让我们来看看如何在Render中指定这些环境变量。
进入你的仪表板,点击你在第一步创建的网络服务。
在页面上的子导航菜单中点击环境。
现在,你可以选择创建附属于网络服务的单个环境变量,或者你可以创建一个环境组并将其附属于你的网络服务。对于我们的应用来说,这两种方法都可以很好地工作。
我们需要创建这些环境变量。
-
DATABASE_URL:将其设置为你在步骤2中设置的Postgres实例的配置页面中的内部连接字符串值。 -
REDIS_URL:将其设置为你在步骤3中设置的Redis实例的配置页面中的内部连接字符串值。 -
NODE_ENV:将此设置为生产。
你的网络服务的环境变量应该类似于以下内容。
测试我们的应用程序
设置好环境变量后,我们可以测试我们的应用程序。我使用curl 命令来向我的Render应用程序发送请求。
首先,我们发送一个GET 请求到https://redis-postgres-demo.onrender.com/countries 。在我的终端窗口中,该命令看起来像这样。
curl -X GET https://redis-postgres-demo.onrender.com/countries |
这是我收到的响应。
源描述了我们从哪里获得数据,而数据只是所有的国家。我们可以从上面的响应中看到,对于这第一个请求,数据的来源是数据库。
接下来,我们向同一个端点发送第二个GET 请求。响应如下。
正如预期的那样,第二个请求的数据来源是Redis缓存而不是数据库。
接下来,我们发送一个POST 请求来清除缓存。
curl -X POST https://redis-postgres-demo.onrender.com/clear_cache |
清除缓存后,我们再发送一个GET 请求,以检索我们的国家名单。正如预期的那样,由于没有缓存可供利用,返回的数据来源是数据库。
就这样,我们的小程序已经被无缝地移植到了Render。Render使设置Postgres和Redis的工作变得轻而易举。
结论
总之,我们有一个运行在Heroku上的应用程序,使用Postgres和Redis。通过简单地将我们的GitHub账户连接到Render,我们就能够使用Render来。
-
部署我们的Web服务
-
设置Postgres和Redis
-
设置环境变量,将我们的Web服务指向我们的Postgres数据库和Redis实例。
我们只需点击几下,就完成了这一切,时间大约是冲泡一壶咖啡的时间。
那么,让我们回到最初的问题。如果你想从Heroku迁移出去,你可能会问,"那Render呢?"我想说,这绝对值得考虑。
这里有一段视频,介绍了我的整个过程。
数据库 应用 Redis(公司) PostgreSQL 网络服务
经Benjamin Patton许可发表于DZone。点击这里查看原文。
DZone贡献者所表达的观点属于他们自己。
DZone上的热门文章
评论