分布式架构的持续交付实践-刘潇俊

Download Report

Transcript 分布式架构的持续交付实践-刘潇俊

分布式架构的持续交付实践
大众点评 王潇俊
需求
配置管理 苦
代码管理 苦
快!
版本管理 苦
环境管理 苦
目标
我们不是要缩短集成或发布的周期
而是要将集成和发布融入日常工作中!
要快到感觉不到!
重点
1. 点评的持续交付平台介绍
2. 分享我们遇到的问题
现状
 支持全公司
700+ 工程师的日常工作
 支撑
3600+ 个代码仓库
 管理
1800+ 台虚机
 平均每天处理
2000+ 次构建和部署
分布式的架构
Shop
Domain
Adv Domain
Other Domain
web
web
service
service
web
web
service
service
service
service
service
service
master
slave
master
slave
master
slave
RPC
Cache
统一配置
Search
某个页面

请求页面

获取商户信息

获取商户推荐菜

获取默认点评

获取相关榜单

获取附近餐厅

获取签到信息

blah...blah... (40+)
分布式架构带来的问题
• 应用的数量(600个war,2500个jar)
• 层级与依赖复杂(web – service – service )
• 远程调用
• 集成与隔离的矛盾
解决之道
•
流程
•
•
•
•
工具
•
•
•
•
•
分级集成、分级测试
Merge Request
灰度发布
代码管理
编译&打包
自动化部署
环境管理
架构
•
•
•
•
•
路由
监控
统一配置
泳道
云
核心流程
Coding
Build
开发
Deploy
Testing
测试
Packing
Rollout
部署
系统架构
GitLab
E-Search
GitLab Shell
Static Testing
Statistic
Git
Delivery System
Packing
Jenkins Clusters
Local Sharing mvn
Repo
Branc
h
Docker
Machine Controllor
Env Config
Partitioning Rollout
LZM
CI Cloud
PaaS
Instance Pool
KVM
Docker
代码管理
规范
• 分支策略
• 应用名规范
• 代码层级
坑
• Gitlab Shell 成为单点
• Gitlab本身的bug(fork、http push等)
• Git的问题(name = commit id)
集成管理
坑
Feature 1
Master
Feature 2
Lightmerge
Feature 1
Master
Feature 2
Shadow
1.
2.
3.
4.
5.
优先从master fork一个相同的影子分支
将所有需要合并的分支自动合入影子分支
通过影子分支进行集成和部署
确认无误后,可将影子分支直接push回master
如有误,再次发起合并时,重新生产影子分支
环境管理
核心问题
• 那么问题来了
• 到底需要多少套环境?
• 怎么保证远端调用是stick的?
• 环境部署到底哪家强?
核心技术
路由、泳道
Swimlane 1
shop
web
Alpha Env
Swimlane 2
shop
service
other
web
other
service
shop
web
other
service
adv
service
other
service
adv
service
shop
service
交付管理
部署管理
重点问题
• 回滚:
• 配置快照,可选
• 开关:
• 美好的东东,但要慎用
• CDN:
• 必须考虑的因素