Más contenido relacionado
La actualidad más candente (17)
Similar a 20150528联动技术大讲堂15(刘胜)业务系统上线标准指引 (20)
20150528联动技术大讲堂15(刘胜)业务系统上线标准指引
- 5. 5
1.引言
1 引言
背景,目的,涉众,术语
2 上线参考要求
三大能力要求
三大测试要求
三大规范要求
3 附录
上线要求快速检查表
- 6. 6
软件开发文档
软件需求规格说明书 /SRS
软件接口设计说明书 /外部接口
软件概要设计文档 /总体设计
软件详细设计文档
软件功能测试计划
软件功能测试报告
软件性能测试报告
软件安全测试报告
软件验收测试报告
软件系统上线步骤
…
源代码
Jack W. Reeves @ C++ Journal
1992,What Is Software Design? ——Code As Design
2005,What Is Software Design: 13 Years Later
2005,Letter to the Editor
- 7. 7
需求规格说明书
Software Requirements Specification(SRS)
功能性需求 Functional Requirements
非功能性需求 Non-Functional Requirements
例:能满足100个人同时使用,页面反应时间不能超过6秒;
例:能7×24连续运行,年非计划宕机时间不能高于8小时;
软件体系架构
(关键需求决定架构,其余需求验证架构)
功
能
性
需
求
非功能性需求
高
可
用
,
高
可
靠
高
性
能
,
高
扩
展
多
功
能
,
高
扩
展
易
用
性
,
可
测
试
安
全
性
,
健
壮
性
可
复
用
性
互
操
作
性
可
维
护
性
可
移
植
性
- 8. 8
需求的重要性
事实1:缺陷在系统中的时间越长,解决它的代价就越大! 【债务】
事实2:一半以上的软件缺陷是在需求阶段引入的。 【不幸】
事实3:有接近一半的软件功能模块,从未被使用。 【Excel】
表1.
摘自《代码大全》
发现BUG阶段
需求 架构 建设 系统测试 发布之后
引入
BUG
阶段
需求 1 3 5~10 10 10~100
架构 -/- 1 10 15 25~100
建设 -/- -/- 1 1 10~25
图 1.不同阶段缺陷引入的分布 图2.IT项目实际功能模块使用频率的分布
- 9. 9
非功能需求
定义
需求=功能+质量+约束
质量=场景+定量
分类
功能性需求~表面功能
非功能需求~潜在质量
需求大局观
关键需求决定架构
其余需求验证架构
重要性
紧
急
性
功能性
需求
非功能
需求
1.重要不紧急 2.重要且紧急
3.紧急不重要
- 10. 10
FQC原则
分布式系统CAP定律
(Eric A. Brewer 2000)
———————————
Consistency 一致性
Availability 可用性
Partition tolerance 分布性
需求分析的FQC原则
(刘胜 2014)
————————————
Functional Features 功能需求
Quality 质量需求
Cost reduction 成本需求
Cost reduction
Pick Two !
- 13. 13
相关术语
单点故障(Single Point of Failure)
纵向扩展(Scale-Up)
横向扩展(Scale-Out)
负载均衡(Load Balance)
故障转移(Fail Over)
故障恢复(Fail Back)
灾难恢复(Disaster Recovery)
流量控制(Flow Control)
功能测试(Functional Testing)
性能测试(Performance Testing)
负载测试(Load Testing)
压力测试(Stress Testing)
- 15. 15
上线参考要求
三大能力要求
横向扩展能力*5项
故障转移能力*2项
流量控制能力*3项
三大测试要求
功能测试报告*2项
性能测试报告*4项
安全检测报告*4项
三大规范要求
应用发布规范*5项
应用部署规范*1项
应用运行规范*4项
凡事预则立,不预则废。
- 16. 16
不同维度
需求/设计/评审 测试 运维
高扩展 3.1横向扩展能力 3.1横向扩展能力
高可用 3.2故障转移能力
3.3流量控制能力
3.2故障转移能力
3.3流量控制能力
高性能 3.5性能测试 3.7.4隔离静态资源
安全性 3.6安全检测
易测试 3.4功能测试
易配置 3.7.2参数配置
易部署 3.7应用发布规范
3.8应用部署规范
易监控 3.9.1健康状态检查
3.9.2运行状态检查
易维护 3.9.3业务日志规范
3.9.4增量数据规划
…
- 18. 18
2.1 故障转移能力
故障节点
后台服务系统 流量控制/分流
后台数据库 !!!
解决方案
应用级解决方案
TDDL,UDDS(动态数据源)
中间层解决方案
DRDS,UDAL(数据访问层)
必备工具
数据复制中心
服务配置中心
- 19. 19
2.2 横向扩展能力
相关节点
负载均衡器 如 LVS/HaProxy/Nginx等
应用系统 如 Tomcat/Resin等
消息队列 如 ActiveMQ/Kafka等
非关系型库 如 Memcached/Redis/MongoDB等。
关系数据库 如 DB2/Oracle/MySql等
…
存储、网络、机房、城市
能力分级
1.单点:存在单点故障;
2.主备:两个互为主备,无单点,存在性能瓶颈;
3.双活:两个同时工作,无单点,也无性能瓶颈;
4.多活:多个同时工作,无单点,也无性能瓶颈;
- 20. 20
2.3 流量控制能力
概念:
指控制发送方的发送数据量,使其不超过接收方的接收能力。
目的:
有效地防止由于网络中瞬间的大量数据对网络和服务器带来的
冲击,保证网络和服务器系统高效而稳定的运行。
分类:
网络流量控制:是针对在单位时间内的网络带宽、被发送到网
络中的数据量,或者是最大速率的数据流量发送。
服务流量控制:主要是针对单位时间内的服务请求数量进行控
制,及时分流或限流,防止后台某单一服务器的过载,而无法
响应用户请求,甚至导致整个服务器集群的“雪崩”。
控制——分流、降级、限流
- 21. 21
2.3.1 分流
相关节点
业务应用
数据库 【读写分离/多读,多写】
场景:已具备横向扩展能力
实现:
模式1:负载均衡器 【如LVS,Ha-Proxy,Nginx】
模式2:服务查找器 【如DNS,服务配置中心】
相关:
灰度发布
AB测试
- 22. 22
2.3.2 降级
节点
业务应用
数据库 不具备
场景:无法通过分流解决服务可用性问题
实现:将非关键业务降级
关闭推荐应用,以减少数据库和服务资源占用;
非关键的业务信息不进行更新,如商品价格;
远程配置服务改为本地访问内存方式;
…
相关:
- 23. 23
2.3.3 限流
节点:
业务应用
数据库 不具备
场景:无法通过分流和降级解决服务可用性问题
实现:
访问接入层/代理服务:可通过配置限制前端访问流量;
服务端应用:可通过队列大小,滑动窗口,超时时间等机制,
控制系统内部单位时间的交易处理数量。
相关:
- 24. 24
2.4 功能测试指标
黑盒测试 ——出具“测试报告”
白盒测试 ——检查测试覆盖率,暂不作要求
兼容性测试
针对Web UI应用
不同浏览器下的兼容性测试:包括IE,Firefox,Chrome等
不同J2EE容器的兼容性测试:包括Resin-3.x/4.x和Tomcat-7x/8x等。
针对手机客户端UI应用
iOS客户端——两代iPhone手机,两个以上iOS版本
手机:4/4s,5c/5s,6/6plus
版本:6.x,7.x,8.x,..
Android客户端——
手机:五个厂商十款不同手机
版本:两个以上Android版本(4.x,4.4,5.x)
- 25. 25
2.5 性能测试指标
环境
硬件标配参考:x64双核CPU,8G内存,普通磁盘
性能测试
单机性能测试+稳定性测试
集群性能测试+稳定性测试
弹性负载测试
服务依赖测试
- 26. 26
2.5.1 单机&集群
3.5.1 单机性能测试 & 3.5.2 集群性能测试
前提:
除了依赖数据库、缓存等外,不依赖其他后台子系统;
依赖后台子系统,但响应延迟时间在可控范围内(<1s)
补充要求:
2机集群性能至少达到单机性能的1.7倍;
4机集群性能至少达到单机性能的3倍;
业务系统(单机系统) 并发用户数 TPS/QPS Rt(Delay) 测试时间
非核心系统(×1) >=100 >=200 <=6s 24小时
核心系统(×1) >=300 >=1000 <=6s 72小时
业务系统(多机集群) 并发用户数 TPS/QPS Rt(Delay) 测试时间
非核心系统(×4) >=400 >=600 <=6s 24小时
核心系统(×4) >=1200 >=3000 <=6s 72小时
- 27. 27
2.5.3 弹性&耦合
3.5.3 弹性负载测试
步骤:
单机3倍负载压力, 连续15分钟超负荷压力测试;
中止压力测试客户端, 等待30分钟,无明显下降;
恢复1倍负载压力, 进行15分钟标准压力测试;
3.5.4 耦合性负载测试
原因:后台子系统的响应延迟时间不可控
目标:解除紧耦合关系,具备一定容错能力
业务系统(单机系统) 并发用户数 TPS/QPS Rt(Delay) 测试时间
核心系统(×1) >=300 >=3000 <=6s 1小时
后台子系统延迟 并发用户数 TPS/QPS Rt(Delay) 测试时间
固定延迟120s 大于等于100 大于等于200 <=60s 1小时
随机延迟1~120s 大于等于300 大于等于1000 <=60s 1小时
- 28. 28
2.6 安全检测评估
应用类型
对外提供Web服务 漏洞扫描、渗透入侵
对外提供App客户端 混淆、加壳、反篡改、反分析
参考文档
华为Web安全测试规范_V1.2.1.doc
绿盟远程安全评估系统(漏洞管理系列)用户手册.pdf
光荣之路系列测试培训-安全测试.pdf
OWASP 安全编码规范
OWASP 测试指南
OWASP 风险评级方法论
(通付盾)移动应用支付安全三战法.pdf
- 29. 29
2.6.1 安全认证问题
身份认证的要求:
认证过程信息安全:不允许传输密钥,而是用密钥参与MAC运算,再做比对。
认证过程传输安全:如通过SSL方式传输;
认证信息保存安全:服务端不保存密钥;或仅保存密钥的哈希值;
会话管理的要求:
会话信息脱敏性:会话信息中不保存敏感信息,如密码、身份证等。
会话信息安全性:会话只允许授权访问,不允许匿名访问或修改。
会话管理可扩展:会话管理器不是单点,建议采用分布式架构。
第一类认证 第二类认证
典型案例 SMPP/CMPP/… HTTP-Auth(BASIC,DIGEST)
独立认证请求报文 独立认证请求报文 无
每次携带认证信息 否 每次携带认证信息
状态性 有状态 无状态
高扩展性 难,依赖分布式会话服务 易,可以透明地横向扩展
故障转移 无 有
性能优化 提高客户端性能 保护服务端性能
防重放攻击 简单 无,每次使用相同认证信息/Basic;
有,每次使用不同认证流水/Digest
- 30. 30
2.6.2 安全传输问题
内部传输:
对外提供访问的IT系统,应该与核心系统的网段隔离。
部署在非核心网段上;
当其访问核心网段时,需由网络部提供合适的访问端口和服务
外部传输:
对外提供访问的IT系统,当涉及敏感信息时,
必须通过SSL等方式进行加密传输;
对用户上传的文件,必须进行充分合理的检查验证;
确保文件完整性; 【CRC,MAC】
确保文件不被篡改; 【MAC,签名】
确保上传目录范围,无可执行权限;【防止木马、病毒等】
- 31. 31
2.6.3 非法注入问题
原因:
应用程序缺少对输入进行安全性检查,攻击者把一些包含指令
数据发送给解释器,解释器会把收到的数据转换成指令执行。
类型:
SQL注入
导致整个数据库可被读写与修改;
攻击者还可能得到整个数据库访问权限或系统账户的访问权限;
攻击者甚至能得到操作系统管理员的权限;
OS Shell注入
LDAP注入
XPath注入
Hibernate注入
…
- 34. 34
2.7.1 目录结构
3.7.1 目录结构
Applications
重启脚本
日志目录
配置参数
静态
动态
WebApps
静态资源
日志目录
$(APPNAME)
----启停脚本:start.sh,stop.sh,restart.sh
----日志配置:log4j.properties 或 logback.xml
----./lib 全部依赖库(*.jar)
----./log 通过ln建立的软链接
----./conf 静态配置参数文件
$(WEBAPPNAME)
----启停脚本:start.sh,stop.sh,restart.sh
----日志配置:log4j.properties 或 logback.xml
----./WEB-INF
----./WEB-INF/classes
----./WEB-INF/lib
----./WEB-INF/conf
----./WEB-INF/jsp
----./static 静态文件(jpg/css/js等)
----./log 通过ln建立的软链接
- 35. 35
2.7.2 参数配置
3.7.2 参数配置
补充:待上线的业务系统,必须提供自动化打包脚本,生成单一部署文
件,在目标主机上解压即可运行,而无需再修改配置文件,从而为自动
化部署提供方便。
3.7.3 启停脚本 自动化运维
3.7.4 隔离静态资源 性能
3.7.5 自动打包脚本 自动化部署
启动参数 说明 配置方式
静态配置 启动时所需,相对固定的配置参数。测试环境和生产环境
的配置完全相同;多机部署时不同主机的配置完全相同。
如:组件依赖关系等。
本地化:
配置文件
动态配置 启动时所需,经常修改的配置参数。测试环境和生产环境
的配置有所不同;多机部署时不同主机的配置有所不同。
如:涉及权限的用户名和密码,数据库连接池大小,线程
池大小等。
集中化:
配置中心
- 36. 36
2.8 应用部署规范
3.8.1 自动部署脚本
参考步骤——
以普通用户登录主机,进入相应目录;
通过URL下载获取单一部署文件(tar、jar、war格式);
执行文件完整性校验;
解压部署文件(或者将war复制到J2EE容器相应位置);
执行config.sh脚本,完成jdk版本检测、log目录初始化等工作。
执行start.sh脚本,启动应用进程;
补充改进——
与Web管理平台集成;
与Docker工具集成;
增量部署 vs. 全量部署
- 37. 37
2.9 应用运行规范
3.9.1 健康状态输出
业务调用接口——响应状态,响应时间;
运行指标接口——内存大小,缓存对象大小,队列大小等
3.9.2 运行指标输出——运行时产生指标参数
3.9.3 业务日志规范
避免重复日志——简要日志,STDOUT,
简要日志规范——
日志级别规范——
日志切换规范——周期(小时)
3.9.4 增量数据规划
日志文件,静态文件,数据库
备份周期?增量or全量?压缩?日志合并?NAS/磁带?
- 38. 38
3.附录:上线系统快速检查表
检查项 类型 评估效果 补充说明
1.1 横向扩展/负载均衡器 硬件|软件 0缺失|1单点|2主备|3多活
1.2 横向扩展/应用系统 WEB|TCP 1单点|2主备|3多活
1.3 横向扩展/消息队列 集中|集群 1单点|2主备|3双活|4多活
1.4 横向扩展/关系数据库 DB2|MySql|… 1单点|2主备|3多读|4双写或多写
1.5 横向扩展/非关系型库 MC|Redis|… 1单点|2主备|3多读|4双写或多写
2.1 ○ 故障转移/后台服务 0缺失|1下次转移|2本次转移
2.2 ○ 故障转移/后台数据库 0缺失|1下次转移|2本次转移
3.1 ○ 流量控制/分流 0缺失|1具备
3.2 流量控制/限流 0缺失|1具备
3.3 流量控制/降级 0缺失|1具备
4.1 ● 功能测试/黑盒测试 0缺失|1测试通过 用例数=___
4.2 功能测试/白盒覆盖率 (暂不检查)
4.3 功能测试/兼容性测试 Web-UI| 客户端 环境__;版本__
5.1 ○ 性能测试/单机性能*1 QPS/TPS/Delay 并发数=___
5.2 ○ 性能测试/集群性能*4 QPS/TPS/DT/*N 并发数=___
5.3 性能测试/弹性负载 0缺失|1具备弹性
5.4 性能测试/服务耦合 0缺失|1松耦合/具备容错性
6.1 ○ 安全检测/安全认证 0缺失|1部分|2全部
6.2 ○ 安全检测/安全传输 0缺失|1部分|2全部
6.3 ○ 安全检测/非法注入 0严重|1轻微|2无
7.1 ● 发布/目录结构 0不符|1符合
7.2 ● 发布/启停脚本 0不符|1符合
7.3 ● 发布/隔离动态匹配值 0不符|1动静分离|2配置中心
7.4 ● 发布/隔离静态资源 0缺失|1具备
7.5 ● 发布/自动化打包 0缺失|1具备
8.1 ● 部署/自动化部署 0缺失|1具备
9.1 ○ 运行/健康状态检查 0缺失|1部分|2全部
9.2 ○ 运行/运行状态检查 内存|线程|队列 0缺失|1部分|2全部
9.3 ● 运行/业务日志规范 重复|切换|简要 0不符|1符合
9.4 ○ 运行/增量数据规划 日志|文件|DB 0缺失|1部分|2全部
- 41. 41
集群方式 说明 可用性% 年停机
单机方式 1 -(88/24/365) 99(假设) 87.6H
双机集群 1 -(88/24/365)^2 99.99 53m
三机集群 1 -(88/24/365)^3 99.9999 32s
1 概念:系统可用性
系统可用性 = 运行时间 / (运行时间+停机时间)
集中式高可用 vs. 分布式高可用
术语 说明 可用性% 年停机 容灾 说明
Available 较可用 99 87.6H 无 一般业务
Highly Available 高可用 99.9 8.8H 局部 故障恢复,主备
Extremely Available 极可用 99.99 53m 较强 自动故障转移
Most Available 最可用 99.999 5m 最强 自动灾难恢复
可
用
性
级
别
99%
投入成本
99.9% 99.99% 99.999%