首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >适合多个开发人员的全堆栈应用程序的开发工作流程?

适合多个开发人员的全堆栈应用程序的开发工作流程?
EN

Software Engineering用户
提问于 2020-02-21 03:05:40
回答 4查看 357关注 0票数 -1

假设我正在开发一个具有以下结构的web应用程序:

  • SPA网络前端(在我的例子中是棱角的)
  • 带有:的Postgresql数据库
    • 需要加载CSV和JSON中的一些初始数据。
    • 一堆cron作业脚本,它们定期从外部源获取数据并将其输入数据库。

  • 一个瘦的‘中间件’web服务器,它为数据库(以及auth)提供了一个GraphQL API。

目前,我开发这个应用程序的所有三个部分分别运行..。我使用角的dev服务器运行前端,将中间件作为独立的进程(使用nodemon)运行,并且我有一个开发数据库,手动运行脚本。

只要我独自工作,它就能“好”,但当我尝试引入其他前端开发人员时,它很快就变得难以管理了(我仍然是唯一的中间件/数据库人员)。例如,我已经将中间件和数据库的实例放在一个所有人都可以访问的开发服务器上。然而,这使我很难进行更改(数据模型和API正在迅速变化),因为它可能会破坏其他人正在做的任何事情。我想我需要能够对api和数据库进行版本化,但我不太清楚如何做到这一点。此外,组件之间的版本偏差可能会出现问题。

我想过的一件事是将中间件和数据库(所有数据都预加载)放入一个码头容器中,让其他前端开发人员使用docker或诸如此类的方式运行它。不过,我不知道这在窗户上能起多大作用。目前,我没有足够的专业知识来经营像库伯奈特斯这样复杂的事情。而且,从长远来看,我不确定我是否想要部署在容器中,因为出于某些原因(可能我有偏见),将数据库放在码头上对我来说是不正确的。

对于正确的开发工作流程和/或项目结构和/或可能有用的产品和服务,有什么建议吗?

EN

回答 4

Software Engineering用户

发布于 2020-02-21 09:32:50

您肯定希望找到一种方法,以便在开发机器上轻松地在本地运行整个解决方案。

你提到“我不确定这在窗户上能起多大作用”。也许您想限制所有的开发人员只使用Linux?这将大大简化事情。然后,您可以拥有一堆bash脚本,这些脚本可以在本地设置用于开发的所有内容。

你提到了码头。Windows上的Docker可以轻松地运行Linux映像。因此,它可以简化本地解决方案的部署和运行。

我建议运行一个实验:完全清除您的开发环境。干净的操作系统安装。查看源代码管理中的代码。在此之后,设置您的开发环境需要多长时间,其中有多少是手工工作?在理想情况下,您应该运行单个批处理脚本,并且它应该设置您的整个环境。它将设置所有的服务,构建源代码,运行自动化测试,甚至可能在整个团队范围内设置合理的默认设置IDE。

票数 0
EN

Software Engineering用户

发布于 2020-02-21 12:43:17

我们一直在使用docker进行开发和测试,而且它工作得很好。与所有的设置/配置脚本一样,坞-组合文件存储在git中,因此每个人都在使用相同的设置。Maven有插件来运行容器,作为自动化集成测试的一部分,这使生活变得更加容易。

注意:一定要指定您正在使用的对接器映像的显式版本;不要只使用“最新”标记。

您不需要在开发过程中考虑kubernetes。

无论您是否使用容器部署生产,都不会影响日常开发:您的软件并不关心网络连接的另一端是否运行在轻量级容器、全虚拟机或裸金属机器中。

不管它的价值如何,我认为您对容器有偏见是出于某种原因;我们已经在带有和没有kubernetes的容器中运行数据库,没有任何问题。数据必须存储在持久卷中,但这很容易配置。

票数 0
EN

Software Engineering用户

发布于 2020-02-21 20:43:14

例如,有一个名为developers的分支,开发人员经常与其集成。我通常认为,让CD进程将开发构建部署到共享机器上是很有价值的,这是大家都能理解的。这个CD过程需要一个质量门来保护,例如,如果单元测试失败,集成测试将在开发部署之后运行,我们通常不允许合并到develop中。

根据您的开发速度和集成频率,开发应该保持足够的稳定性,以便其他特性开发能够与此相对照。我的意思是前端可以针对后端的状态测试一个特性分支,而后端可以针对处于开发中的前端状态测试一个特性分支。

对于中断更改,特性标志是一种有用的功能。这样,一个团队就可以根据自己的需求来进行彻底的改变,而其他每个人都不受影响。

对于API来说,API假货是非常有用的。API仿冒是一种愚蠢的服务器,没有业务逻辑就能输出预定义的内容。我认为API伪码经常用于测试没有后端依赖的角度代码。

票数 0
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/405524

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档