写在前面
前段时间一直在学习架构设计的相关知识,对架构的演化有了一点点自己的理解,本篇是我的架构入门总结,21年年初应该会接触一些项目拆分的工作,也希望学到的内容可以应用于实践。本文未来还会补充更多细节。
架构是什么
这是我读阿里技术博客的一篇文章总结的:
为什么需要架构设计呢?或者说架构设计为什么这么重要呢?
架构设计的主要目的不是为了拆分任务,不是为了实现业务需求,甚至不是为了实现高性能和高可靠的系统。
架构设计的主要目的是为了解决系统复杂度带来的问题。
架构的一般需求
高性能,高可用,可扩展
架构的演化流程
单机部署->动静分离->集群化->读写分离->分库分表->垂直拆分->微服务->引入消息队列
架构设计原则
李运华大佬总结的原则:
纵观淘宝的发展,也能看到类似的架构设计原则,过早优化是万恶之源,架构设计是门取舍的艺术。
架构设计方法论
我自己设计的架构设计方法论:先头脑风暴,再权衡利弊,再挑best one。详细来说,就是包含如下几个流程:
1.看下公司体量,理解清除业务(领域驱动),理清楚业务的复杂度。
2.根据业务抽象出架构的框架,弄清楚为了实现业务带来的系统复杂度。
3.找到公司里已经使用的技术,包括自研技术和开源技术。
4.根据每个技术的特点进行设计,以及综合根据业务的场景和未来半年时间可能达到的量等考量,进行设计。
5.设计三个方案,进行优劣分析,然后综合别人的意见选出最棒的方案。
对架构师的要求
李运华说,架构师的内功主要包括判断力(准确判断系统复杂度),执行力(用合适的方案解决问题),创新力(创造新的方案解决复杂问题)。
因此在成长为架构师的过程中,要不断积累经验(10000小时理论),拓宽视野(泡脑子的过程),深度思考(归纳总结,举一反三)。(PS:学习成长也是这个道理,贴一张今天技术群刚刚讨论的结论)
此外,要成为架构师,还需要这十二项修炼Java程序员必备的12项软技能
参考资料
《大型网站技术架构》
《从0开始学架构》
《淘宝技术这十年》
《架构设计:大型互联网架构演化简史》
《软件架构师12项修炼》