软件架构ABC

作者: shysheng | 来源:发表于2019-03-31 21:55 被阅读9次

前段时间出去面了几家公司,一家家聊下来,大部分还算可以从容应对,但也有的就被吊打得体无完肤o(╯□╰)o。整体来看,基础知识还算被大多数公司所认可,但一旦涉及架构或设计,自己基本上就只有被吊打的份了,所以今天我们就来聊聊架构。

什么是架构

架构这个词似乎被说烂了,但真要问什么是架构,我竟真的一时语塞。事实上,对于什么是架构,可能很多架构师都会有他自己的看法。有一个笑话是这么说的:

Architecture is like teenage sex,everybody talks about it,nobody really knows what it is.

而维基百科上是这么说的:

Software architecture refers to the high level structures of a software system and the discipline of creating such structures and systems.

翻译成中文,大概是这么个意思:

软件架构是指软件系统的顶层结构,以及创建这样一个结构和系统的准则。

这么听起来感觉还是有点虚,翻译成人话怎么说呢?个人非常赞同李运华老师的理解,他说系统架构要包含两方面的内容:

  • 明确系统中包含哪些个体
  • 明确系统中个体运作和团体协作的规则

用一个大家更好理解的例子也许就是组织架构。

在一个企业的组织架构中,会有HR团队、产品团队、技术团队、市场团队等等,而技术团队中又可以细分为前端团队、后端团队和测试团队。

那么企业组织架构的目的就是明确整个企业的人员构成、每个团队的职责以及跨团队合作的一些规则。

为什么要做架构设计

讲明白架构的概念,那对一个软件系统,为什么要做架构设计呢?

我们还是从企业的组织架构讲起。

企业创立初期,可能就三五个人,这个时候是没有什么组织架构可言的。因为创始团队什么活都要干,人事、行政、产品、技术都得一肩挑,设计、开发、测试、运维全得自己上。

如果运气比较好,产品得到市场认可,公司规模会慢慢扩大,企业业务也会愈发复杂。这个时候如果每个人都还得人事、行政、产品、技术一肩挑,设计、开发、测试、运维自己上,那不就乱套了嘛。于是分工就产生了,也就慢慢会形成自己的组织架构。

可以看到,企业组织架构的产生,一个很大的原因,是为了解决企业规模扩大之后带来的人员职责不清晰、效率低下的问题。

其实软件架构同样如此。

对于一些简单的系统,可能用户量就几百上千,业务也不复杂,这个时候也谈不上什么架构设计。只有当系统日趋复杂时,才能体现出架构设计的重要性。

所以,李运华老师说

架构设计是为了解决复杂度带来的问题。

怎么做架构设计

既然架构设计的主要目的是为了解决复杂度带来的问题,那么对于一个软件系统,其复杂度来源于哪里?一般来说,大致有这么几个方面:

  • 高性能
  • 高可用
  • 可扩展
  • 安全

所以架构设计主要也就是围绕这几个方面展开。但由于本人目前对架构认识有限,所以这里并不打算针对每一点具体展开,就简单画个脑图吧,算是指导自己在架构进阶路之路上的一份学习指南。


image.png

脑图中的大部分内容来源于李运华老师的《从零开始学架构》,非常好的一本书,也推荐对架构感兴趣的同学找来看看。

最近还看了另外一本评价颇高的《架构整洁之道》,不过相比李运华老师的书,Bob大叔似乎更加务虚,可能是自己level还不够吧,读起来有点雾里看花的感觉。

大家在学习架构上有什么好的经验,也欢迎与我交流。

更多技术文章,咱们公众号见,我在公众号里等你~

image.png

相关文章

  • 软件架构ABC

    前段时间出去面了几家公司,一家家聊下来,大部分还算可以从容应对,但也有的就被吊打得体无完肤o(╯□╰)o。整体来看...

  • 无标题文章

    软件体系架构 第一章 认识体系结构 软件架构的多个结构 软件的架构不是静止的 软件架构的概念 软件架构的产生 软件...

  • SpringCloud 微服务(架构篇)

    SpringCloud 微服务(架构篇) 软件架构的进化 什么是软件架构 软件架构是在软件的内部,经过 综合各种因...

  • 「整洁架构」实战 MVC 架构重构到整洁架构

    软件架构介绍 什么是软件架构 我们先来看看维基百科对 软件架构 的定义, 软件架构是有关软件整体结构与组件的抽象描...

  • 系统架构设计师学习笔记 第九章 软件架构设计

    第九章 软件架构设计 9.1 软件架构概述 9.1.1 软件架构的定义 定义1:软件或计算机系统的软件架构是该系统...

  • 软件架构详解(附图)

    软件架构(software architecture) 软件架构(software architecture)是一...

  • 系统分析与设计作业8

    1、描述软件架构与框架之间的区别与联系 软件架构:软件架构是一个系统的草图。软件架构描述的对象是直接构成系统的抽象...

  • 学习总结0606

    一、软件架构的概念 软件架构是有关软件整体结构与组件的抽象描述,用于指导大型软件系统各个方面的设计。 软件架构整体...

  • 系统分析与设计 hw8

    描述软件架构与框架之间的区别与联系 先分别弄清楚两个名词的定义。 软件架构:软件架构是一个系统的草图。软件架构描述...

  • 微服务

    1.1 软件架构的演进: |-- 单体架构 |-- SOA架构 ...

网友评论

    本文标题:软件架构ABC

    本文链接:https://www.haomeiwen.com/subject/yxkpbqtx.html