对后端程序员来说,架构师应该是很多人的终极目标了,最近也是听见很多人都在讨论架构架构,那什么是架构?在众多说法中,我本人最为认可的是孤尽大佬(原阿里巴巴资产平台部负责人)所阐述的---架构是一种能力,而不是一个职位!
干货
一.什么是架构?
重要的事情说三遍,架构是一种能力,架构是一种能力,架构是一种能力,这个能力可以分为两个部分,即架构=组成+决策,拆开来看就是模块结构、模块关系---组成,和约束、设计原则、演化方向---决策。说的再详细一点,约束:人力成本,机器成本,时间成本等等,演化方向:技术选型,设计原则:七大设计原则。
二.架构是干嘛的?
架构的理念:大道至简,所谓存在的真理一定是解决问题即:
- 让我们的系统有可扩展性和可维护性。
- 让我们的系统恰到好处的解决问题。
- 如何让我们的系统能够运行3-5年不重构。
说的直白一点,我们正常的工作中会有,用户问题:比如要支付某个商品,业务问题:比如选择支付的第三方,产品问题:比如逆向、异常等等,技术问题:比如高并发,高可用等等。架构存在的意义就是:
- 确定系统边界,在技术层面上选择做与不做。
- 确定系统里各模块之间的依赖关系与模块的宏观输入输出。
- 使得后续的子系统或模块设计在一个既定的框架内和技术方向上继续演化。
- 明确非功能需求,就是安全性、可用性、可扩展等等。
三.如何画架构图?
架构图:
- 总结起来就是水平方向上的业务模块和垂直方向的上的技术模块组成的逻辑结构图!
画架构图的细节:
- 画架构图的类型。
- 确认图中关键要素比如产品、技术和服务等。
- 梳理关键要素之间的关联:包含、支撑、同级并列。