架构实战营-模块1-作业
这是架构实战营-模块1作业提交。
有些仓促,日后再完善。
p.s.:第一次使用InfoQ的写作平台,感觉体验极佳,好评。
作业1
画出微信的业务架构图。

作业2
“学生管理系统”毕设架构设计。
假设今年学校毕业设计要求提升,要求做真正可运行的学生管理系统,学院对毕设的具体要求如下:
① 要求可以通过公网域名访问;
② 要求至少 3 人合作完成;
③ 能够支撑管理 1000 个学生;
④ 答辩的时候会根据架构方案来进行打分,不推荐太简单和太复杂的方案。
你找了 2 个好朋友一起来做这个项目,你们的基本情况如下:
① 大家都会 Java,但是有一个是 PHP 高手;
② 大家经济条件一般。
作业要求:
① 对照面向复杂度架构设计方法论,构思 2 个以上的备选架构方案。
② 使用 PPT 来画出你的备选架构方案,并说明方案的优缺点。
③ 给出你选择的最终方案以及选择理由。
如上,以加粗字体标识出已识别的关键信息。
思路
采用面向复杂度架构设计方法论
复杂度分析
求解方案
方案1

优点
符合上述需求分析。
MySQL主备模式,确保数据高可用,且从技术角度,具备数据恢复的可行性。
缺点
MySQL主备模式以及数据回滚、恢复,对于运维存在技术要求,运维便捷性可能不够高。
方案2

优点
符合上述需求分析。
前后端分离,采用PHP,充分利用了团队中存在PHP高手的优势。
缺点
MySQL主备模式以及数据回滚、恢复,对于运维存在技术要求,运维便捷性可能不够高。
方案3

优点
符合上述需求分析。
前后端分离,采用PHP,充分利用了团队中存在PHP高手的优势。
复用原有Oracle RAC集群,降低数据库层面运维要求,且充分利旧也降低了项目成本。
缺点
应用服务器建议还是尽量再进行水平扩容。
最终方案
经过取舍,最终选择方案3。
思路如下:
合适原则
① 符合团队技术水平和积累;
大家都会 Java,但是有一个是 PHP 高手
② 开发成本低;
前后端分离
③ 系统运维成本低。
数据库复用
简单原则
① 不进行系统拆分,部署维护简单;
综合考虑,未镀金、炫技,一味地采用新技术
② 没用微服务,无需微服务基础设施。
前后端分离架构,未采用微服务
演化原则
① 一次性交付,无需考虑太多后期演化;
符合学生管理系统需求
② 学校的学生数量不会发生很大变化,系统架构够用多年。
符合学生管理系统后续扩容等趋势