架构是一种思维模式(笔记)

原文链接:老于聊架构

有关架构的书:
面向模式的软件架构、程序员必读之软件架构、企业应用架构模式、 一线架构师实践指南

以始为终的架构设计:
—— 满足或引导客户价值的挖掘和表达。

why-how-what

为什么要做架构

  • 没有设计师的蓝图无法建造房屋
  • 快速规模化、适应变化、解决客户问题

如何做架构

以终为始,不忘初心。初心:用户的本质需求
用户想要什么就给什么未必是本质需求

关注正确性和体验。

PBC框架:

  • 平台(Platform)
  • 商家(Business)
  • 用户(Client)

平台的本质设计是符合用户侧、商户侧、平台侧的3端诉求的

uber
司机和车只是它的资源,供应方(supply)可以是一家蛋糕店、鲜花店或者是西湖的休闲船只管理中心,那么它以下能力可以复用:

  1. 调度能力
  2. 用户呼叫的界面、策略
  3. 地理位置处理
  4. 交易事后处理等
    大部分变化在于运送的物品(属性)以及一些附属需求,而这些都是可以通过良好的平台设计+可扩展的新市场产品特性来完成。

架构非单一视角,单一层次
架构的多层次多视角有助于厘清本质,对问题域更好求解


关注SLA

  • 避免关注枝节遗忘全局
  • 避免关注自身忘记出发点

比如从系统运行角度看,如何度量用户SLA(体验的顺畅度,支付成功率)以及更多行为数据(用户在哪一步流失的,什么原因),从下单到完成支付的花费时间是多少等。
要做这些,就需要全链路的监控,进而推之需要做统一的上下文,事件码来串联请求的链路(traceId技术语义,业务语义则可能是userId)。

####架构是什么

架构是演进而来的
无纯粹的非功能特性

下图为某平台的能力视图,容量,高可用能力,高性能都是和外部平台的要求匹配的

汇总

  • 请度量你的产品对于用户、商户的SLA(接入效率、接入成本、用户体验、稳定性、应急处理能力等)

  • 适当的时候考虑链路级业务监控视图

  • 在系统链路调用上加上traceid这样的东东

  • 考虑平台沉淀能力时考虑业务形态的扩展,比如uber只是一家解决出行的公司么?

  • 在不同阶段采用不同架构,试水期说不定演烟囱型架构是最适合的,因为短期的价值是打一个点(业务上),让自己活下去(平台方)

  • 非功能要素不是加分项,可能是主体价值体现点,比如商户需要一个批量导入接口,你提供了单笔处理接口,然并卵!