首页 > 解决方案 > 我如何为我的工作部署这个应用程序:EC2、Elastic Beanstalk,完全是其他东西?

问题描述

我的任务是为我的工作创建一个网络应用程序(我认为?),它将跟踪我们系统中的某些内容。这将是一种内部工具,员工可以使用它来跟踪我们所做的一件事情的状态。它应该看起来像 trello,卡片可以一步一步地拖动。该前端存在,但我的工作是在拖动卡片时使系统更新。这需要在 Python 中使用 API,并且获取/更新并不复杂。我不知道如何将所有这些放在一起。我的工作几乎完全是非技术性的,除了我自己,内部没有人知道我在做什么。我在这里太忙了,不知道从哪里开始。这是我应该在 Elastic Beanstalk 上部署的东西吗?EC2?我如何将它绑在一起并放在某个地方?

标签: pythonamazon-web-servicesdeploymentweb-applications

解决方案


您应该做的第一件事是尽可能多地收集有关最终产品外观的信息。从你的问题来看,我感觉你对利益相关者想要什么只有一个模糊的概念。不要害怕就不清楚的任务要求更多的说明。最好花 30 分钟讨论和记录,而不是在一个月后展示最终产品并意识到这不是你的老板/团队想要的。

我会问的问题

  • 谁将使用这个应用程序?(技术人员或非技术人员)
  • 这是为了什么目的而开发的?
  • 它需要在网络上还是可以在本地使用?
  • 有多少用户需要访问此应用程序?
  • 我们是否使用此应用程序处理敏感信息?
  • 这是否需要在某些时候增加其他功能?

这只是我要问的一个示例,在与利益相关者的对话中,肯定会弹出更多内容。

我认为你必须做的

您需要为需要由您的开发团队完成的任务(如看板)建立一个监控系统看板

我认为你已经拥有的

  • 带有可拖动到每个 bin 的卡片的前端。我还假设您可以在前端创建一张新卡并删除一张。前端很可能是用ReactAngularVue.js 编写的。您可能也没有前端框架(jQuery 和 vanilla js 的混合体),但通常前端开发人员最终会选择某种框架来帮助开发。
  • Python 中的后端 API(最有可能在FlaskDjango-rest-framework中)与 SQL 数据库(如postgresql )或文档数据库(如MongoDB )进行通信。

我在这里做了很多假设,但您的目标应该是了解您将使用的技术,以便检查哪种托管最适合。例如,如果设置的数据库是 MySQL 数据库,您可能会遇到一些托管服务提供商的问题。

我认为你错过了什么

目前前端和后端不相互通信。当您拖动卡片时,如果您刷新页面,它将不会持续存在。此外,所有这些都位于您的计算机中,您的员工中的任何人都无法使用。您需要先将前端与后端连接起来,以使应用程序具有持久性。然后,您需要将此应用程序部署到某个地方,以便您的员工可以访问它。

我要做的是首先在本地工作以确保持久层正常工作。这意味着在您的计算机上同时运行 API 服务器、前端服务器和数据库服务器进行开发。然后,您应该从 API 获取数据以了解数据库中存在哪些卡片,然后在前端的正确位置以可视方式创建它们。当您在拖动卡片后将卡片放到新位置时,它应该会触发对 API 服务器的 POST 请求,以更新此特定卡片的状态(查看 API 文档以检查您需要发送的内容)。如果 POST 请求成功,服务器应该发回卡片状态的更新版本,因此您的应用程序应该在正确的位置重新绘制卡片(它不会这就是我为那部分所做的一切

然后我将进入部署阶段,以确保您在本地执行的任何操作仍然可以在线工作。我会使用Heroku开始,而不是直接跳到 AWS。Heroku 是建立在 AWS 之上的服务,它为您管理 AWS 的许多复杂性。这对于原型设计非常有用,这意味着当您的东西准备就绪时,您可以轻松迁移到 AWS,并确信存在使您的应用程序正常工作的设置。您可能还与您的公司服务器相关联,这是我会问利益相关者的另一件事(即我可以将这个应用程序放在哪里,我不能把它放在哪里)。

Heroku 上的前端 + api + 数据库应用程序的流程通常如下所示。您为您的前端创建一个 github 存储库(将其设为私有)并在 Heroku 上创建一个应用程序,该应用程序将监视此存储库的更改。当它看到 Heroku 托管的特定子域发生更改时,它将为您重新部署应用程序。您需要配置一些procfiles来告诉 Heroku 如何处理给定的应用程序类型。这是您需要仔细检查您使用的前端的地方,因为这可能会更改使用的 procfiles。它很可能是基于 node.js 的前端(React、Angular 或 Vue),因此请前往此处获取有关如何将其放到网上的文档。

您还需要为后端创建一个与前端分开的 repo,这两个实体是不同的,它们仅通过 HTTP 请求(前端->后端)和 JSON(后端->前端)进行通信。您需要遵循与部署前端相同的想法,前往此处

一旦你有这两个在线,你需要在 Heroku 上创建一个数据库。这是通过将数据存储添加到您的 api 来完成的,请前往此处。您需要进行一些特定于框架的配置才能使 API 与在线数据库通信,但随后您需要在框架文档中找到该配置。数据库也可能已经启动并存在于您的服务器上,如果是这种情况,您只需配置您的在线后端以与特定地址的特定数据库通信。

完成上述所有操作后,重新测试您的应用程序以检查您是否获得与以前相同的行为。这是一个可用的 MVP,但是没有安全层。任何拥有正确 URL 的人都可以获取您的前端并开始处理您的数据。

需要做更多的工程才能使其成为可行的最终产品。这引出了我的最后一句话:为什么你不使用像 Trello、Jira 甚至 Github Project 这样的产品?如果要在不支付订阅费的情况下节省一些钱,我认为您应该考虑此应用程序的开发、安全和维护成本。

希望能帮助到你!


推荐阅读