架构实战营 - 第三期 - 模块一作业
微信业务架构图
![](https://static001.geekbang.org/infoq/92/92e68d42802b00016186c372611ed393.png)
学生管理系统架构设计
复杂度判断
高可用:学生管理系统只需要保障数据高可用即可,服务短暂挂掉也不会导致太大的损失
高性能?:支撑 1000 人使用,性能上并没有太大压力
可拓展:业务相对复杂,需要三个人员同时开发,但毕设项目结束后一般不需要再做变更
成本:学生,没有什么钱,应该控制成本,服务器尽量最优数量
安全:公网应用,毕设作品,保证基础设施除 Nginx 外只暴露内网即可
备选架构方案
方案一
![](https://static001.geekbang.org/infoq/a8/a84b55c1bb4dea0a39760c4730f7ea94.png)
方案说明:
架构采用 Nginx 作为反向代理及负载均衡服务器,Nginx、业务服务器、数据库都在同一内网可相互访问,对外仅暴露 Nginx 端口,运维需要将公网域名解析至 Nginx 服务器地址,用户即可通过域名访问应用
业务服务器部署三个实例提升性能,可根据性能需求动态调整数量
业务系统内部划分三个模块,方便三人协同开发
数据库采用主备架构保证数据不会全部丢失
方案二
![](https://static001.geekbang.org/infoq/91/912714d666a63cb887207a0981663990.png)
方案说明:
架构同样采用 Nginx 作为反向代理及负载均衡服务器,Nginx、业务服务器、数据库都在同一内网可相互访问,对外仅暴露 Nginx 端口,运维需要将公网域名解析至 Nginx 服务器地址,用户即可通过域名访问应用
业务服务器拆分成三个独立子系统进行研发,由于子系统之间相对独立,PHP 水平高的同学可以采用 PHP 来开发自己负责的子系统
数据库采用主备架构保证数据不会全部丢失
最终选择方案
优劣分析
方案一:成本低,运维简单,较难发挥出 PHP 高手的技术优势
方案二:拓展性佳,发挥了 PHP 高手的技术优势,但 PHP 模块只有一人可以维护,维护成本高,其他两位同学难以协助 PHP 模块开发
架构设计原则
根据合适原则分析:毕设项目不需要过多考虑后期可拓展性,统一技术栈更有利于团队协作
根据简单原则分析:方案二增加 PHP 技术栈,实际上增加了项目复杂度与维护成本
根据演化原则分析:方案二也不符合演化原则,成本大
总结
方案一更符合此次学生管理毕设需求
版权声明: 本文为 InfoQ 作者【蓝】的原创文章。
原文链接:【http://xie.infoq.cn/article/8c3b0c8cf372a4ad200f8c86a】。文章转载请联系作者。
评论