这是我参与8月更文挑战的第9天,活动详情查看:8月更文挑战程序员
每一位程序员都有一颗成为架构师的心。好多人都在问,架构究竟是什么?后端
本文来展开探讨一下~微信
架构有不少说法,例如:markdown
1)开源系统(MySQL、Nginx)架构架构
2)大公司架构实现(支付宝、微信)框架
那二者的区别是什么呢?post
架构:架构自己不是软件,而是关于软件如何设计的策略。是有关软件总体结构与组件的抽象描述,用于指导大型软件系统各个方面的设计。学习
框架:面向特定领域的、可复用的“半成品”软件,它实现了该领域的共性基础部分,并提供了一些定义良好的可变点以保证灵活性和可扩展性。是领域内、特定语言和技术的架构应用解决方案。优化
总结:架构关注的是“结构”,框架关注的是“规范”。spa
框架是软件,目的是抽象通用化高效解决问题;架构是软件的抽象解决方案,目的是便于进行大局拆解与局部细化。
软件架构(Software Architecture)
有关软件总体结构与组件的抽象描述,用于指导大型软件系统各个方面的设计。
--来自维基百科
系统是由一群关联个体的组成的,系统中的个体须要“根据某种规则”协做,架构须要明确这种协做规则。
架构=骨架、结构,来源于建筑学。前者揭示架构中内在的支撑物,后者则代表架构关心支撑物相互结合的某种构造方式。
主要可概括为如下几个缘由:
1)业务需求多,并且易变
2)软件系统愈来愈复杂
3)参与的人愈来愈多
4)跨项目共性/特殊性的问题愈来愈多
5)技术发展日异月新
基于以上多种因素,致使系统维护成本愈来愈高:
1)系统规模庞大、内部耦合严重,开发效率低;
2)系统耦合严重,牵一发动全身,后续修改和扩展困难;
3)系统逻辑复杂,容易出问题,出问题后很难排查和修复。
为了解决软件系统复杂度带来的问题。
其终极目标是:用最小的人力成原本知足构建和维护系统的需求。
架构设计的好处有哪些?
1)作到心中有数,而不是一头雾水(“新手”架构师)
2)有的放矢,而不是贪大求全(“老鸟”架构师)
一些 Case:
“咱们的系统必定要可以支撑到 QPS 10w+...”
“微信朋友圈的架构就是这么作的,咱们也这样来吧...”
“Docker 如今很热,咱们的架构应该将 Docker 引入进来...”
随着业务的发展,跨系统架构设计必将成为咱们重要的解决难题,届时可能须要从新优化设计。咱们指望一张很大的架构图,囊括全部的业务相关的设计,事实上若是不深刻了解业务,架构图就是纸上谈兵。
架构的本质在于合理,合理表现为两个方面:
1)提升效率:用更少的人力承接更多的工做
2)下降预算:用更少的机器承接更多的任务
本人十年后端研发经验,任职架构师,曾“混迹”多个互联网大厂,专一软件架构技术研究学习,但愿可以不断沉淀、学习以及分享,将本身工做中的问题和技术总结输出,分享影响到更多的人;
公众号专一:软件架构研究,技术学习与职业成长。内容涵盖:系统架构应用汇总、消息中间件、MySQL 实用探秘、职业认知升级 四大模块,你们能够在公众号底部菜单“精选专题”里随时查阅;
你们看个人公众号头像图片像是一个陀螺,实际上是寓意螺旋式上升,让技术和自我可以不断精进。
Thanks for reading!