极客时间架构实战营第 10 期模块 1 作业
微信架构
学生管理系统
方案 1
方案 2
复杂度分析
1、业务:需要使用公网域名访问,因此需要 1 台 nginx 做域名转换和反向代理;需要提供一个可用的学生管理系统,需要包括学生管理、课程管理、权限管理功能。
2、团队和技术:规模 3 人,需将系统拆解为多模块或多个子系统实现。考虑团队技术能力,虽然一人是 php 高手,但考虑到开发语言的统一性,方案 1 与方案 2 中应用系统都采用 java 语言编写。
3、质量属性(可靠性/高性能/可扩展)的需求:支撑数据量:1000,因此对系统基本没有高性能、高可靠的要求,无需对此作特别设计。
4、考虑到服务可靠性采用两台服务器部署两套完整的工程系统,再由数据库部署主备两套数据库
基于以上分析,设计了上面 2 种方案。
优缺点比较
合适原则:都满足业务当前发展需求,且技术栈与团队匹配,目前业务量比较少,架构都相对简单,2 种方案没有明显优缺点。
简单原则:方案 1 将系统拆分了 3 个子系统,方案 2 拆分为 3 个子模块,在一个系统内承载,方案 2 比方案 1 在系统外的复杂度上更简单,且方案 2 只部署了 2 台机器,成本更少。
演化原则:方案 1 与方案 2 都能够在数据量增长之后分别进行扩展,无明显优缺点。
评论