前言
架构并不是只限于技术选型
是架构设计作为软件生命周期的一部分,并不是说开始的时候,设计完成后就会一成不变,软件的生命周期包含了迭代,维护,重构等过程,架构设计亦是如此,所以说架构是需要变化的,目的就是适应当前的情况的开发场景。
而架构产生的时间,必定是收到当前的约束条件,如人力,团对技术积累,时间,业务定位等需求。所以,当前架构可能并不能满足未来的需求,我们要开放对待这个问题,只要当前的架构符合一定的设计原则,未来进行架构的演进就不是问题。
架构这个词的解释也没有一个明确的定义,每个层级,每个场景都有自己的解释
软件架构(software architecture),是一系列相关的抽象模式,用于指导大型软件系统各个方面的设计。
其实软件开发和盖一栋大楼一样,都需要规划,设计,实施等一系列的阶段,最开始设计建筑图纸,主题架构,还要考虑绿化,材料,安全等因素,经过一系列的决策,才有了一套成熟的建筑施工方案,按照规范建造,才能保证质量和速度。
而开发一个软件或者前端工程也是一个建筑的过程,我们要通过业务来定位系统间的关系,讨论技术栈和框架的徐娜用,根据当前团对的技术水平进行技术的选型,考虑各个模块之间的界限和交互,上线部署策略,问题回滚策略等一系列的决策才能设计符合当前情况的技术框架。
前端开发过程中需要怎样的架构
基本要求如下:
- 符合当前的业务定位
- 前端架构必须具有可实施性
- 必须匹配当前的技术储备
- 有足够的人力资源去完成
- 具有可伸缩,可扩展性
[因地制宜]应该是开始设计架构的基本准则,每套架构的产生都有其他的外界因素影响,所以,各个公司,各个团对之间的架构不能照搬,如果强制搬过来,可能会适得其反,就像你那alibaba的技术架构去搬到初创公司,那是根本行不通的,人员,资源不匹配,是没办法去实施架构的。 - 准确的业务定位,业务可能是影响架构的主要因素之一,所以我们要找准业务上的定位
- 明确与其他业务之间的联系,确定与其他系统的层次关系,相互间的通讯依赖等
- 设计好系统内子模块之间的关系,如A业务模块需要与B模块交互,该采取怎样的方式
- 基础模块明确,项目中,必定含有基础模块取提供一些公用的方法,数据去提供给各个子模块。
- 组件规划,这就是在细一层的规划了,制定组件的交互方式,开发范式
- 开发规范和上线流程,用于指导开发中的过程
架构设计setp
设计需要进行一系列的技术及非技术的相关工作。 - 收集利益相关者的需求,产品经理,业务人员,项目负责人等
- 与相应的技术人员进行讨论,确定架构上的潜在限制和要求
- 寻找可行性的技术方案
- 细化技术方案细节,确定一些功能列表中的技术可行性
- 确定风险点
- 与技术人员反复讨论,集合大家意见
- 对技术方案进行demo的概念化验证
- 结合当前业务,细化架构的部分实施细节
- 进行排期