需求
背景
假设今年学校毕业设计要求提升,要求做真正可运行的学生管理系统,学院对毕设的具体要求如下:
① 要求可以通过公网域名访问;
② 要求至少 3 人合作完成;
③ 能够支撑管理 1000 个学生;
④ 答辩的时候会根据架构方案来进行打分,不推荐太简单和太复杂的方案。
你找了 2 个好朋友一起来做这个项目,你们的基本情况如下:
① 大家都会 Java,但是有一个是 PHP 高手;
② 大家经济条件一般。
作业要求
① 对照面向复杂度架构设计方法论,构思 2 个以上的备选架构方案。
② 使用 PPT 来画出你的备选架构方案,并说明方案的优缺点。
③ 给出你选择的最终方案以及选择理由。
需求分析
功能模块,背景没有描述,简单说明下。
- 学生管理
- 课程管理
- 权限管理
非功能性需求
- 公网域名访问
- 能承载1000个学生的信息(存储、访问)
其他
- 都会java
- 有个php高手(前端有救了)
- 大家经济一般(能省则省)
架构设计
根据以上的需求分析,筛选出几个需要考虑的点:
- php,超文本预处理器,则可以前端开发
- 大家都会java,后端采用java开发
- 经济有限、1000个学生,则后端单体架构即可,只要求可运行,不要求高可用
- 数据库可以使用mysql,单节点或主备
- 公网需要域名访问,则需要申请公网域名,配置公网DNS
- 服务器可采用公有云或私有服务,如果是私有IDC,则需要申请公网IP,从公网IP进入再映射到私有服务器
- 需求比较明确,性能要求不高,不需要考虑架构演进,可一步到位
备选方案1
优点
- 可以利用学校现有资源
- 本地机房私有化部署,数据相对安全 缺点
- 数据库宕机或数据库磁盘损坏,数据会丢失
- 需要维护服务器,保证基础服务器可用,需要配置内外网映射
备选方案2
优点
- 相对方案1,增加了数据备份,防止数据丢失
备选方案3
优点
- 不需要关心基础设施层,公有云配置相当简单,只需要关心前后端服务于数据库即可 缺点
- 需要收费
取舍
根据以上分析及多个架构设计,我认为最优应选择备选方案3,理由如下:
- 公有云服务不需要关心基础设施,配置防火墙,域名解析,都非常简单,减少运维成本,踩过私有云的坑
- 上面三个方案从技术上都大同小异,因为系统本身并不发杂,所以从运维及资源协作上来说,共有云最方便,涉及内部资源使用可能需要走流程、找相关运维人员沟通等
- 公有云短期并不贵,比如只购买几个月,毕设完成后,可保存基本构建镜像及数据,释放资源即可