架构实战营 - 第一周
1. 微信业务架构
1.1. 什么是业务架构
描述系统对用户提供了什么业务功能,类似于 4+1 视图的场景视图
考验的是分解、抽象、提炼、总结的能力
画架构图的时候,要考虑我们是向谁展示信息,目标对象的关注点和关注粒度是什么,然后再来画
1.2. 微信业务架构图
2. “学生管理系统”毕设架构设计
2.1. 背景及要求
假设今年学校毕业设计要求提升,要求做真正可运行的学生管理系统,学院对毕设的具体要求如下:
要求可以通过公网域名访问;
要求至少 3 人合作完成;
能够支撑管理 1000 个学生;
答辩的时候会根据架构方案来进行打分,不推荐太简单和太复杂的方案。
你找了 2 个好朋友一起来做这个项目,你们的基本情况如下:
大家都会 Java,但是有一个是 PHP 高手;
大家经济条件一般。
作业要求:
对照面向复杂度架构设计方法论,构思 2 个以上的备选架构方案。
使用 PPT 来画出你的备选架构方案,并说明方案的优缺点。
给出你选择的最终方案以及选择理由。
2.2. 面向复杂度架构设计分析
这里因为是作业,需求已经明确,不需要澄清,我们直接进行复杂度分析,利用架构设计三原则,构建备选架构,即
合适原则
简单原则
演化原则
2.2.1. 复杂度分析过程
要求可以通过公网域名访问
申请域名
公网 IP => 云服务器
DNS 域名解析
要求至少三人合作完成
找了 2 个好朋友一起来做这个项目
能够支撑管理 1000 个学生
1000 个学生,不需要考虑高性能问题
需要基本高可用,做个数据库的主备即可,定时做备份
答辩的时候会根据架构方案来进行打分,不推荐太简单和太复杂的方案
方案要相对平衡些
大家都会 Java,但是有一个是 PHP 高手
可以前后端分离,PHP 作为前端
大家经济条件一般
尽量少的申请外部资源
2.2.2. 备选方案
学生管理模块
学生管理
考试管理
课程管理
权限管理
2.2.2.1. 方案 1:Nginx+MVC 业务服务器+Mysql 主备
2.2.2.2. 方案 2:DNS(学校)+MVC 业务服务器+Mysql 主备
利用学校的 DNS 域名服务器做路由转发,这样可以少部署一台 Nginx 服务器,节省一笔费用
2.2.2.3. 方案 3:DNS(学校)+PHP 前后端分离业务服务器+Mysql 主备
利用 3 个开发者其中一个是 PHP 高手,这样可以加快整个开发周期
2.2.2.4. 选择
考虑各种条件和复杂度,最终选择方案 3
评论