V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
zhkzyth
V2EX  ›  Python

开发团队合作模式的疑问

  •  
  •   zhkzyth · 2015-10-20 11:02:30 +08:00 · 3207 次点击
    这是一个创建于 3314 天前的主题,其中的信息可能已经有所发展或是发生改变。

    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 ?自己搞了一套工具?

    欢迎吐槽=。=

    10 条回复    2015-10-20 18:09:42 +08:00
    Muninn
        1
    Muninn  
       2015-10-20 11:55:21 +08:00
    关注

    你说的公用服务 比如数据库啊 redis 啊队列啊 是公用一个呢 还是各自建一个库
    各自建一个其实和以前是一样的 公用呢, 有的还好, 有的地方容易冲突
    est
        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

    本地开发和共用服务器开发都可以无缝切换。
    felixzhu
        3
    felixzhu  
       2015-10-20 12:53:38 +08:00
    个人觉得还是每个人有一套开发环境的环境比较好,开发环境可以大家共用一套数据
    其实就是 PHP 的那种模式,也不算复杂吧,就是要一个人配置一下

    然后多个测试环境多个分支,每个分支可以配置 Hook 实现 merge push 之后自动部署, Master 也应该这样不该手动部署,因为每次 Master 的合并都应该是经过测试的,如果不放心还可以加一个 pre 环境使用线上数据库。

    好处是不用每个人自己配置环境,而且来新人也不用教配置环境啥的。然后 fab dev 的时候直接本地 rsync 就可以了,不用每次改代码 commit
    tabris17
        4
    tabris17  
       2015-10-20 12:57:56 +08:00
    环境的一致性和代码的一致性

    前者,开发环境可以用 vagrant 。
    后者,用 git 分支管理
    virusdefender
        5
    virusdefender  
       2015-10-20 12:59:37 +08:00
    简单的服务和工具就本地装一个

    依赖复杂的,安装麻烦的就用 docker
    Hipponensis
        6
    Hipponensis  
       2015-10-20 13:05:07 +08:00
    关注一下,目前觉得每人一套开发环境好点,但不知道团队规模大了之后会如何……
    fy
        7
    fy  
       2015-10-20 14:04:13 +08:00
    以前就是这么搞的,每人一个账户,连上开发服务器进行开发, tmux+vim 写代码。

    现在可能 docker 更好一些吧?
    chinajik
        8
    chinajik  
       2015-10-20 14:21:29 +08:00
    jenkins+docker
    skydiver
        9
    skydiver  
       2015-10-20 14:24:49 +08:00
    围城……
    我们现在用的就是大家一个机器,结果大家还希望用自己的机器开发呢。。
    pkking
        10
    pkking  
       2015-10-20 18:09:42 +08:00
    docker 就是为此而生
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2764 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 12:00 · PVG 20:00 · LAX 04:00 · JFK 07:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.