zoukankan      html  css  js  c++  java
  • 《架构漫谈》阅读笔记

      架构漫谈是由资深架构师王概凯执笔的系列专栏,通过对其阅读,我从中逐步认识到了什么是架构,怎样做好架构,软件架构如何落地等内容。

      一、什么是架构

      在软件行业,对于什么是架构一直有很多的争论。事实上,架构在软件发明时的N多年以前,就已经存在了,这个词最早出现在建筑上。架构产生的五个动力可以概括为:由个人执行的工作;每个人的能力有限;每个人时间有限;人对目标系统有更高的要求;目标系统的复杂性使得单个人完成这个系统。当这五个条件同时成立,一定会产生架构。从这个角度上来说,架构是人类发展过程中,由懵懵懂懂的,被动的去认识这个世界,变成主动的去认识,并以跟高的效率去改造这个世界的方法。

      对于什么是架构,作者为我总结为四点:1.根据解决的问题,对目标系统的边界进行界定。2.并对目标系统按某个原则进行切分。切分的原则,要便于不同的角色,对切分出来的部分,并行或串行开展工作,一般共行才能减少时间,3.并对这些切分出来的部分,设立沟通机制。4.根据3,使得这些部分之间能够进行有机的联系,合并组装成为一个整体,完成目标系统的所有工作。

      二、认识架构的基础概念

      每个概念年实际上所解决的是人遇到的某个特定问题,我们把解决问题的解决方案,给定一个名字,这个名字就是对应的某个特定的概念。在讨论桌子这个概念的过程中,很多人会提出抽象这个概念。抽象这个词代表的含义,实际上是吧不同的概念的相似的部分合并在一起,形成一个新的概念。根据架构的定义,要做好架构所首先必须具备的能力,就是能够正确的认识概念,能够发现概念背后所代表的问题,进而才能够认识目标领域所需要解决的问题,这样能够为做好架构打好基础。 

      三、如何做好机构的识别问题

      找出问题的主题,是架构的首要问题。我们要解决的问题,一定是人的问题。架构师要解决的,基本上都是别人的问题,不是自己的问题,任何找上架构师的问题,绝对都不是真正的问题。

      我们需要识别:用户究竟是二传手,还是问题的真正主体。当然明白了问题的主体,我们才能真正的认识问题是什么。因为问题的主体是问题的隐含边界,边界不确定下来,问题就是不确定的。一旦确定了主体,剩下的就是去搞明白主体有哪些问题。

      做好架构首先需要做的就是识别出需要解决的问题。一般来说,如果把真正的问题找到,那么问题就已经解决了80%了。这个能力基本上就决定了架构师的水平。任何找上架构师的问题,绝对都不是真正的问题。需要从问题暴露的点,一点点去溯源查找,一定会找出来谁的问题,以及是什么问题。 

    要正确的认识问题,需要问两个问题:

    1. 这是谁的问题?

    2. 有什么问题?

    能够清晰的定义问题,是解决问题的第一步。

      四、如何做好架构的架构切分

      架构的切分的导火索是人、时间的负载太重。每个人的能力有限,或者单个人来做的话,时间太长。架构的切分实际就是对stakeholder的利益进行切分或合并,使得每个stakeholder的权责是对等的,每个stakeholder可以为自己的利益负责。

      架构切分的最终结果都会体现在组织架构上,只有这样才能够让架构落地并推进。

      架构切分的结果一定是一个树状,这也是为什么会产生分层。层数越多沟通越多,效率越低,分层要越少越好。尽可能变成一颗平衡树,才能让整个系统的效率最大化。

    由此产出的一些设计算是软件架构:

    1. 软件因为流量增大而分拆成不同的运行单元,在不同的机器上部署所形成的架构,属于软件架构。

    2. 每个运行单元为了让不同角色的人,比如前端,业务,数据存储等能够并行工作,所分成的代码架构,也属于软件架构。

      五、自己的想法

      作者把架构归结为分工的需要,但是只有一个人的项目的时候,也是需要架构的。架构使整个系统满足业务需求的基础上,简单、可维护。总之,在以后的工作中,架构无论对个人还是团体都有着不可估量的作用。

  • 相关阅读:
    [Asp.net 开发系列之SignalR篇]专题四:使用SignalR实现发送图片
    [Asp.net 开发系列之SignalR篇]专题三:使用SignalR实现聊天室的功能
    [Asp.net 开发系列之SignalR篇]专题二:使用SignalR实现酷炫端对端聊天功能
    [Asp.net 开发系列之SignalR篇]专题一:Asp.net SignalR快速入门
    [后端人员耍前端系列]Bootstrap篇:30分钟快速掌握Bootstrap
    工欲善其事,必先利其器
    ASP.NET 开发必备知识点(2):那些年追过的ASP.NET权限管理
    ASP.NET 开发必备知识点(1):如何让Asp.net网站运行在自定义的Web服务器上
    [你必须知道的NOSQL系列]专题二:Redis快速入门
    [你必须知道的NOSQL系列]专题一:MongoDB快速入门
  • 原文地址:https://www.cnblogs.com/xulei11-/p/8523384.html
Copyright © 2011-2022 走看看