设计与实现阶段的可靠性工作

简介: 【7月更文挑战第23天】

可靠性设计包括新功能的可靠性设计和现有功能的可靠性改进设计。对需求规划阶段确定的可靠性目标和要求进行分解,在设计阶段分模块、分功能地进行应用架构设计、系统架构设计、部署架构设计。

设计错误比代码Bug带来的危害更高。这个阶段应当考虑设计的合理性,评估引入故障风险的可能性,在对风险有充分认识的基础上对单元模块的复杂性、健壮性进行设计。从不同的层次看架构会包括很多设计,从宏观视角来看包括部署架构、应用架构、系统架构、业务架构等,这里我们重点关注的是这些架构中的可靠性的设计工作。

架构设计阶段的可靠性工作要考虑容错、避错、改错的设计,也要充分考虑可扩展性、可维护性、可伸缩性的设计,以及如何应对突发大流量的设计。在核心模块应用逻辑中还要考虑如何进行降级、限流,如何隔离局部故障,如何做到异常时还能最大限度服务用户等设计。

1、业务架构设计

业务架构设计是把业务需求拆解为软件功能模块的需求。业务架构设计包括大模块的设计,也包括用户使用业务服务的交互流程。如业务架构可拆分为用户系统、交易/支付系统、订单系统、商品系统、库存系统、活动系统、推荐系统等,商品系统也可以按品类、行业进行拆分。业务架构会决定技术团队如何进行组织分工,业务架构的拆分方式也会影响可靠性工作的开展。

2、系统架构设计

系统架构设计是指整个软件系统的总体设计,这个过程把应用逻辑看作一个架构单元,把周边支撑模块、基础设施服务、中间件组件、数据库、数据存储等也作为独立的架构单元。系统架构主要考虑组件选型以及组件之间的调用关系。这些架构单元自身也是一个复杂的分布式软件系统,也有可靠性工作的问题。在调研开源组件、开源框架时需要深入熟悉其中的设计原理才能充分用好它们,即使用了成熟的开源框架,也要考虑与公司现有技术栈、基础设施服务等的融合。

实践经验:很多公司有架构委员会,当对架构进行重大改进、建设新的中间件、引入新组件时会引入评审过程。架构师会提出设计中的可靠性风险,洞察未能关注到的点,提供更优的设计建议。

3、应用架构设计

应用架构设计是指根据业务需求设计应用的层次结构,制定应用规范、定义接口和数据交互协议等。包括应用进程与应用进程的通信机制、应用与数据进行通信的架构,选用同步通信或异步通信方式,采用RPC、RESTful、JSON、XML等进程间通信协议。也包括应用内的逻辑设计、代码结构设计,如何设计分布式的事务,如何设计缓存服务和策略,如何设计高可用的数据库等。

实践经验:基础架构和微服务框架团队,会不定期分析生产环境微服务运行过程,特别是异常后的处理过程,进行改进。如增加监控(如队列监控、内部状态)、增加配置项参数、增加可靠性相关能力(如拨测能力)等。

实践案例:在某个阶段发现有状态的服务很多,在异常时无法迁走、无法调度切换,此时SRE发起无状态化改造项目,进行微服务自身、硬编码IP、DB资源、缓存资源、外部依赖的无状态化改造。

4、部署架构设计

部署架构设计是为了在不够可靠的基础设施上建立可容灾的高可用系统,在设计时选用合适的云厂商、IDC机房、服务器、网络,如同城双活、异地多活等。有时也叫运维架构或基础设施架构。

实践经验:基础架构和SRE团队在适当的时候发起部署架构的改进项目,如遇到单交换机挂掉后影响一片服务的情况,发起交换机隔离的治理项目;又如发现物理机挂了导致整个微服务挂掉,所以在容器平台增加宿主机反亲和的功能等;再如在某个阶段发现某些核心服务有单机房故障风险,于是发起同城双活架构改造的项目。

相关文章
|
5月前
|
供应链 监控
软件架构一致性问题之软件供应链管理中降低维护成本如何解决
软件架构一致性问题之软件供应链管理中降低维护成本如何解决
55 4
|
5月前
|
监控 测试技术 持续交付
代码质量评估与改进策略:打造高效、可维护的软件基石
【7月更文挑战第26天】代码质量是软件开发中不可忽视的重要环节。通过有效的评估方法和改进策略,我们可以不断提升代码质量,打造高效、可维护的软件系统。作为开发者,我们应该始终关注代码质量,将其视为自己专业能力的体现和团队成功的保障。只有这样,我们才能在激烈的市场竞争中立于不败之地,为用户提供更加优质的产品和服务。
|
7月前
|
程序员
如何成为高质量程序猿与软件质量的十个指标:正确性、健壮性、可靠性、性能、易用性、清晰性、安全性、可扩展性、兼容性和可移植性
如何成为高质量程序猿与软件质量的十个指标:正确性、健壮性、可靠性、性能、易用性、清晰性、安全性、可扩展性、兼容性和可移植性
190 0
|
7月前
|
SQL 运维 监控
老系统重构系列--稳定性摸排灵魂三问
该文主要讨论了老系统改造的过程和方法,特别是针对版权资产管理-财资系统的重构。作者强调了系统稳定性的重要性,并分享了他们团队在重构过程中采取的策略。他们通过确定目标、制定方法论和实施步骤来确保问题的全面摸排,包括核心链路图、流程时序图和问题路由图的绘制,以识别可能的问题和需要加强监控的部分。此外,文章还提到了数据对账监控和系统级统一监控的重要性,以及技术改造和预案的制定。作者提供了相关文章链接以供进一步阅读,并分享了他们在摸排和整改过程中的实际成果。
131 0
|
7月前
|
监控 测试技术 持续交付
【软件设计师备考 专题 】软件质量管理:保证软件的可靠性和性能
【软件设计师备考 专题 】软件质量管理:保证软件的可靠性和性能
179 0
|
7月前
|
运维 监控 安全
【软件设计师备考 专题 】系统运行和维护:确保系统的稳定和高效
【软件设计师备考 专题 】系统运行和维护:确保系统的稳定和高效
348 0
|
消息中间件 监控 Java
系统稳定性保障设计总结和思考
系统稳定性保障设计总结和思考
549 0
|
存储 缓存 运维
系统稳定性设计原则:简单、冗余、标准化、健壮
系统稳定性设计原则:简单、冗余、标准化、健壮
681 0
系统稳定性设计原则:简单、冗余、标准化、健壮
|
测试技术
【系统架构】可靠性测试用例设计时重点考虑的特殊情况
【系统架构】可靠性测试用例设计时重点考虑的特殊情况
126 0
【系统架构】架构评估的质量属性——可靠性
【系统架构】架构评估的质量属性——可靠性
191 0