【问题标题】:how to have multiple deploys from a node app如何从节点应用程序进行多次部署
【发布时间】:2017-10-19 14:35:33
【问题描述】:

我想知道从大型代码库创建多个部署的最佳方法是什么。这个想法是将大 API 划分为微服务(每个都在它自己的服务器/虚拟机中),

第一个想法:我可以简单地为该微服务创建一个只有可用路由的文件夹,但仍然使用“通用”代码库...

我目前最终得到了这个,它是一个在生产中运行的 API(在 heroku 中使用暂存环境及其管道):

我在想我可以有类似的东西:

谁能给我一个很好的参考……从哪里开始?如何将同一基本代码的多个版本推送到服务器?

有关所用技术的更多详细信息,我正在使用:

  • mochachai 用于测试
  • sequelize 用于 mariaDb 建模和访问
  • restify 用于服务器引擎

【问题讨论】:

  • 下面的my answer 有帮助吗?有没有cmets?
  • @esp 不是真的......仍在等待更好的答案:)

标签: node.js heroku deployment


【解决方案1】:

当您将 API 划分为微服务时,您有几个选择:

  1. 通过一些代码重复为所有这些创建完全独立的存储库
  2. 制作完全独立的存储库,但将公共代码共享为 Node 模块
  3. 使用多个微服务创建一个存储库,每个微服务作为自己的节点模块
  4. 使用一个大型代码库创建一个 repo,并使用其中的所需部分构建多个模块
  5. 我相信您可以通过更多方式做到这一点

Node 模块和代码库的数量不匹配会导致一些麻烦,但在某些情况下可能会有一些好处。

在某些情况下,存储库和模块的一对一映射会更容易处理,例如可以将私有 GitHub 存储库直接添加到 package.json 中的依赖项。

如果您想排除一些常见功能,那么您可以通过以下几种方式进行:

  1. npm 支持访问受限的组织、范围包、私有模块和私有范围包。
  2. 您可以托管私有 npm 注册表
  3. 您可以在 GitHub 或 GitLab 或任何其他 git 服务器上托管模块

更多信息见:

有一些不错的框架可以帮助您将代码库拆分为微服务,例如 Seneca:

如果您使用的是 AWS Lambda、Microsoft Azure、IBM OpenWhisk 或 Google Cloud Platform,则在一定程度上使用无服务器:

【讨论】:

    猜你喜欢
    • 2014-10-24
    • 2020-06-28
    • 2015-11-08
    • 2018-09-22
    • 2018-12-26
    • 1970-01-01
    • 2018-02-16
    • 2015-02-28
    • 1970-01-01
    相关资源
    最近更新 更多