架构实战营模块一作业
1. 画出微信的业务架构图
作业:
2. “学生管理系统”毕设架构设计
假设今年学校毕业设计要求提升,要求做真正可运行的学生管理系统,学院对毕设的具体要求如下:
要求可以通过公网域名访问;
要求至少 3 人合作完成;
能够支撑管理 1000 个学生;
答辩的时候会根据架构方案来进行打分,不推荐太简单和太复杂的方案
你找了 2 个好朋友一起来做这个项目,你们的基本情况如下:
大家都会 Java,但是有一个是 PHP 高手
大家经济条件一般
作业要求:
对照面向复杂度架构设计方法论,构思 2 个以上的备选架构方案。
使用 PPT 来画出你的备选架构方案,并说明方案的优缺点。
给出你选择的最终方案以及选择理由。
作业:
备选方案一。
说明:
1.nginx 做反向代理,负载均衡
2.拆分为多个服务,PHP 高手可以按照自己技术栈开发自己负责的服务
3.使用单机 redis 缓存常用数据
4.数据库做主备备份提高可用性
5.购买服务器,需要公网备案
备选方案二。
说明:
1.使用阿里云服务
2.设计一个系统,包含多个模块,为了维护方便,统一技术栈,采用 Java 开发
3.使用 redis 缓存常用数据
4.数据库做主备备份提高可用性
5.云服务的 SLB 产品具备公网访问
方案一。
优点:
1.拆分服务有更高的扩展性
2.拆分服务可以让 PHP 高手按照自己最拿手的技术栈开发,提高开发效率
缺点:
1.拆分服务提高运维成本
2.技术栈不同意,提高系统维护风险
3.需要独立做公网备案
4.需要有 nginx 运维经验
方案二。
优点:
1.不用拆分服务,统一技术栈,提高系统后续可维护性
2.云服务产品具备成熟可用的公网访问、负载均衡等能力
缺点:
1.如果后续有更复杂的需求,需要进一步拆分服务
2.不能发挥每个人的技术优势
3.云服务产品比独立的服务器成本更高
最终选择备选方案二。
原因:
1.初期以及可预见的后续发展中,不具备爆发式复杂的需求,根据合适、简单、演进原则,选择方案二
2.关于发挥个人最大的技术优势和团队统一技术栈带来的可维护性,更多的应该考虑系统可维护性,除非技术栈又不可拒绝的优势,比如 go 之于高并发需求
3.云服务产品虽然有更高的成本,但是对于运维的便利性,高出的成本在可接受范围
评论