我目前正在从事一个相当大规模的项目(超过250个码头容器),该项目对多个API和前端应用程序具有复杂的依赖关系。舞台和生产基础设施正在库伯奈特上运行。我的团队由大约50名开发人员组成,他们都在公司笔记本电脑上运行macOS。我们被分成小组,每个小组在项目的特定部分上工作。有些是前端开发人员,有些是后端开发人员。目前,我们都在本地笔记本电脑上使用本地安装的依赖程序或通过码头容器(mongoDb、PHP、RabbitMQ…)进行开发。但我们仅限于安装我们目前正在进行的项目的特定部分,因为似乎不可能在每个开发人员的膝上型计算机上同时运行整个项目,但是这种方法非常笨重,并且可能因开发人员的机器而异。我喜欢使用docker让整个项目在本地运行的整个想法,但根据我的经验,只要您运行了几个坞卷,MacBooks就会停止运行。目前,切换到Linux笔记本电脑并不是一种选择。
我正在寻求关于其他大型公司如何处理这个问题的建议。我希望有类似的生产系统的经验,可能运行类似Minikube的地方,但我不认为性能会更好,它增加了许多新的开发人员的复杂性。我们还考虑过在linux上运行开发环境,但这很快就会非常昂贵。
大型公司/项目中的人如何处理这一问题?
发布于 2021-09-20 13:23:37
博士:您需要一个共享的集成环境。
这里有很多移动部件,所以给出明确的建议做什么可能是不可能的。当你面对一个复杂的情况时,诀窍是知道如何思考,而不是去做什么。
这个问题将招致批评,因为有许多方法可以提供更稳定的开发环境。然而,一个指导原则可能是Dev / Prod奇偶来自12个因子应用程序的想法,该应用程序声明:
尽可能保持开发、阶段和生产的相似
如果各个组件上的开发团队遵循独立的发布周期(如果应用程序适当地由微服务组成),那么开发共享集成环境是有意义的。这可以远程托管,并为所有开发人员提供一个单一的环境。
当然,这意味着您需要访问该共享环境,从而访问网络,因此您将失去一些脱机功能。然而,保持离线开发能力的唯一方法似乎是升级每个成员的硬件,因此我猜您将被迫以某种方式进行连接到网络的开发。如果您要进行网络访问,您可能还可以访问共享的集成环境。
当然,棘手的部分是确保这种环境保持最新和正确。这就是连续交货的做法。如果您有4个团队在应用程序的4个独立组件上工作,那么对这4个组件中的每个组件的更改都应该被正确地版本化并不断地交付到共享环境中。
对于开发健壮的API,我发现一个很好的开始讨论是在“API”版“增量”中。
发布于 2021-09-22 23:12:19
“银弹”实际上是多个环境。开发/测试/UAT/阶段..。所有这些都应定期与prod同步。你有没有考虑过通过CI/CD来开发特殊/随需应变的开发环境?
另一个更直接的解决方案是这个https://code.visualstudio.com/docs/remote/ssh
由于您已经在使用docker,您可以在远程开发服务器上构建ec2服务器并远程运行容器,然后将开发人员的SSH放到ec2服务器上。
注意:在远程开发服务器上,您可以安装docker插件(或任何vscode插件)来改进开发体验。
https://devops.stackexchange.com/questions/14700
复制相似问题