持续交付36讲
2020-06-09 09:41:18 0 举报
AI智能生成
持续交付36讲思维导图
作者其他创作
大纲/内容
02 影响持续交付的因素
组织文化因素
跨部门合作
集思广益不同部门,不同职能,跳出舒适区
成立项目管理办公室-PMO监督型
独立建立工程效能部门-全面负责
敏捷形式-产品形式组织各团队自行推进持续交付
自我驱动
流程因素
打破耗时较长的流程
完全人工类的流程
信息报备类流程
架构因素
系统架构
SOA架构(面向服务,接口契约联系)
微服务架构(独立部署,松耦合)
单体架构(所有应用共用一个代码仓库)
部署架构
是否有统一的部署标准和方式
考虑发布的编排次序(金丝雀、灰度)
markdown和markup机制(部署时业务无损)
预热与自检
03 持续交付和DevOps
持续交付
持续交付是,提升软件交付速率的一套工程方法和一系列最佳实践的集合。
它的关注点可以概括为:持续集成构建、测试自动化和部署流水线
它的关注点可以概括为:持续集成构建、测试自动化和部署流水线
devops
一组技术
一个职能
一种文化
一种组织架构
04 配置管理
主干开发(TBD)
特性分支开发
Git Flow
GitHub Flow
GitLab Flow
分支策略选择
05 依赖管理
Maven
06 代码回滚
回滚包
回滚代码
07 团队代码管理实际案例
“两个披萨”
08-13 环境管理
环境结构
开发环境
功能测试环境
验收测试环境
预发布环境
生产环境
环境性质需求
可得性
快速部署
独立性
稳定性
高仿真
环境成本
机器资源成本
管理成本
环境的可用性
配置的管理成本
测试数据的维护成本
流程成本
环境配置
服务器运行时配置
独立环境配置
运行规范
代码及依赖规范
命名规范
开发规范
配置规范
部署规范
安全规范
测试规范
环境自己说话
定义 Server Spec
解决配置中心寻址
服务自发现
配置方法
构建时配置
打包时配置
运行时配置
回滚配置
分钟级搭建环境
环境构建流水线
虚拟机准备
应用部署准备
单应用部署标准化
应用部署并行度
流水线容错机制
错误中断
优先完成
环境变更
用户访问应用的入口管理
应用之间调用链的管理
对数据库的访问
容器技术
重新定义交付标准
交付结果一致
交付自动化
交付个性化
交付版本控制
变还是不变
不可变基础设施(Immutable Infrastructure)
14-18 构建集成
构建提速
升级硬件资源
搭建私有仓库
使用本地缓存
规范构建流程
善用构建工具
构建检测
Maven Enforcer 插件
构建依赖检查服务
构建资源的弹性伸缩
持续集成工具
Travis CI
CircleCI
Jenkins CI
Jenkins master高可用,使用K8S伸缩slave
容器镜像构建
容器构建优化
充分利用指令的缓存
减少不必要的镜像层的产生
选择合适的Base镜像
镜像构建环境
Docker Out Of Docker
Docker in Docker
kaniko
容器镜像的个性化及合规检查
个性化需求
用户自定义环境脚本
平台化环境选项与服务集市
自定义镜像发布
镜像安全合规检查
基于公司官方Base
对比镜像Layer
19-24 发布和监控
好的发布流程
发布过程
在目标机器上执行命令停掉运行中的服务;
把提前准备好的变更产物传上机器覆盖原来的目录;
运行命令把服务再跑起来。
靠谱的单机部署
下载新的版本,不执行覆盖;
通知上游调用方,自己现在为暂停服务状态;
运行命令 load 变更重启服务;
验证服务的健康状况;
通知上游调用方,自己服务恢复正常。
扩展到集群
蓝绿发布
滚动发布
金丝雀发布
任何变更都需要发布
不可变基础设施
三种模型
发散
收敛
顺序问题
频率问题
蝴蝶效应
一致
Immutable 的衍生
黄金映像
VDI(虚拟桌面)
Phoenix Server
基础设施即代码
发布系统一定要注意用户体验
1 张页面展示发布信息
2 个操作按钮简化使用
3 种发布结果
成功状态
失败状态
中断状态
4 类操作选择
开始发布
停止发布
发布回退
发布重试
5 个发布步骤
markdown
download
install
verify
markup
6 大页面主要内容
集群
实例
发布日志
发布历史
发布批次
发布操作
发布系统的核心架构和功能设计
发布系统架构
每台服务实例上的发布脚本一旦产生则不再修改,以达到不可变模型的要求
发布引擎和 Salt Master 之间采用异步通信,但为增强系统健壮性,要有同步轮询的备案
面对频繁的信息获取,要善用缓存,但同时也一定要慎用缓存,注意发布信息的新鲜度。
发布系统核心模型
Group
DeploymentConfig
Deployment
DeploymentBatch
DeploymentTarget
发布流程及状态流转
刹车机制
提升发布速度
降级机制
业务及系统架构对发布的影响
单机单应用还是单机多应用?
增量发布还是全量发布?
如何控制服务的 Markup 和 Markdown?
检查、预热和点火机制
如何保证堡垒流量?
如何利用监控保障发布质量?
监控分类
用户侧监控
端到端
移动端的日志
设备表现监控
唯一用户ID的监控
网络监控
公网监控
内网监控
业务监控
应用监控
系统监控
建立完整的运维事件记录体系
25 测试管理
代码静态检查
破坏性测试
混沌工程-在生产环境中破坏
mock与回放
mock
回放
26-30 持续交付平台化
持续交付平台的设计
确定模块及其范围
代码管理
代码审核
静态扫描
分支管理
集成编译
依赖管理
单元测试
加密打包
环境管理
资源申请
配置管理
路由管理
发布部署
监控
流量控制
学会做减法
制定标准
选择合适的驱动器
抽象公共能力
考虑用户入口
聚力而成
计算资源也是交付的内容
持续交付的宝贵数据
用数据来衡量系统
通过监控、保障、人为记录等手段,统计所有的故障时间
过去三个月内这个时间段产生的持续交付平均业务量
计算这个时间段内的业务量与月平均量相比的损失率
数据既要抓大势,也要看细节
数据可以推动持续交付
常规系统指标数据列举
稳定性相关指标
性能相关指标
持续交付能力成熟度指标
31-33 持续交付移动App
34-37实践案例
自由主题
0 条评论
下一页