1 开始
笔者真正开始接触敏捷开发的时间只有1年半的时间,在这之前,参与的项目大都算是瀑布式开发。如果把瀑布式的开发方式比喻为一条没有感情的流水线,流水线中的需求、开发、测试、上线、运营人员通过约定好的流程、文档进行交互和工作(这在第二次工业革命被赞赏的工作方式),时间一长,就像电影摩登时代
生产流水线上那个扭紧六角螺帽里卓别林一样。
但在如今变化是唯一不变的社会里,响应变化成为第一要义,更快更好
是奋斗目标,于是冷冰冰的流水线开发
开始了文艺复兴
。开始强调人、协作、产品和迭代。而这一切开始于2001年、在美国犹他州瓦萨奇山的那一场雪。
2 敏捷-武装大脑
当我们在谈到敏捷的时候,都会是从敏捷宣言
和 敏捷原则
开始的:
敏捷软件开发宣言
个体和互动 高于 流程和工具
工作的软件 高于 详尽的文档
客户合作 高于 合同谈判
响应变化 高于 遵循计划
四项价值观并不意味着我们就该放弃工具、文档和计划。因为它们对研发结果依然有非常重要的价值,只是相比之下,我们应该关注更核心的事物:人、产品模型、协作和迭代。为了让这四项原则变得简单易懂好执行, 他们又将写了敏捷开发12项原则作为指导
敏捷开发12项原则
- 1 我们最重要的目标,是通过持续不断地及早交付有价值的软件使客户满意。
- 2 欣然面对需求变化,即使在开发后期也一样。为了客户的竞争优势,敏捷过程掌控变化。
- 3 经常地交付可工作的软件,相隔几星期或一两个月,倾向于采取较短的周期。
- 4 业务人员和开发人员必须相互合作,项目中的每一天都不例外。
- 5 激发个体的斗志,以他们为核心搭建项目。提供所需的环境和支援,辅以信任,从而达成目标。
- 6 不论团队内外,传递信息效果最好效率也最高的方式是面对面的交谈。
- 7 可工作的软件是进度的首要度量标准。
- 8 敏捷过程倡导可持续开发。责任人、开发人员和用户要能够共同维持其步调稳定延续。
- 9 坚持不懈地追求技术卓越和良好设计,敏捷能力由此增强。
- 10 以简洁为本,它是极力减少不必要工作量的艺术。
- 11 最好的架构、需求和设计出自自组织团队。
- 12 团队定期地反思如何能提高成效,并依此调整自身的举止表现。
如果我们把这些原则和遇到的问题对号入座,很快我们就会发现,这12项原则正是对应了客户期望。比如,客户不会关心开发文档写的怎么样,他们更感兴趣交付的成品能干什么;他们不在意你的开发计划,他们希望你能立马交付;昨天他们想要修个BUG,而不是等到下次版本更新。
这听起来,是不是很像工业生产方式 -> 服务业生产方式的演进。
3 devops-武装身体
如果说,敏捷开发是在对IT从业者在洗脑,相信变化的必然
、用户是上帝
、上帝是多变的
、拥抱变化
、渐进开发
;同时,这在为项目管理者提供管理的方向:进度量化
、MVP
、WIP
、自组织
、持续反思
、面面沟通
、以开发者为本
。
使用敏捷价值观武装大脑,但真正打仗,还需要手里有枪、有坦克,所以devops
是敏捷团队,必不可少的武器。
1 聊聊devops
image.png- DevOps 是一组技术/实践
- DevOps 是一个角色
- DevOps 是一种工作方式
- DevOps 是一种组织结构
上图是现在常见对devops的理解,对于我来讲,devops是一组技术/实践,是完成敏捷的武器。
devops是高效工具的总和、是提升软件研发效能
的武器库。高频部署
、持续交付
、云计算/虚拟化技术
、基础设施即代码
、Docker
、自动化运维
是常常被提到的技术,这些技术大大加快研发、运维流程的周转,提高价值流向速度,同时能很好的量化
误区: DevOps 绝不是为了提升部署频率而牺牲了软件质量和业务价值,甚至是安全措施
1 devops-道
- 价值流动(Value flow)
- 即时反馈(Instant feedback)
- 持续改进(keep improve)
devops的价值观与敏捷一脉相承,价值快速流动,持续不断地及早交付有价值的软件使客户满意;敏捷关注人与人的高效沟通,devops将沟通扩展到人与人、人与机、机与机的部分,通过各个阶段的即时反馈,确保价值的快速流动。迭代、持续改进是对好与快这对矛盾体的现实方法。
2 devops-法
- 自动化 (Automation)
- 可视化 (Visualization)
- 持续集成(Continuous integration)
- 持续交付(Continuous Delivery)
- 协同工作(Collaboration Culture)
如果说,瀑布开发对于公司是部门->部门->部门间的价值流动;敏捷就是团队内部人->人->人的价值流程;但是当加入了devops,他将变成 人->机器->机器->人的价值流动。
3 devops-术
- 一切皆代码(Everything as Code)
- 测试即代码(Testing as code)
- 配置即代码(Configuration as Code)
- 基础设施即代码(Infrastructure as Code)
基础设施即代码利用了编程语言和虚拟化工具 API 的无缝连接达到这一目的。它在很大程度上把基础设施的管理当做其问题域,采用正确的面向对象方式,让开发人员和运维人员能够理解并设计出更加稳定和灵活的基础设施。配置与测试也有着相同的作用,更重要的这让项目的所有角色都真正成为了Dever,并且代码作为项目资产的继承和共享更加有价值和高效。
4 devops-器
- CI Tool
- Build Tool
- Deployment Tool
- Knowledge Tool
- ChatOps
- Testing Tool
- SCM Tool
- Application Lifecycle
- Docker/K8S
- Monitoring/Logging
网友评论