vlambda博客
学习文章列表

19.《持续演进的Cloud Native 云原生架构下微服务最佳实践》读书笔记-第九章 研发流程

研发流程

十二因子

  1. 基准代码。一份基准代码,多份部署

  2. 依赖。显式声明依赖关系

  3. 配置。在环境中存储配置。配置与代码分离,分布式配置中心

  4. 后端服务。程序运行所需要的通过网络调用的各种服务,如DB,消息/队列系统。。。

  5. 构建,发布,运行。严格分离构建和运行

  6. 进程。以一个or多个无状态进程运行应用

  7. 端口绑定。通过端口绑定提供服务

  8. 开发。通过进程模型进行扩展。扩展方式:进程:扩展性更好,架构更简单,隔离性更好。线程:扩展编程更新复杂,但更节省资源

  9. 易处理。快速启动,优雅终止可最大化健壮性

  10. 开发环境与线上环境等价

  11. 日志。把日志当作事件流。日志系统

  12. 管理进程。把后台管理任务当作一次性进程运行

自动化测试

  1. 单元测试

  2. TDD

  3. 提交即意味着可测试

Code Review

意义

  1. 发现在潜在BUG

  2. 提升代码易读性。让人看懂的代码

  3. 统一规范,标准

  4. 技术交流,提升能力

Code Review原则

  1. 以发现问题为目标。团队需要开放,透明,整个Code Review的过程是对事不对人的

  2. 不设置惩罚。正向激励

  3. 不论资历

Code Review的过程

  1. 准备工作很重要。确立团队开放,透明,平等原则,明确Code Review的意义

  2. 线上Code Review。工具:Eclipse Jupiter,ReviewClipse,Phabricator,Tao-ReviewBoard线下Code Review

(谈谈我个人看法:Code Review时做好BUG记录;通常我每天至少同步一次代码,此时Code Review)

流水线

持续交付

优势

  1. 降低交付周期

  2. 自动化

  3. 通过通过工具实现标准化,规范化

持续部署流水线

基于开源打造流水线

  1. 需求管理

  2. 代码仓库

  3. 构建工具

  4. 共享仓库

  5. 持续集成

  6. 测试

  7. 监控。Nagios,Zabbix,Prometheus+Grafana

Amazon的流水线

  1. Octane

  2. Brazil

  3. Apollo

  4. Pipeline

开发人员自服务

为什么需要AIOps

智能运维

基于数据和反馈持续改进

  • 用户行为分析

  • 用记反馈

  • A/B测试。先给部分人使用,然后收集反馈信息

拥抱变化

  1. 尽早变更

  2. 缩小决策范围

  3. 设置优先级

  4. 一切自动化

代码即设计

架构师要参与设计与编码,保持技术敏感度,小团队中架构师要做到引导作用