近几年开始做一些新系统架构设计的工作,也参与了两三个新系统的建设工作,我就按照我的理解,说一下我的工作步骤,由于经验也不多,所以有错误的地方请留言指正。

业务的理解

首先,业务的理解是必不可少的,你不可能脱离业务去空想一个架构,这个是不切实际的:
1.前期的业务沟通我都是会参加的,并且我参与的系统大多数都是老系统的重构,所以老系统是什么样子,都需要进行了解。
2.业务的需求究竟是一个什么样子的,需要深度挖掘,避免遇到假需求。
3.和周边系统有哪些交互,这个是必须了解的。
4.老系统有哪些缺陷,是需要在新系统避免的。
5.对新系统的业务压力和数据量,需要有一个评估。

如何设计

在设计的过程中,技术知识的储备很重要,你需要了解每项技术的优缺点和适用场景,常见问题的解决方案。
1.首先说说什么是“假需求”,比如一个人管你接纸巾(需求),你没有(无法满足需求),你是直接说“我没有”还是说“你要纸巾做什么(挖掘客户真实需求)”。对方说“我要纸巾擦桌子(真实需求)”。你正好有抹布,不就满足对方真实的需求了么。挖掘出用户真实的需求之后,才能避免一些无用的机构设计。
2.和周边系统交互问题,这个也很关键:如果有系统会请求你的服务,并且对方系统是24小时运行的,那么你必须考虑集群部署+灰度发布了;如果你和另外一个系统的交易实时性要求不是那么的高但是请求很频繁,那么就可以考虑引入消息中间件。
3.老系统的缺陷,是一定要避免再次入坑的。比如老系统某些功能在效率上很差,那么在新系统的设计中,是不是就可以考虑引入内存数据库。
4.业务压力的评估,是必不可少的。如果并发量比较高,那么需要多少资源实现都要评估出来,并且集群+负载均衡。如果数据量很大的话,是不是考虑读写分离,甚至分库分表。
5.架构设计包括系统功能结构设计、系统技术架构设计(所用技术及分层)、数据架构设计、系统部署方案、网络部署方案等等。