明确架构目标
清晰明确的目标有助于您聚焦在架构上,并集中精力解决设计中需要解决的问题。精密的目标能够帮助决定什么时候完成当前阶段,什么时候可以进入下一个阶段。
确定关键应用场景
通过关键应用场景,可以知道如何把设计放在重要的事情上,花更多的时间在重要的事情上,并且在得到候选架构之后对候选架构进行评估。
举例:
对未来的预计-网站产品量在未来一年将达到1个亿
CAP属性的权衡
安全-上市公司对于数据的安全性有很高的要求
业务要求-支撑灵活的实验特性,不发布快速上线实验
应用程序概貌
确定 1.应用程序类型(standalone,service,webapp,ios/android);2.部署结构(中美部署或者多机房部署需要考虑同步问题);3.架构风格(SOA,C/S,分层,消息驱动,领域设计);4.确定相关技术(技术的选择受限于招聘成本,基础结构限制,开发人员技能,维护成本等);
关键问题
根据质量特性和横切关注点确定关键问题,比如搜索latency,统一日志收集框架,请求级别缓存框架
A.可用性、模块重用性、性能、可靠性、安全性、可伸缩性、易用性等的权衡。
B.授权和验证、加密、审计、缓存、通信协议、配置管理、异常管理、日志收集、验证
C.
举例:
1.可否把A系统换成另外一个X系统?
2.如果未来增加了某一个应用,需要如何做到逻辑同步修改?
3.我能否实现快速将新技术应用到X模块中?
候选解决方案
在下一次架构迭代开始之前,针对关键应用场景、问题或者部署限制重新评估和改善当前架构版本。
展示和与项目成员沟通您的架构设计
4+1 view model of software architecture
https://www.cs.ubc.ca/~gregor/teaching/papers/4+1view-architecture.pdf
UML:功能需求视图(用例图),静态结构视图(对象、属性、关系、操作:类图),动态行为视图(序列图,活动图,状态图)
分层结构的设计步骤
1.确定分层策略(确定分层的目标?比如从性能,维护性,扩展性等角度出发)
2.确定需要的分层(选择分层的方式:展示层-业务层-数据层-服务层等)
3.确定如何分布层和组件(物理上是否需要独立,计算密集型与IO密集型合并部署等)
4.确定是否需要收缩层
5.确定层之间交互的规则(高->低层依赖,严格交互:直接下层,松散交互)
6.找出横切关注点(AOP实现?日志,缓存,验证,鉴定)
7.定义层与层之间的接口交互方式(抽象接口-interface,依赖反转spring,基于消息-消息中间件如metaq)
8.选择部署策略
9.选择通信协议
SOLID设计原则
单一职责原则 The Single Responsibility Principle
开放关闭原则The Open Closed Principle
里氏替换原则The Liskov Substitution Principle
接口隔离原则The Interface Segregation Principle
依赖倒置原则The Dependency Inversion Principle
网友评论