19.《持续演进的Cloud Native 云原生架构下微服务最佳实践》读书笔记-第九章 研发流程
研发流程
十二因子
基准代码。一份基准代码,多份部署
依赖。显式声明依赖关系
配置。在环境中存储配置。配置与代码分离,分布式配置中心
后端服务。程序运行所需要的通过网络调用的各种服务,如DB,消息/队列系统。。。
构建,发布,运行。严格分离构建和运行
进程。以一个or多个无状态进程运行应用
端口绑定。通过端口绑定提供服务
开发。通过进程模型进行扩展。扩展方式:进程:扩展性更好,架构更简单,隔离性更好。线程:扩展编程更新复杂,但更节省资源
易处理。快速启动,优雅终止可最大化健壮性
开发环境与线上环境等价
日志。把日志当作事件流。日志系统
管理进程。把后台管理任务当作一次性进程运行
自动化测试
单元测试
TDD
提交即意味着可测试
Code Review
意义
发现在潜在BUG
提升代码易读性。让人看懂的代码
统一规范,标准
技术交流,提升能力
Code Review原则
以发现问题为目标。团队需要开放,透明,整个Code Review的过程是对事不对人的
不设置惩罚。正向激励
不论资历
Code Review的过程
准备工作很重要。确立团队开放,透明,平等原则,明确Code Review的意义
线上Code Review。工具:Eclipse Jupiter,ReviewClipse,Phabricator,Tao-ReviewBoard线下Code Review
(谈谈我个人看法:Code Review时做好BUG记录;通常我每天至少同步一次代码,此时Code Review)
流水线
持续交付
优势
降低交付周期
自动化
通过通过工具实现标准化,规范化
持续部署流水线
基于开源打造流水线
需求管理
代码仓库
构建工具
共享仓库
持续集成
测试
监控。Nagios,Zabbix,Prometheus+Grafana
Amazon的流水线
Octane
Brazil
Apollo
Pipeline
开发人员自服务
为什么需要AIOps
智能运维
基于数据和反馈持续改进
用户行为分析
用记反馈
A/B测试。先给部分人使用,然后收集反馈信息
拥抱变化
尽早变更
缩小决策范围
设置优先级
一切自动化
代码即设计
架构师要参与设计与编码,保持技术敏感度,小团队中架构师要做到引导作用