引言
早些年,软件很简单的时候,不需要需求分析和架构设计,直接采用边写边改模型,也能做出来了。后来软件复杂了,就对程序员要求特别高了,所以早些年的软件开发,但是个人英雄注意盛行。比如张小龙一个人完成了 Foxmail,求伯君完成 WPS…
不过,那时候对普通程序员来说,去写这样复杂的系统,也是可望不可及的。再后来软件产品越发复杂之后,靠高手的开发模式也就不可行了。
软件需求越来越多,而高手又是稀缺资源,所以要解决的一个问题就是:让普通程序员也能参与其中,一起实现复杂系统,而不必依赖于很多精英。
为什么软件项目需要架构设计
要想实现让普通程序员也能实现复杂的软件系统,我们先看看什么样的是复杂的软件项目。复杂的软件项目,通常有两个特点:需求不明确或者技术复杂。
第二步:选择相似的成熟的架构设计方案
在了解清楚需求之后,就可以从业界成熟的架构设计模式中选取一个或者几个。当然,具体选择哪些架构设计模式,需要你根据平时的学习积累来做判断。到这个阶段,同时还要考虑使用的语言和框架。
极客时间服务端,主要包含两部分内容,一个是给手机客户端提供的 API 服务,还有就是 站需要的 Web 服务。第一个版本其实访问量并不大,我们完全可以把 API 服务和 站服务合并成一个服务。另外专栏的内容,文字内容涉及数据库的存储,同时音频涉及文件存储。
这其实是一个典型的 站架构,可以基于传统的分层架构来实现。分层架构按照水平方向将系统拆分成几个层,每层都有清晰的角色和分工,不需要关心其他层的细节
所以我们可以增加一台异地 站服务器和一个异地云数据库实例作为备份,这样一旦 站宕机或者数据库有问题,可以切换到备机,马上恢复访问。所以调整后架构如下:
API 设计、数据库设计、模块的设计
在分层和分模块的设计完成后,就可以对 API 进行设计,对数据库进行表设计。这部分就不展开细讲了。
第四步:验证和优化架构设计方案
在技术方案完成后,还需要去验证方案是不是满足设计的目标,能否满足需求和未来需求的变化,能否保障软件有效的运行。
方案的验证时贯穿整个设计始终的,一个完整的架构设计方案,需要有多次的评审会议,充分收集各方面的反馈,反复修改后才能最终确定下来。
在第二、三步,可能会生成几个技术方案,这时候就需要做出一些技术上的决策。决策时,需要考虑清楚方案是否能低成本的完成软件需求的开发,同时能低成本的运行和维护该软件。还有你要考虑架构预期要满足多长时间的业务增长,比如说半年还是一年还是三年。
在架构设计确定后,就可以基于架构设计的结果大家一起分工协作了。架构设计并不是确定后就不修改了,在实际开发的过程中,还需要根据情况对架构进行优化和调整。
比如说实际运行的时候,发现 API 访问量很大,会拖慢 站访问速度,那我们就可以考虑把 API 和 站分拆开来,各自做成单独的服务,避免相互干扰。
总结
架构设计,是为了控制软件项目中技术复杂的问题。架构设计,通过组织人员和技术,低成本满足需求以及需求的变化,保障软件稳定高效运行。
架构设计可以通过四个基本步骤:
- 第一步:分析需求;
- 第二步:选择相似的成熟的架构设计方案;
- 第三步:自顶向下层层细化;
- 第四步:验证和优化架构设计方案。
通过良好的架构设计,可以有效降低开发难度和成本,让普通程序员也能实现复杂系统。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!