SlideShare a Scribd company logo
单分⽀支开发

--某跨国团队协作开发⽹网银的故事
申健	
2014.7.29
申健
• 创客、软件咨询顾问、敏敏捷教练。
致⼒力力于启发创意、促进协作、交
付价值的事业。	
• 敏敏捷和软件社区组织者、讲师、
践⾏行行者。	
• 								@申导
• 个⼈人⽹网站	www.JackyShen.com
某⽹网银系统
• 由于各国市场环境、政策法规等原
因,不不同的国家可能在⻚页⾯面体验、
业务逻辑、关联系统有所不不同	
– 每个国家有⾃自⼰己的代码分⽀支	
– 由不不同的项⽬目组开发	
– 有些分⽀支已经废弃不不⽤用	
– 分⽀支并⾮非都在同⼀一个抽象层次
共同的起源,不不同的规范和结构
即使某天再次偶遇…
• 重复	
• 合并噩梦	
• 某些分⽀支会漏漏掉公共的修复和升级
《向左⾛走,向右⾛走》---⼏几⽶米
基于分⽀支的开发
• 好处:	
– 每个团队可独⽴立地开发,互不不影响	
• 坏处:	
– 重复意味着浪费	
– 维护成本上升	
– 引⼊入⼈人⼯工错误	
– 给测试留留的时间少
新⼀一代产品的⽬目标
• 即便便商业规则并不不完全相同,也
要对所有国家统⼀一产品体验	
• 跨越多个国家,建⽴立标准化公共
知识库,新⼈人可以快速开始⼯工作	
• 加速启动新国家项⽬目,降低已有
国家的维护成本	
• 快速部署,缩短发布周期
形意合⼀一
基于主⼲干的开发	/ 单分⽀支开发
• 每个⼈人都⼯工作在主⼲干代码上	
• 个⼈人⼯工作分⽀支只存在数⼩小时
Trunk-based	vs.	Feature-based
⼀一些单分⽀支解决⽅方案
• 邀请⽤用户下载最新的版本	
– Apple	Store	
– Eclipse	
• 跨平台技术	
– Flash	
• 运⾏行行时切换机制	
– S60	Service	Discovery	API	
– Responsive	Web	Design	
– Feature	Toogle
• ⽬目
标
• 架
构
• 策
略略 • 协
作
浮现式设计
可⾏行行⾛走的⻣骨架
MVP
团队裂变
持续集成
如果我们 “想当然”,
那就是在浪费时间和
增加⻛风险
如果不不尽早准备好构
建环境,这些低级任
务就推迟到将来,通
常在最不不⽅方便便的时候
命令⾏行行构建和全⾯面⾃自
动化
利利⽤用抽象模拟分⽀支
可⾏行行⾛走的⻣骨架 产品变体
扩展
Base
Account
Have
Account
…
Owe
Account
Card
Account
Loan
Account
Speicial
Loan for
SG
Speicial
Loan for
IN
覆盖
• Base as singleton country/SG
country/IN
结构的重要性
1. 以功能为单位,尽量量模块化	
2. 以层次为单位,便便于维护	
3. 分离base与country-specific,便便于按需打包
⽬目录结构
• 代码	
• 单元测试	
• 功能测试
⼀一键打包(NodeJS⽅方案)
• Lint	
• Unit	test	
• Aggregate	
• Compile	templates	
• Copy	
• Compass	
• Uglify
<15秒
<5秒
插件式构建
当更更多的傻⽠瓜加⼊入
有些功能被破坏,⽆无法⼯工作了了
有⼈人会删掉你的代码!
如何保护你的代码?
破坏CI构建包会影响到别⼈人
“在我本地机器器上
没问题!”
单元测试覆盖率多⾼高才是有效的?
纪律律
• 经常提交代码		
• 每次提交触发所有项⽬目组的CI	
• 只有CI绿时才合并代码	
• 确保提交代码前本地软件包
⼯工作正常	
• 更更多有效的⾃自动化保护	
• Stop	&	Fix
虚拟架构团队和Gate	Keeper
Gate	Keeper
• 明确纪律律	
• ⼿手把⼿手示范	
• 社会认同原理理
• 以复杂应对复杂,试验-调整
更更频繁沟通
增加了了沟通成本?
今天不不沟通,明天跑不不通
传统SCM规定
• ⽴立项时就要建⽴立项⽬目分⽀支和详细计划,每个
项⽬目⼀一个成本编号	
• 发布时必须从此项⽬目分⽀支打包,否则不不予审
批	
• 挑战?
只在软件发布时才拉分⽀支
• 发布前冻结代码	
• 延迟决策	
• 减少并发任务
分久必合,合久必分
平台可⾏行行⾛走⻣骨架 产品变体
收益
• 所有国家遵从同⼀一设计	
• ⼀一个改变⽴立即对所有国家
有效	☺	
• ~50%	可重⽤用的代码,加
速上线	
• ⼀一键签出,即可⽀支持⼀一个
新的国家项⽬目	
• 不不同团队可互相⽀支援	
• 容易易理理解代码库结构
0%
13%
25%
38%
50%
2 countries 3 countries 5 countries 8 countries
Trunk based
Branch Based
单分⽀支开发模型
• ⽬目
标
• 架构	
• 对象建模	
• ⽬目录结构	
• 构建脚本	
• 策略略	
• 浮现式设计	
• SCM延迟决策	
• 持续集成
• 协作	
• 虚拟架构团队	
• 提⾼高能⼒力力	
• 频密沟通
谢谢
• www.JackyShen.com	
• JackyShen@ScrumChina.com	
• 				@申导 2014.8.6-8 上海海	Certified	Scrum	Developer	
敏敏捷技术实践公开课	
敬请期待

More Related Content

Similar to 单分支开发
 -某跨国团队协作开发网银的故事

2015.0508創新創業這條路2
2015.0508創新創業這條路22015.0508創新創業這條路2
2015.0508創新創業這條路2
Andy Peng
 
以使用者為中心的設計概念跟方法(Inside salon)
以使用者為中心的設計概念跟方法(Inside salon)以使用者為中心的設計概念跟方法(Inside salon)
以使用者為中心的設計概念跟方法(Inside salon)
悠識學院
 
FreeTalk: 企業資安下之工程師成長歷程
 FreeTalk: 企業資安下之工程師成長歷程 FreeTalk: 企業資安下之工程師成長歷程
FreeTalk: 企業資安下之工程師成長歷程
loyo
 
101.09.05 創業贏家-創業主的人格特質與心理準備-詹翔霖教授
101.09.05 創業贏家-創業主的人格特質與心理準備-詹翔霖教授101.09.05 創業贏家-創業主的人格特質與心理準備-詹翔霖教授
101.09.05 創業贏家-創業主的人格特質與心理準備-詹翔霖教授
文化大學
 
Willem Ning Jiang: Getting Started: How to join an Open Source project Apache...
Willem Ning Jiang: Getting Started: How to join an Open Source project Apache...Willem Ning Jiang: Getting Started: How to join an Open Source project Apache...
Willem Ning Jiang: Getting Started: How to join an Open Source project Apache...
jixuan1989
 
環境知識的學習與創新 實踐大學-K1-2-詹翔霖教授
環境知識的學習與創新 實踐大學-K1-2-詹翔霖教授環境知識的學習與創新 實踐大學-K1-2-詹翔霖教授
環境知識的學習與創新 實踐大學-K1-2-詹翔霖教授
文化大學
 
个人知识管理(网络分享版)20110429
个人知识管理(网络分享版)20110429个人知识管理(网络分享版)20110429
个人知识管理(网络分享版)20110429mrchy
 
101.11.15 創業者該有的贏家邏輯思維-勞委會-詹翔霖教授
101.11.15 創業者該有的贏家邏輯思維-勞委會-詹翔霖教授101.11.15 創業者該有的贏家邏輯思維-勞委會-詹翔霖教授
101.11.15 創業者該有的贏家邏輯思維-勞委會-詹翔霖教授
文化大學
 
101.10.16 領導者潛能開發-詹翔霖教授-台灣女性創業研究發展協會
101.10.16 領導者潛能開發-詹翔霖教授-台灣女性創業研究發展協會101.10.16 領導者潛能開發-詹翔霖教授-台灣女性創業研究發展協會
101.10.16 領導者潛能開發-詹翔霖教授-台灣女性創業研究發展協會
文化大學
 
101.10.16 領導者潛能開發-詹翔霖教授-台灣女性創業研究發展協會
101.10.16 領導者潛能開發-詹翔霖教授-台灣女性創業研究發展協會101.10.16 領導者潛能開發-詹翔霖教授-台灣女性創業研究發展協會
101.10.16 領導者潛能開發-詹翔霖教授-台灣女性創業研究發展協會
文化大學
 
2011年中国公益组织资源匹配与筹资培训
2011年中国公益组织资源匹配与筹资培训2011年中国公益组织资源匹配与筹资培训
2011年中国公益组织资源匹配与筹资培训vim background
 
網站製作基礎概念
網站製作基礎概念網站製作基礎概念
網站製作基礎概念
Shengyou Fan
 
創業進階班-策略行銷-詹翔霖教授
創業進階班-策略行銷-詹翔霖教授創業進階班-策略行銷-詹翔霖教授
創業進階班-策略行銷-詹翔霖教授
文化大學
 
1 2社會企業與公益創投 中國生產力中心論壇
1 2社會企業與公益創投 中國生產力中心論壇1 2社會企業與公益創投 中國生產力中心論壇
1 2社會企業與公益創投 中國生產力中心論壇cpc2631
 
借力使力的乾坤挪移大法-以使用者為中心的設計決策奧妙
借力使力的乾坤挪移大法-以使用者為中心的設計決策奧妙 借力使力的乾坤挪移大法-以使用者為中心的設計決策奧妙
借力使力的乾坤挪移大法-以使用者為中心的設計決策奧妙
悠識學院
 
10 知识社区实施步骤与案例
10 知识社区实施步骤与案例10 知识社区实施步骤与案例
10 知识社区实施步骤与案例
Yeong-Long Chen
 
101.10.16 創業贏家特質與準備-詹翔霖教授-台灣女性創業研究發展協會
101.10.16 創業贏家特質與準備-詹翔霖教授-台灣女性創業研究發展協會101.10.16 創業贏家特質與準備-詹翔霖教授-台灣女性創業研究發展協會
101.10.16 創業贏家特質與準備-詹翔霖教授-台灣女性創業研究發展協會
文化大學
 
5irehands工作室 2
5irehands工作室 25irehands工作室 2
5irehands工作室 2
Forefeel Wu
 
數位科技工具在自我學習上的運用
數位科技工具在自我學習上的運用數位科技工具在自我學習上的運用
數位科技工具在自我學習上的運用基欽 劉
 

Similar to 单分支开发
 -某跨国团队协作开发网银的故事 (20)

2015.0508創新創業這條路2
2015.0508創新創業這條路22015.0508創新創業這條路2
2015.0508創新創業這條路2
 
Just.net
Just.netJust.net
Just.net
 
以使用者為中心的設計概念跟方法(Inside salon)
以使用者為中心的設計概念跟方法(Inside salon)以使用者為中心的設計概念跟方法(Inside salon)
以使用者為中心的設計概念跟方法(Inside salon)
 
FreeTalk: 企業資安下之工程師成長歷程
 FreeTalk: 企業資安下之工程師成長歷程 FreeTalk: 企業資安下之工程師成長歷程
FreeTalk: 企業資安下之工程師成長歷程
 
101.09.05 創業贏家-創業主的人格特質與心理準備-詹翔霖教授
101.09.05 創業贏家-創業主的人格特質與心理準備-詹翔霖教授101.09.05 創業贏家-創業主的人格特質與心理準備-詹翔霖教授
101.09.05 創業贏家-創業主的人格特質與心理準備-詹翔霖教授
 
Willem Ning Jiang: Getting Started: How to join an Open Source project Apache...
Willem Ning Jiang: Getting Started: How to join an Open Source project Apache...Willem Ning Jiang: Getting Started: How to join an Open Source project Apache...
Willem Ning Jiang: Getting Started: How to join an Open Source project Apache...
 
環境知識的學習與創新 實踐大學-K1-2-詹翔霖教授
環境知識的學習與創新 實踐大學-K1-2-詹翔霖教授環境知識的學習與創新 實踐大學-K1-2-詹翔霖教授
環境知識的學習與創新 實踐大學-K1-2-詹翔霖教授
 
个人知识管理(网络分享版)20110429
个人知识管理(网络分享版)20110429个人知识管理(网络分享版)20110429
个人知识管理(网络分享版)20110429
 
101.11.15 創業者該有的贏家邏輯思維-勞委會-詹翔霖教授
101.11.15 創業者該有的贏家邏輯思維-勞委會-詹翔霖教授101.11.15 創業者該有的贏家邏輯思維-勞委會-詹翔霖教授
101.11.15 創業者該有的贏家邏輯思維-勞委會-詹翔霖教授
 
101.10.16 領導者潛能開發-詹翔霖教授-台灣女性創業研究發展協會
101.10.16 領導者潛能開發-詹翔霖教授-台灣女性創業研究發展協會101.10.16 領導者潛能開發-詹翔霖教授-台灣女性創業研究發展協會
101.10.16 領導者潛能開發-詹翔霖教授-台灣女性創業研究發展協會
 
101.10.16 領導者潛能開發-詹翔霖教授-台灣女性創業研究發展協會
101.10.16 領導者潛能開發-詹翔霖教授-台灣女性創業研究發展協會101.10.16 領導者潛能開發-詹翔霖教授-台灣女性創業研究發展協會
101.10.16 領導者潛能開發-詹翔霖教授-台灣女性創業研究發展協會
 
2011年中国公益组织资源匹配与筹资培训
2011年中国公益组织资源匹配与筹资培训2011年中国公益组织资源匹配与筹资培训
2011年中国公益组织资源匹配与筹资培训
 
網站製作基礎概念
網站製作基礎概念網站製作基礎概念
網站製作基礎概念
 
創業進階班-策略行銷-詹翔霖教授
創業進階班-策略行銷-詹翔霖教授創業進階班-策略行銷-詹翔霖教授
創業進階班-策略行銷-詹翔霖教授
 
1 2社會企業與公益創投 中國生產力中心論壇
1 2社會企業與公益創投 中國生產力中心論壇1 2社會企業與公益創投 中國生產力中心論壇
1 2社會企業與公益創投 中國生產力中心論壇
 
借力使力的乾坤挪移大法-以使用者為中心的設計決策奧妙
借力使力的乾坤挪移大法-以使用者為中心的設計決策奧妙 借力使力的乾坤挪移大法-以使用者為中心的設計決策奧妙
借力使力的乾坤挪移大法-以使用者為中心的設計決策奧妙
 
10 知识社区实施步骤与案例
10 知识社区实施步骤与案例10 知识社区实施步骤与案例
10 知识社区实施步骤与案例
 
101.10.16 創業贏家特質與準備-詹翔霖教授-台灣女性創業研究發展協會
101.10.16 創業贏家特質與準備-詹翔霖教授-台灣女性創業研究發展協會101.10.16 創業贏家特質與準備-詹翔霖教授-台灣女性創業研究發展協會
101.10.16 創業贏家特質與準備-詹翔霖教授-台灣女性創業研究發展協會
 
5irehands工作室 2
5irehands工作室 25irehands工作室 2
5irehands工作室 2
 
數位科技工具在自我學習上的運用
數位科技工具在自我學習上的運用數位科技工具在自我學習上的運用
數位科技工具在自我學習上的運用
 

单分支开发
 -某跨国团队协作开发网银的故事