外包学生管理系统详细架构设计
前言
本文是外包学生管理系统的详细架构设计文档,用于指导系统后续的开发、测试和运维。
词汇表
1. 业务背景
随着学校规模的不断扩大,学生数量的增加,需要处理的信息也日趋增大,由此学校面临几个明显的问题:
系统化:实现学生各类信息的线上化管理,提高教师日常管理的效率,优化教师资源。
规范化:学生信息的规范化管理,提高信息准确度。
自动化:学生可自助选课、查询成绩,教师可以对学生信息进行自助分析。
基于以上背景,我们需要新建一个学生管理系统。
2. 约束和限制
1.开发团队 3 人
2.必须在 3 个月内上线
3.成本不能超过 20 万
3. 总体架构
3.1 架构分析
3.1.1 高可用
对于学生管理系统来说,如果学生信息丢失了,会造成学生由于无成绩或者成绩不合格而不能毕业,所以数据库使用 MySQL 主备。
3.1.1 高性能
学校的学生和老师一共只有几千人,不存在高并发,无需特别考虑高性能设计。
3.1.1 可扩展
学生管理系统可分为学生、课程、权限三大模块,为了方便后续功能扩展,分别拆分为三个子系统进行独立部署。
3.2 总体架构
1)nginx 作为三个子系统的反向代理。
2)后端使用 springboot 进行开发。
3)数据存储使用 mysql,使用主备模式进行部署。
4. 详细设计
4.1 核心功能
4.2 关键设计
1. 系统的可扩展性
通过分析系统的详细需求,抽象出对应的功能模块/子系统,将整个系统拆分为多个子系统,从而保证系统的可扩展性,在后续业务需求发生变更或者有新的业务需求时可以做到良好的扩展。
2. 数据的高可用
数据的存储采用主备的模式,保证了数据不会完全丢失,二期可采用云厂商的数据库服务。
4.3 设计规范
1)后端开发使用 Spring Boot + Mybatis,前端使用 vue 框架
2)接口遵循 RESTful 规范,数据格式统一使用 JSON
3)MySQL 采用主从同步
5. 质量设计
5.1 可测试性
所有接口提供 JUnit 单元测试。
5.2 可维护性
提供完整的运维文档,系统必须记录完善的日志,以供运维人员进行系统的监控和维护。
5.3 可观测性
通过系统日志及用户操作行为日志观察系统运行情况。
5.2 成本
成本不超过 20 万。
6. 演进规划
6.1 一期
完成系统功能的开发和上线,提供标准化的学生管理功能。
6.2 二期
实现学生管理云平台,能够快速接入新的学校,并且实现多个学校之间数据和应用的隔离。将系统功能划分为标准化和个性化功能,标准化功能实现组件化,学校可自助采购所需的模块;个性化功能可以根据学校的需求进行定制化开发。
评论