架构实战营模块一作业
第一题:画出微信业务架构图
第二题:学生管理系统毕设架构设计
复杂度分析
高性能需求:只需要支撑 1000 个学生,高性能要求不高。
高可用需求:只需要支撑 1 个学校,毕业设计项目并不是真实项目,不需要高服务可用和高数据可用。
可扩展需求:业务复杂度高,要求三人合作完成,可按模块分工开发。
备选方案
方案 1:基于复杂度分析,只需要一台应用服务器,一台数据库服务器。将学生管理系统拆分为学生、课程、权限三个子系统,有利于协同开发。没有拆分为三个子系统因为开发同学经济有限,可以节约两台服务器。将 DNS 直接配置到应用服务器,而没有使用 Nginx,也是基于性能和经济的考虑。
方案 2:考虑到团队里有一位同学是 PHP 高手,可以将前后端进行分离。前端使用 PHP 开发,后端使用 Java 开发,提供 RESTful 风格 API 给前端调用。因为多出一台 PHP 服务器,项目成本会相应增加一部分。
两种方案都符合合适和简单原则,在满足性能、可用、可扩展的要求上,减少项目部署成本。也符合演化原则,如果以后功能要扩展,可以将各个模块独立成子系统。如果需要数据的高可用,可以增加备份数据库服务器。
取舍
个人认为方案 2 更合理。虽然部署时会增加一个 PHP 服务器,但是项目并没有要求长期运行。毕业答辩结束后便可以注销服务器。方案 2 可以更好地让会 PHP 的那位同学更好地发挥他的特长,提高项目开发效率。
评论