架构实战营 - 模块一作业
1. 画出微信的业务架构图。
2. “学生管理系统”毕设架构设计
假设今年学校毕业设计要求提升,要求做真正可运行的学生管理系统,学院对毕设的具体要求如下:
① 要求可以通过公网域名访问;
② 要求至少 3 人合作完成;
③ 能够支撑管理 1000 个学生;
④ 答辩的时候会根据架构方案来进行打分,不推荐太简单和太复杂的方案。
你找了 2 个好朋友一起来做这个项目,你们的基本情况如下:
① 大家都会 Java,但是有一个是 PHP 高手;
② 大家经济条件一般。
作业要求:
① 对照面向复杂度架构设计方法论,构思 2 个以上的备选架构方案。
② 使用 PPT 来画出你的备选架构方案,并说明方案的优缺点。
③ 给出你选择的最终方案以及选择理由。
架构复杂度分析:
高性能?
仅需支撑管理 1000 人,不用太过关注高性能。
高可用?
学校的日常管理并非完全依赖于学生管理系统, 高可用也可以不用太过关注。
可扩展?
学生管理系统业务比较复杂,需要考虑。
成本、安全?
毕业项目因为大家经济条件一般成本应当考虑,且要求可以通过公网域名访问,部署在公网上需要考虑一定的安全性。
备选架构一:
备选架构二:
备选架构三:
方案取舍:
团队的技术水平
大家都会 Java,但是有一个是 PHP 高手; -- 开发语言应当选择 java,能是团队成员共同出力。
方案的成本
方案 1: 每个模块单独部署服务器,如果新增模块会增加服务器,服务器会比较多,且因部署在公网上,如果一个模块服务器挂了则会直接影响系统使用。
方案 2: 所有模块都部署在同一个服务器上,在业务量较少时可使用 1-2 台服务器即可。
方案 3: 在方案 2 的基础上,选择了更为廉价的 DNS 解析作为负载均衡器,减少单独使用 nginx 服务器。
结论: 大家经济条件一般, 选择方案 3 更能节约成本。
架构设计三原则:
合适原则
① 符合团队技术水平和积累;
② 开发成本低;
③ 系统运维成本低。
简单原则
① 不进行系统拆分,部署维护简单;
② 没用微服务,无需微服务基础设施。
演化原则
① 一次性交付,无需考虑太多后期演化;
② 学校的学生数量不会发生很大变化,系统架构够用多年。
评论