分类目录归档:生活

Scrum中story point的预估

一、什么是story point

Story point,翻译成中文即为故事点。
故事点是Scrum团队使用的一种随机度量方式,用来度量实现一个故事需要付出的工作量”,还可能是“故事点数的估算混合了对于开发特性所要付出的努力、开发复杂度、个中风险以及类似东西。
我们也可以理解为可以用story point来衡量一个issue的难度或工作量。

二、story point的预估

估计story point常用的两个标准如下,在这里我主要以Fibonacci为例讲解。

  • Fibonacci: 0, ½, 1, 2, 3, 5, 8, 13, 21,34, 55, 89
  • Power of 2: 0, 1, 2, 4, 8, 16, 32, 64,128

story point虽然可以分为12个等级,但我们在现实中一般只采用0、1、2、3、5、8、13这七个等级。如果在预估中发现超过13的,我们一般把任务进行分割,分割为两部分,循环该步骤,直至所有point都小于等于13。

一开始我们选取之前预估为3的Issue来跟要预估的Issue进行比较,如果两个工作量差不多,设置该Issue的story point为3,如果工作量略少,则为2,更少的话则设置为1,如果该Issue不需要完成的则设置为0,该情况一般不会出现。
同理可得,如果工作量较大,相应的设置为5/8/13。

基于JIRA的Scrum敏捷开发的项目管理

Scrum敏捷开发的关键字就是增量、迭代,他更重视项目团队之间的现场沟通,不向传统瀑布式开发那样需要万事具备,才开始开发,Scrum在大方向和小故事点确认好了后,团队就可以开动了。

Scrum的团队一般都不大,一Scrum团队人数一般在10人左右,主要角色有:

product owner(产品负责人)、scrum master(团队负责人)、scrum team(开发/测试团队)。

  • Product owner :需求方,提出需求,能对功能流程、业务流程拍板的人。
  • Scrum master :团队负责人,负责解决团队各类问题,领导项目的人。
  • Scrum team :项目执行人员,一般指项目具体开发和测试的人员。

Scrum开发的步骤:

步骤一:头脑风暴

如果product owner对产品需求非常清楚,就可以省略这个步骤;开发遵守“先紧后松”原则,必须先把需求了解清楚;这里product owner可以召集技术团队/用户群体对其需求进行公开征求意见,最后输出一个产品建议表。

步骤二:product owner对产品建议表进行筛选并做减法,提炼最核心的需求。

在确定了需求后,由scrum master进行输出prd(product requirement document),这里就和传统的瀑布模式一样了,该有的文档都必须有,必须由scrum master和product owner确定好需求,包括业务逻辑、功能流程等。

步骤三:工作量估算

把任务量化,包括原型、logo设计、ui设计、前端开发等,尽量把每个工作分解到最小任务量,最小任务量标准为工作小时不能超过16小时,然后估算总体项目时间。

把每个任务都贴在白板上面,白板上分三部分:

(1)to do-待完成(2)in progress-进展中(3)done-完成

步骤四:Sprint

经过讨论后,已经把任务量化到需要具体完成的时间,然后把n个任务按照开发的重要度,组合成n个sprint(冲刺),每次执行一个sprint。

  • Sprint:每个sprint都是独立的,一般先做主要功能,再到次要功能,再到小功能,最后的sprint一般是修复bugs。)
  • Sprint:因为任务都被量化了,每天工作了多少小时,完成了多少任务量,通过每天的例会scrum master就非常清楚,并且在time burn down chart(时间燃尽表)进行表示,我们就可以直观看到任务的进度了,而且是具体到多少小时。
  • Sprint:在burn down chart里面,不管任务是否按时完成都必须记录。
  • Bugs:每个sprint都必须测试,尽量大家一起测试,如果太多bugs就开一个sprint来修复bugs。
  • 站会:每天要做的是,要开standing meeting,因为大家的时间都是非常紧张的,一般是站着开的,时间不要长,10分钟左右为宜。会议必问开发团队每个人三个问题:(1)今天做了什么(2)明天打算做什么(3)遇到什么困难
  • scrum master要解决开发团队的困难,让项目快速进展下去;每周一次周会,product owner最好在场;每个月一次月会,product owner最好在场,指出产品开发是否在product owner期待范围内;如此重复下去,直到开发完成。

(时间燃尽表:scrum的精华,通过该表格可以可视化任务的时间进度,从图中可以看到,day1是整个任务的总共时间,每天按照任务完成度更新剩余时间,或者增加时间(例如发现一个技术难点、团队成员请假等要增加开发时间))。

步骤五:评估

product owner和其团队/用户会对产品进行评估,可能还会有各种不满意的地方,不过product owner要求需要改的地方还是要改的,建立一个bugs sprint,把产品做到product owner最想要为止。

补充说明

  • SCRUM也有其自身的先天缺点,就是对团队要求高,团队成员有能力且相互信任度高,不会相互推卸责任。
  • 新团队使用该方法,起初会有各种问题,需要多多磨合。

 

基于JIRA的Scrum的项目管理

准备工作:

1、在上面的第三步时需要做工作拆分及工作量估算,会得到一个类似下面的项目计划表,JIRA的Scrum项目管理也是基于此表

p_w_picpath

2、团队中所有成员必须已经在JIRA中建立用户,并可以正常登陆

p_w_picpath

正式JIRA中建立Scrum开发项目

一、建立一个Scrum的BoardsScrum的团队

p_w_picpath

p_w_picpath

p_w_picpath

p_w_picpath

p_w_picpath

这是新建好的Boards,同时也建好了项目。

p_w_picpath

p_w_picpath
二、开发项目常规管理

p_w_picpath

1、项目编辑

p_w_picpath

p_w_picpath

2、版本开发周期设置

p_w_picpath

3、添加软件开发的功能模块

p_w_picpath

4、修改工作流

p_w_picpath

p_w_picpath

默认工作流太简单,没有QA等功能,需要重新建立工作流,或者增加一个工作流:

p_w_picpath

p_w_picpath

这个流程比较适合Scrum项目使用,大概流程如下:建立好每个故事或子任务后,它们都处于 TO DO状态,团队成员登陆JIRA,可以看到分配给自己的任务,团队成员选择一个优先要做的任务,并把当前任务更改为IN Progress,如果遇到难题进行不下去了,就把这个任务状态改为Blocked,当哪天又可以解决的时候,再把当前任务状态改为In Progress,如果任务顺利完成,就把当前任务改成Ready For QA状态,等待进行软件测试,如果测试通过没有问题,QA就把这个任务状态改为DONE,此时这个任务就完成了。如果测试中有问题,QA会重新把任务状态改为IN PROGRESS状态,并分配处理人为开发者,同时备注问题原因,由开发者处理问题后重新提交Ready For QA。当整个Sprint都测试通过没问题,这个SPrint就结束了,但如果后来集成测试中还有问题,或者任务有了小的要求修改,相关任务,需要REOPENED,重新开始TO DO去一个新的循环。

p_w_picpath

返回项目管理中

p_w_picpath

三、Scrum敏捷开发设置

1、基本设置完成后,返回可以看到功能已经全部具备,下面开始添加Story、Task了

p_w_picpath

2、建立大一些的用户故事——Epics

p_w_picpath

p_w_picpath

p_w_picpath

以下设置是需要先在第一个Sprint的Planning Meeting上已经确定了Story和细分的Story Point 。

p_w_picpath

p_w_picpath

3、建立第一个Sprint,并重命名,方便识别

p_w_picpath

p_w_picpath

4、建立story(即Scrum开发中所说的Story,如果还有子任务,这个story可以不指定经办人)

p_w_picpath

p_w_picpath

p_w_picpath

p_w_picpath

选择Stroy输入Estimate(预估天数)及子任务

p_w_picpath

p_w_picpath

 

录完了所有的story后,下面按照计划表录入子任务

p_w_picpath

指定每个子任务的经办人

p_w_picpath

如此方法,建立完成所有的子任务

p_w_picpath

5、开始Sprint

p_w_picpath

设置第一个Sprint的开始及结束时间

p_w_picpath

有了活动Sprint,Active Sprint项目才能有内容。

p_w_picpath

在Active Sprint项目中增加Ready For QA列,用于过程测试动作的显示。

p_w_picpath

p_w_picpath

p_w_picpath

p_w_picpath

p_w_picpath

6、设置管理面板(为了方便看到整个项目进度情况及分配 给我的任务,可以根据需要专门定制管理面板)

p_w_picpath

p_w_picpath

增加一个新面板,并应用给所有人

p_w_picpath

p_w_picpath

p_w_picpath

通过增加小工具来增加工具

p_w_picpath

p_w_picpath

修改及移动已有的小工具

p_w_picpath

p_w_picpath

创建完成的面板,在用户一登陆时就会看到这个

p_w_picpath

项目中的6大功能板块:

一、Backlog(查看Epics-大故事,Task-小故事,Sub-Tasks-故事点。)

p_w_picpath

二、Active Sprints(查看进行中的Sprint的进展情况:To Do/In Progress/Done)

p_w_picpath

三、Releases(版本发布情况)

p_w_picpath

四、报表(各类统计报表)

p_w_picpath

五、Issues(问题列表)

p_w_picpath

六、模块(每个模块中的问题数量)

p_w_picpath

 

————————————————————————————————————————————————————————————————————————————————

说明:JIRA中可以建立项目的类型(上例是建立Boards时系统自动建立的软件项目,是默认的第一个项目类型)

p_w_picpath

软件类:

1、Scrum软件开发

p_w_picpath

 

2、看板软件开发

p_w_picpath

3、基本软件开发

p_w_picpath

业务类:

4、任务管理

p_w_picpath

5、项目管理

p_w_picpath

6、过程管理

p_w_picpath

Centos 字体安装

第一步:查看安装了那些字体  命令:fc-list :lang=zh

安装方法:

1、先从你本机 C:\Windows\Fonts 拷贝或者网络上下载你想要安装的字体文件(*.ttf文件)(把*.ttc重命名为*.ttf)

到/usr/share/fonts/chinese/TrueType 目录下(如果系统中没有此目录,则自行mkdir创建,亦可重命名为自己喜欢的文件夹名)

2、修改字体文件的权限,使root用户以外的用户也可以使用

# cd /usr/share/fonts/chinese/TrueType
# chmod 755 *.ttf

3、建立字体缓存

# mkfontscale (如果提示 mkfontscale: command not found,需自行安装 # yum install mkfontscale )
# mkfontdir
# fc-cache -fv (如果提示 fc-cache: command not found,则需要安装# yum install fontconfig )
4、重启计算机(似乎必须重启才会有效)
# reboot

apache mesos 学习路线

第 1 部分 你好,Mesos …………………………………………… 1
1 初识 Mesos …………………………………………………………………… 3
1.1 遇见 Mesos …………………………………………………………………………………………… 4
1.1.1 理解它如何工作 ………………………………………………………………………… 5
1.1.2 虚拟机和容器的比较 …………………………………………………………………. 7
1.1.3 知道何时及为何使用 Mesos……………………………………………………….. 9
1.2 为什么我们要重新思考数据中心 ………………………………………………………… 10
1.2.1 资源划分 …………………………………………………………………………………. 11
1.2.2 应用部署 …………………………………………………………………………………. 12
1.3 Mesos 分布式架构 ………………………………………………………………………………. 13
1.3.1 masters …………………………………………………………………………………….. 13
1.3.2 slaves ………………………………………………………………………………………. 14
1.3.3 frameworks ………………………………………………………………………………. 15
1.4 小结 …………………………………………………………………………………………………… 15
2 使用 Mesos 管理数据中心资源 ………………………………………….17
2.1 Spark 简要介绍 …………………………………………………………………………………… 18
2.1.1 独立集群上的 Spark…………………………………………………………………. 18
2.1.2 Mesos 上的 Spark …………………………………………………………………….. 19
2.2 在 Mesos 上运行 Spark job ………………………………………………………………….. 21
2.2.1 在集合中寻找素数 …………………………………………………………………… 22
2.2.2 获取与打包代码 ………………………………………………………………………. 23
2.2.3 提交作业 …………………………………………………………………………………. 24
2.2.4 观察输出 …………………………………………………………………………………. 24
2.3 进一步探索 ………………………………………………………………………………………… 26
2.3.1 Mesos UI …………………………………………………………………………………. 26
2.3.2 Spark UI…………………………………………………………………………………… 26
2.4 小结 …………………………………………………………………………………………………… 28
第 2 部分 Mesos 核心……………………………………………. 31
3 安装 Mesos ………………………………………………………………….33
3.1 部署 Mesos …………………………………………………………………………………………. 34
3.1.1 Mesos 集群组件……………………………………………………………………….. 34
3.1.2 开发环境的注意事项 ……………………………………………………………….. 35
3.1.3 生产环境的注意事项 ……………………………………………………………….. 36
3.2 安装 Mesos 和 ZooKeeper ……………………………………………………………………. 38
3.2.1 使用安装包部署 ………………………………………………………………………. 38
3.2.2 从源文件编译并安装 ……………………………………………………………….. 40
3.3 配置 Mesos 和 ZooKeeper ……………………………………………………………………. 43
3.3.1 ZooKeeper 配置 ……………………………………………………………………….. 43
3.3.2 Mesos 配置………………………………………………………………………………. 45
3.4 安装并配置 Docker……………………………………………………………………………… 50
3.4.1 安装 Docker …………………………………………………………………………….. 51
3.4.2 配置 Docker …………………………………………………………………………….. 53
3.4.3 配置 Docker 专用的 Mesos slaves ……………………………………………… 54
3.5 升级 Mesos …………………………………………………………………………………………. 54
3.5.1 升级 Mesos masters ………………………………………………………………….. 55
3.5.2 升级 Mesos slaves …………………………………………………………………….. 55
3.6 小结 …………………………………………………………………………………………………… 56
4 Mesos 原理 ………………………………………………………………….57
4.1 调度和分配数据中心资源 …………………………………………………………………… 57
4.1.1 理解资源调度 ………………………………………………………………………….. 58
4.1.2 理解资源分配 ………………………………………………………………………….. 59
4.1.3 定制 Mesos slave 资源和属性 …………………………………………………… 61
4.2 使用容器隔离资源 ……………………………………………………………………………… 62
4.2.1 隔离并监控 CPU、内存和磁盘 ………………………………………………… 63
4.2.2 网络监控和限速 ………………………………………………………………………. 65
4.3 了解容错和高可用 ……………………………………………………………………………… 68
4.3.1 容错 ………………………………………………………………………………………… 70
4.3.2 高可用 …………………………………………………………………………………….. 70
4.3.3 处理出错和升级 ………………………………………………………………………. 70
4.4 小结 …………………………………………………………………………………………………… 76
5 日志记录和调试 ……………………………………………………………77
5.1 理解和配置 Mesos 日志记录 ……………………………………………………………….. 78
5.1.1 日志文件的路径和解释 ……………………………………………………………. 78
5.1.2 配置日志记录 ………………………………………………………………………….. 80
5.2 调试 Mesos 集群及其任务 …………………………………………………………………… 81
5.2.1 使用 Mesos Web 接口 ………………………………………………………………. 82
5.2.2 使用内置命令行工具 ……………………………………………………………….. 89
5.2.3 使用 Mesosphere 的 mesos-cli 工具 …………………………………………… 90
5.3 小结 …………………………………………………………………………………………………… 92

6 生产环境中的 Mesos ………………………………………………………93
6.1 监控 Mesos 和 Zookeeper 集群…………………………………………………………….. 94
6.1.1 监控 Mesos master ……………………………………………………………………. 94
6.1.2 监控 Mesos slave ……………………………………………………………………… 96
6.1.3 监控 ZooKeeper ……………………………………………………………………….. 97
6.2 修改 Mesos master 的法定数目 ……………………………………………………………. 99
6.2.1 添加 master 节点 ……………………………………………………………………. 100
6.2.2 移除 master 节点 ……………………………………………………………………. 100
6.2.3 替换 master 节点 ……………………………………………………………………. 101
6.3 安全和权限控制的实施 …………………………………………………………………….. 101
6.3.1 Slave 和 framework 的身份认证………………………………………………. 102
6.3.2 用户授权和访问控制列表 ………………………………………………………. 104
6.3.3 framework 速率限制……………………………………………………………….. 107
6.4 小结 …………………………………………………………………………………………………. 110
第 3 部分 运行 Mesos…………………………………………… 113
7 使用 Marathon 部署应用 ………………………………………………. 115
7.1 了解 Marathon…………………………………………………………………………………… 115
7.1.1 探索 Marathon 的 Web 接口和 API ………………………………………….. 117
7.1.2 服务发现和路由 …………………………………………………………………….. 118
7.2 部署 Marathon 和 HAProxy ……………………………………………………………….. 121
7.2.1 安装并配置 Marathon……………………………………………………………… 121
7.2.2 安装并配置 HAProxy……………………………………………………………… 124
7.3 创建并伸缩应用 ……………………………………………………………………………….. 127
7.3.1 部署简单的应用 …………………………………………………………………….. 127
7.3.2 部署 Docker 容器 …………………………………………………………………… 130
7.3.3 执行健康检查和滚动应用更新 ……………………………………………….. 131
7.4 创建应用组 ………………………………………………………………………………………. 134
7.4.1 理解应用组的构成 …………………………………………………………………. 134
7.4.2 部署应用组 ……………………………………………………………………………. 135
7.5 日志和调试 ………………………………………………………………………………………. 137
7.5.1 配置 Marathon 日志………………………………………………………………… 137
7.5.2 调试 Marathon 应用和任务……………………………………………………… 138
7.6 小结 …………………………………………………………………………………………………. 140
8 使用 Chronos 管理计划任务 ………………………………………….. 143
8.1 了解 Chronos…………………………………………………………………………………….. 144
8.1.1 探索 Chronos 的 Web 接口和 API ……………………………………………. 145
8.2 安装并配置 Chronos………………………………………………………………………….. 147
8.2.1 先决条件的检验 …………………………………………………………………….. 147
8.2.2 安装 Chronos………………………………………………………………………….. 148
8.2.3 配置 Chronos………………………………………………………………………….. 149
8.3 使用简单的作业来工作 …………………………………………………………………….. 150
8.3.1 创建基于计划的作业 ……………………………………………………………… 150
8.3.2 使用 Docker 创建基于计划的作业 ………………………………………….. 153
8.4 使用复杂的作业来工作 …………………………………………………………………….. 155
8.4.1 组合基于计划和基于依赖的作业 ……………………………………………. 155
8.4.2 形象化作业的依赖关系 ………………………………………………………….. 158
8.5 监控 Chronos 作业的输出和状态……………………………………………………….. 159
8.5.1 作业失败事件的通知和监控 …………………………………………………… 159
8.5.2 通过 Mesos 观察作业的标准输出和标准错误………………………….. 161
8.6 小结 …………………………………………………………………………………………………. 162
9 使用 Aurora 部署应用和管理计划任务 ……………………………… 165
9.1 Aurora 简介 ………………………………………………………………………………………. 166
9.1.1 Aurora 调度器 ………………………………………………………………………… 167
9.1.2 Thermos 执行器和观察者 ……………………………………………………….. 167
9.1.3 Aurora 的用户和管理员客户端 ……………………………………………….. 168
9.1.4 Aurora DSL(Domain-Speci?c Language,特定领域语言)……….. 169
9.2 部署 Aurora ………………………………………………………………………………………. 169
9.2.1 在开发环境尝试 Aurora………………………………………………………….. 170
9.2.2 构建和安装 Aurora…………………………………………………………………. 171
9.2.3 配置 Aurora……………………………………………………………………………. 174
9.3 部署应用 ………………………………………………………………………………………….. 178
9.3.1 部署一个简单的应用 ……………………………………………………………… 179
9.3.2 部署基于 Docker 的应用 ………………………………………………………… 182
9.4 管理计划任务 …………………………………………………………………………………… 184
9.4.1 创建 Cron 作业 ………………………………………………………………………. 184
9.4.2 创建基于 Docker 的 Cron 作业 ……………………………………………….. 185
9.5 管理 Aurora ………………………………………………………………………………………. 187
9.5.1 管理用户和配额 …………………………………………………………………….. 187
9.5.2 执行维护 ……………………………………………………………………………….. 189
9.6 小结 …………………………………………………………………………………………………. 190
10 framework 开发 ………………………………………………………. 191
10.1 framework 基础……………………………………………………………………………….. 192
10.1.1 编写 framework 的时机和缘由………………………………………………. 194
10.1.2 调度器的实现 ………………………………………………………………………. 194
10.1.3 执行器的实现 ………………………………………………………………………. 197
10.2 调度器开发 …………………………………………………………………………………….. 201
10.2.1 使用调度器 API……………………………………………………………………. 202
10.2.2 使用 SchedulerDriver…………………………………………………………….. 204
10.3 执行器开发 …………………………………………………………………………………….. 205
10.3.1 使用执行器 API……………………………………………………………………. 205
10.3.2 使用执行器驱动程序 ……………………………………………………………. 207
10.4 运行 framework……………………………………………………………………………….. 208
10.4.1 在开发环境中部署 ……………………………………………………………….. 208
10.4.2 生产环境部署的注意事项 …………………………………………………….. 210
10.5 小结 ……………………………………………………………………………………………….. 211
附录 A 案例研究 :Mesosphere DCOS,企业版 Mesos 分布式集群.. 213
附录 B Mesos 框架与工具的列表 …………………………………………. 225