← 返回首页
📋

架构质量属性

📂 architecture ⏱ 1 min 109 words

架构质量属性

质量属性概述

架构质量属性是描述系统运行时行为特征的非功能性需求。常见的质量属性包括:性能、可用性、安全性、可修改性、可测试性、可部署性、可监控性等。这些属性之间往往存在权衡关系,架构设计的本质就是在这些权衡中找到最佳平衡点。

每个质量属性都可以通过质量属性场景来具体化。一个完整的质量属性场景包括六个部分:刺激源(谁发起的刺激)、刺激(什么刺激)、环境(在什么环境下)、制品(刺激的对象)、响应(系统如何响应)、响应度量(如何衡量响应)。

class QualityAttributeScenario:
    def __init__(self):
        self.source = ""
        self.stimulus = ""
        self.environment = ""
        self.artifact = ""
        self.response = ""
        self.response_measure = ""
    
    def to_natural_language(self) -> str:
        return (
            f"在{self.environment}环境下,"
            f"当{self.source}发起{self.stimulus}时,"
            f"系统{self.artifact}应该{self.response},"
            f"衡量标准为{self.response_measure}"
        )

# 性能场景示例
performance_scenario = QualityAttributeScenario()
performance_scenario.source = "正常用户"
performance_scenario.stimulus = "发起查询请求"
performance_scenario.environment = "正常负载"
performance_scenario.artifact = "查询服务"
performance_scenario.response = "在200ms内返回结果"
performance_scenario.response_measure = "95%的请求响应时间<200ms"

可测试性

可测试性是指系统易于验证其正确性的程度。高可测试性的架构应该支持:单元测试(组件隔离测试)、集成测试(组件间交互测试)、端到端测试(完整业务流程测试)、性能测试(负载和压力测试)。

提升可测试性的架构策略包括:依赖注入(便于模拟外部依赖)、接口隔离(减少测试范围)、分层架构(各层可独立测试)、可配置的测试环境(便于搭建测试场景)。

class OrderService:
    def __init__(self, repository: OrderRepository, 
                 payment_client: PaymentClient,
                 notification_service: NotificationService):
        self.repository = repository
        self.payment_client = payment_client
        self.notification_service = notification_service
    
    def create_order(self, items: list[Item]) -> Order:
        order = Order(items=items)
        self.repository.save(order)
        self.payment_client.charge(order.total)
        self.notification_service.notify(order.customer_id, "订单已创建")
        return order

# 测试时可以注入Mock对象
class MockOrderRepository:
    def save(self, order: Order):
        self.saved_orders = self.saved_orders or []
        self.saved_orders.append(order)

可部署性与可监控性

可部署性是指系统易于安全、快速地部署到生产环境的能力。高可部署性的架构应该支持:蓝绿部署(零停机部署)、金丝雀发布(渐进式发布)、特性开关(功能级别的发布控制)、回滚机制(快速恢复到上一个稳定版本)。

可监控性是指系统运行状态易于观察和理解的程度。良好的可监控性包括:结构化日志(便于搜索和分析)、分布式追踪(跟踪请求在微服务间的流转)、指标收集(监控系统健康状况)、告警机制(异常情况及时通知)。