hi , all
我们团队是用 python 做开发的,在团队协作方面,遇到了一些问题。
目前团队的协作开发是这样的,比如做某一个业务产品,开发者把代码拷到本地,所有的依赖服务,比如 mysql 、 redis 、 rabbitmq 等等,都在自己本地部署一套,数据也拷贝一份,然后进行开发调试。测试完毕后,推送到测试环境,跟客户端进行调试。
其实有过另外一个思路,就是每个开发者都在同一台开发服务器上面进行开发。代码方面,给每个人分配一个账号,共用数据服务、第三方服务;路由方面,主要是通过 nginx 转发。每个开发者自己都有一个 nginx ,负责路由到自己的实例上,然后还有一个主的 nginx ,负责转发。
有点抽象,举个例子:
我是 A 开发者,就分配一个 a.dev.xx.com , B 开发者就是 b.dev.xx.com 。
我登录到 dev 服务器,在自己的 /home/a ,下面有个业务代码,比如叫 produt_v2 ,打开 vim 进行开发(或者我本地通过`SSHFS`之类的功能,映射到本地进行编码)。
开发完后,我跑下 unittest 写的测试用例,这里的域名,我用的是 a.dev.xx.com ,然后请求经过主的 nginx 转发,转到我自己的 nginx (二级 nginx ),最后转发到我的 product_v2 代码实例上面来(比如 tornado 实例,端口 9990 )。
调试完成,通过`fabric dev`类似的命令,把代码发布到测试环境(目前来说,开发和测试是同一套环境)。这里其实是把代码发布到一个叫做`deploy`用户的`/home/deploy`目录下,我主要是用它来负责运行测试代码的。本质上,它跟普通的开发者是一致的。
最后,客户端或者其他测试人员,通过 dev.xx.com 来进行调试访问。
之前做 php 的时候,用的是这种多个 nginx 分发的模式,但是当时手头那套工具比较复杂,就没继续沿用在现在的基于 python 栈的团队开发中了。
提出来其实想问问大家在团队开发过程中,怎么比较合适、舒服的方式进行开发的呢?比如,用 docker ?自己搞了一套工具?
欢迎吐槽=。=
1
Muninn 2015-10-20 11:55:21 +08:00
关注
你说的公用服务 比如数据库啊 redis 啊队列啊 是公用一个呢 还是各自建一个库 各自建一个其实和以前是一样的 公用呢, 有的还好, 有的地方容易冲突 |
2
est 2015-10-20 12:25:41 +08:00
表示是混用的。 python manage.py runserver --settings= 可以写
--settings=dev --settings=local --settings=test --settings=staging --settings=prod 本地开发和共用服务器开发都可以无缝切换。 |
3
felixzhu 2015-10-20 12:53:38 +08:00
个人觉得还是每个人有一套开发环境的环境比较好,开发环境可以大家共用一套数据
其实就是 PHP 的那种模式,也不算复杂吧,就是要一个人配置一下 然后多个测试环境多个分支,每个分支可以配置 Hook 实现 merge push 之后自动部署, Master 也应该这样不该手动部署,因为每次 Master 的合并都应该是经过测试的,如果不放心还可以加一个 pre 环境使用线上数据库。 好处是不用每个人自己配置环境,而且来新人也不用教配置环境啥的。然后 fab dev 的时候直接本地 rsync 就可以了,不用每次改代码 commit |
4
tabris17 2015-10-20 12:57:56 +08:00
环境的一致性和代码的一致性
前者,开发环境可以用 vagrant 。 后者,用 git 分支管理 |
5
virusdefender 2015-10-20 12:59:37 +08:00
简单的服务和工具就本地装一个
依赖复杂的,安装麻烦的就用 docker |
6
Hipponensis 2015-10-20 13:05:07 +08:00
关注一下,目前觉得每人一套开发环境好点,但不知道团队规模大了之后会如何……
|
7
fy 2015-10-20 14:04:13 +08:00
以前就是这么搞的,每人一个账户,连上开发服务器进行开发, tmux+vim 写代码。
现在可能 docker 更好一些吧? |
8
chinajik 2015-10-20 14:21:29 +08:00
jenkins+docker
|
9
skydiver 2015-10-20 14:24:49 +08:00
围城……
我们现在用的就是大家一个机器,结果大家还希望用自己的机器开发呢。。 |
10
pkking 2015-10-20 18:09:42 +08:00
docker 就是为此而生
|