阿里云DevOps助理工程师认证(ACA)笔记
1.敏捷项目管理基础
1.1 项目管理和迭代开发方式项目的定义:一系列活动,有一个明确的目标或目的,并且必须在特定的时间和预算内依据规范完成
项目管理:运用技能,方法与工具,为满足或超越项目有关各方对项目的要求与期望,所开展的各种计划,组织,领导控制等方面的活动。
项目的三角:
- 范围:要求做什么,也规定了不能做什么
- 时间:必须完成的时间框架或最后期限
- 成本:可用于项目的费用
- 质量(不属于三角):
- 产品的质量:项目的可交付成果的质量
- 过程的质量:项目管理过程本身的质量
项目管理的目的:在有限的资源投入条件下,在要求的时间内完成既定的项目目标。
1.2 Scrum方法
在回顾中会:keep change try
1.3 KANBAN方法
看板:一种可视化流程管理系统
三个原则:可视化,限制在制品,管理流动
五个核心实践:
- 可视化工作流(价值流):工作流程,由各种工作项构成
- 限制在制品数量:工作项在本状态数量的上限,取决与整体团队的能力
- 度量与管理流动:让价值流动起来,方法:累计流量图
- 协同改进:整个团队一起合作
- 显示化流程规则:不同状态转换的规则
1.4 风险管理
Scrum还是KANBAN都是为了顺畅,高质量地交付有用的价值
2.云效敏捷项目管理
2.1 项目管理云效实操云效项目管理中的项目分类:
- 研发项目:适用于有明确结束时间的项目,或者没有明确时间但是研发团队固定的项目
- 默认启用的服务:还包括迭代,测试用例,应用
- 业务空间:管理产品或者业务的需求池,业务划分
- 默认启用的服务:需求,缺陷,图表
- 共同点:二者创建完毕后可以随意地增减默认启动的服务。
3.需求管理与版本规划基础
3.1需求收集与分析:
3.2需求管理流程: 需求收集–>需求分析–>需求分解与澄清–>需求优先级与排期
3.2.1需求收集:
-
原始需求–>用户需求
-
需求获取的方法:
- 文档与数据,访谈,调查问卷,原型,需求讨论会,竞品分析
3.2.2需求分析:
- 用户需求–>产品需求
- 针对待开发软件提供完整,清晰,具体的要求,确定软件必须实现哪些任务
- 工具:影响地图:why who how what
3.2.3基于用户故事的拆分与澄清:
需求层级:
-
Epic Story史诗故事:产品的主干任务,非常大
-
Feature特性:描述了产品的具有一个完整的功能,特性也比较大,持续数周,横跨几个迭代
-
用户故事:特性一般可以拆分为多个用户故事,每个用户故事都对用户有价值。但是单个用户故事却可能不能被正常使用或者是整个功能的细分场景
-
三要素:角色,活动,价值
- 角色:谁使用这个功能
- 活动:需要完成什么样的功能
- 商业价值:能带来什么样的价值
- 格式:AS a,I want ,so that | 作为一个<角色>,我想要<活动>,以便于<商业价值>
-
3C原则:
- 卡片(Card):用户故事写在小的记事卡片上
- 交谈(Conversation):用户故事背后的细节来源于和客户或者产品负责人的交流沟通
- 确认(Confirmation):验收测试确认用户故事被正确完成
-
3.2.4 需求优先级与排期发布与迭代的关系:一个项目可以有多个发布,一个发布可以有多个迭代去实现。
4.软件代码与质量管理
4.1版本控制
- 追踪与控制软件变更的实践
- 用来辅助进行版本控制的工具
- CVS,clearcase,svn,git,tfs
为什么要版本控制:
-
记录谁在什么时间做了什么
-
多人团队协作
- 同步
- 并行
-
发布管理
-
Commit Message提供额外的信息,解释变更的原因
-
Bug调试
分支策略:
-
主干开发,分支发布:
- 优点:管理简单
- 缺点:主干问题会阻碍开发进程
-
分支开发,主干发布:
- 优点:提供可靠的代码隔离
- 缺点:主干问题会阻碍开发进程
-
分支开发,分支发布:
- 优点:提供可靠的代码隔离,主干问题不会阻塞发布
- 缺点:集成时间点可能延后
5.软件测试与质量保证基础:
5.1软件测试:软件测试是使用人工或自动的手段来运行或测定某个软件系统的过程,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别
5.2 软件测试活动
5.3软件测试设计方法等价类:满足相互独立完全穷尽边界值:
5.4探索式软件测试探索式软件测试的价值:
- 理解学习被测软件
- 强迫被测软件展现所有功能
- 快速发现重要的缺陷
5.5软件分层分层自动化建议:
服务层:建议开发人员 业务层:建议开发人员或者测试人员 页面层:建议测试人员
6.云原生与DevOps
云原生应用的关注点:微服务,容器技术,CI/CD,DevOps
容器:与系统其他部分隔离开的一系列进程。提供了一种逻辑打包机制,以这种机制打包的应用可以脱离其实际运行的环境。
常见的容器:Docker,CoreOs rkt,LXC,OpenVZ,containerd,CRI-O
基本工作流:
- Build:从Docker File Build到Image
- Ship:Image push到容器仓库
- Run:Image运行起来成为一个容器实例