<返回更多

架构设计的目的

2023-12-06  微信公众号  二进制跳动
加入收藏

关于架构设计的目的,存在一些常见的误解。首先,仅仅因为架构很重要,并不意味着必须进行架构设计。重要的是理解架构为何重要。例如,有人可能认为没有架构设计,系统就无法运行,但这并非事实。

在许多创业公司,初期产品往往没有经过正规的架构设计,只是通过简单讨论后直接开始编码,这种方式有时候反而能加快产品开发并保持良好运行。

另外,架构设计并不总是提升开发效率。有时,简单的设计反而更高效,因为架构设计需要投入时间和人力,而这些资源如果用于早期编码,可能会使项目进展更快。此外,虽然良好的架构设计有助于业务发展,比如高性能的架构能提升用户体验,但仅仅模仿成功案例(如微信)的架构,并不能保证达到同样的业务规模。架构设计是重要的,但理解其作用和限制同样关键。

在讨论架构设计时,常见的一个误区是认为每个系统都需要进行架构设计,仅因为这是常规做法。许多人认为因为大家都在做架构设计,所以这一定是正确的,但他们并没有深入理解为什么需要架构设计。这种思维方式可能导致架构师或设计师盲目模仿其他公司的架构,仅做微小的调整而不是针对特定需求设计。这样的方法可能导致引入的架构与公司的实际情况不符,最终导致不断的重构甚至从头再来。

另一个类似的问题是,有些公司认为因为有专门的架构师,或者流程规定必须进行架构设计,所以就必须做架构设计。这种做法忽视了架构设计的真正目的,可能导致在不需要架构设计的情况下也进行设计,从而浪费资源和拖慢开发进度。

有些人认为架构设计是为了实现高性能、高可用性和高可扩展性,这看似是一个成熟的观点,但如果不考虑具体的系统和业务需求,仅仅追求这些“高XX”的目标,可能会导致架构设计过于复杂,使项目难以落地。这种方法可能会导致团队内部冲突,项目不稳定,维护困难,以及增加功能变得异常复杂。

总的来说,架构设计的关键是要理解其目的和适用场景,而不是盲目遵循流程或追求某些抽象的高级目标。正确的方法是基于具体的业务需求和系统特点来制定架构设计。

架构设计的真正目的

答案:架构设计的主要目的是为了解决软件系统复杂度带来的问题。

简单的复杂度分析案例

我们通过分析一个大学学生管理系统的架构设计来理解架构设计的真正目的:解决软件系统复杂度带来的问题。首先,我们确定系统功能包括登录、注册、成绩管理和课程管理等。

  1. 性能分析:考虑到学校学生数量(1万至2万)和相对低的访问频率(每天平均每学生不到一次访问),性能需求并不高。因此,使用MySQL作为存储方案是足够的,甚至可以不考虑缓存。对于Web服务器,选择Nginx已经足够应对需求。

     

  2. 可扩展性考虑:由于学生管理系统的功能较为固定,扩展的需求并不大,所以可扩展性方面的复杂度较低。

     

  3. 高可用性需求:虽然系统短时间宕机(如2小时)对学生管理影响不大,但数据的完整性和可靠性至关重要。因此,考虑到数据丢失的风险和后果,需要重点关注存储的高可靠性。这包括设计MySQL的主备方案以应对机器故障,以及跨机房同步方案以防机房故障。

     

  4. 安全性考虑:鉴于存储的信息具有一定隐私性,安全措施需要包括Nginx的ACL控制、用户账号密码管理和数据库访问权限控制,以确保数据安全。

     

  5. 成本考虑:由于系统架构相对简单,几台服务器就能满足需求,对于大学来说这是可接受的,因此成本并不是主要考虑因素。

架构设计的目的

总结:

架构是为了应对软件系统复杂度而提出的一个解决方案。

个人感悟是:架构即(重要)决策,是在一个有约束的盒子里去求解或接近最合适的解。这个有约束的盒子是团队经验、成本、资源、进度、业务所处阶段等所编织、掺杂在一起的综合体(人,财,物,时间,事情等)。

架构无优劣,但是存在恰当的架构用在合适的软件系统中,而这些就是决策的结果。需求驱动架构。在分析设计阶段,需要考虑一定的人力与时间去"跳出代码,总揽全局",为业务和IT技术之间搭建一座"桥梁"。

架构设计处于软件研制的前期,一方面,越是前期,如有问题,就能够越早发现,修改的代价也就越低;另外一方面,也意味着,软件实施后期若有架构上的修改,也需要付出更多的代价。

1 架构是为了应对软件系统复杂度而提出的一个解决方案。

2 架构即(重要)决策

3 需求驱动架构,架起分析与设计实现的桥梁

4 架构与开发成本的关系

关键词:架构      点击(7)
声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多架构相关>>>