架构训练营第 1 期 模块一作业
1. 画出微信的业务架构图
2. “学生管理系统”毕设架构设计
假设今年学校毕业设计要求提升,要求做真正可运行的学生管理系统,学院对毕设的具体要求如下:
1 要求可以通过公网域名访问;
2 要求至少 3 人合作完成;
3 能够支撑管理 1000 个学生;
4 答辩的时候会根据架构方案来进行打分,不推荐太简单和太复杂的方案。
你找了 2 个好朋友一起来做这个项目,你们的基本情况如下:
1 大家都会 Java,但是有一个是 PHP 高手;
2 大家经济条件一般。
作业要求:
1 对照面向复杂度架构设计方法论,构思 2 个以上的备选架构方案。
2 使用 PPT 来画出你的备选架构方案,并说明方案的优缺点。
3 给出你选择的最终方案以及选择理由。
方案一
优点
发挥团队多语言优势,并行开发提高效率
子系统的拆分可以快速部署
数据库主备保证高可用
缺点
两套代码较难维护,且 PHP 代码由于只有一名成员会写,无法做代码审核
两套代码增加了 debug 的难度
方案二
优点
模块化开发有助于平行开发
统一技术栈便于团队协作
数据库主备保证高可用
缺点
Web 服务器闲时资源浪费
方案三
优点
Serverless 架构节省计算成本
部署相对容易
权限及安全设置相对容易
缺点
Vendor Lock
基于 Lambda 的开发有诸多限制,需要预先学习特定知识
最终方案
最终选用方案二。原因如下:
合适原则
团队熟悉的技术栈
能够应付项目要求中的负载
成本可控
简单原则
尽量减少组件的数量(弃用 PHP)
演化原则
架构容易扩展。初期 Nginx 和 web server 可放在同一服务器上,后期可拆分到不同服务器,之后可以添加更多的 Web 服务器来应付更大的负载
版权声明: 本文为 InfoQ 作者【高远】的原创文章。
原文链接:【http://xie.infoq.cn/article/aae881a68e361f0c393892832】。未经作者许可,禁止转载。
评论