• 《架构漫谈》阅读感想


    谈及架构,源于建筑。

    一想到建筑,就能想到一块空间,有墙,有门,有窗。

    用墙围住的一块密闭的盒子空间,通过门窗与外界保持沟通。

    空间内根据住户的生活需求不同,划分为各个房间,有不同的功用。

    然后人们对建筑的需求也就越来越多,空间的切分也会变成很多种,组合的方式也会有很多种。当要去设计这些建筑的时候,架构师就发挥作用了。

    做好架构,首先需要做的就是识别出需要解决的问题

    建筑进行如此复杂的设计有什么用呢?提升住户的生活质量,满足住户的生活需求。

    纵观远古到今,人类从原始居住方式(住山洞,住在树上)到现今居住摩天大楼中,这一过程也是根据了人类需求的变化而变化。

    (1)过去是人类生活的环境有很多不好因素(猛兽的攻击,风吹雨打),就创生了修建隔离空间的设施,那时候的建筑很简单,只是单纯解决这些问题;

    (2)到后来人类群居生活,区分物质财产、个人隐私之类的问题,修建的房子变得坚固,有了围墙;

    (3)到如今,和平年代,人口骤多,地域狭小,建筑以纵向扩张,形成了高楼大厦,人们以密集的方式居住,随着物质生活的发展,个人的居住空间的需求也就提高了,房间的形式安排关系到住户的生活质量。

    不同时期有着不同的问题,了解到了需要解决的问题,才能有方向地去找解决方案

    利益的调整

    人们对需求的期盼,也就涉及到了人自己对利益的获取。

    软件架构师最核心的考虑就在于此了:考虑涉众的利益

    考虑涉众的利益,进行对人的利益的调整。

    具体一点,对员工的分工调整、对客户利益调整。

    服务的对象,都是人,都以人为本,让各方达到利益最大化。

    问题的方向

    软件实际上就是把现实生活模拟到计算机中,并且软件是需要在计算机的硬件中运行起来。

    具体一点:

    (1)要思考业务在没有这个软件的支持下,它所进行的流程是什么样的,而软件的介入,能带来什么改变,真的解决问题了么(提高工作效率,降低成本)?

    (2)软件是在硬件的基础上进行的,需要哪些硬件设施才能满足软件的要求,软件能否进行后期扩展壮大。(能否实现软件功能、如何实现、能否可持续地发展)

    软件计划

    基于上面的几个方面,就可以制定一些计划去完成:

    一、虚拟化义务:

    1、学习业务知识,了解业务运作的流程,有哪些权利和责任,如何满足利益诉求。(了解)

    2、对业务进行建模,清晰整个业务结构。(构建理解)

    3、学习涉众如何与业务进行交流的,了解交流渠道。(交流)

    4、如何将业务运行的结果持久化,更长久地发展。(发展)

    二、代码如何运营:

    1、需要哪些硬件设备完成软件功能。

    2、代码要分成多少组件部署到哪些硬件设备上。

    3、代码与代码之间如何通过硬件设备进行连接。

    4、能否通过部署新增机器的方式扩大对业务的支撑。

    5、硬件设备失效时,是否影响用户对软件的访问。

    6、能否对软件进行数据采集,帮助后续业务发展。

    三、角色安排

    1、安排哪些角色来完成如上所列的事情

    2、如何保证角色之间的交流不会有损失,如何快速纠正

    3、角色是如何协调,来共同完成任务

     

    代码的功用

    当面对软件的功能时,我们需要将其解析,在代码这一层面上,将功能细分两个部分。

    所要考虑的是:承担的责任。

    (1)逻辑

    (2)数据

    简言之,什么地方是面向用户的,什么地方是进行运算判定的,什么地方是存储数据的。它们各自承担的责任是最好是单一的。

    比如一个网页,面向用户的部分,最好就只是单一的用户界面,没有运算(因为运算会让用户加载网页变慢),而运算就只需要甩给后台,有关的数据只需要给数据库。否则,这样一个代码杂乱的系统,若遇到的问题就可能是修改一处,牵动所有。

    架构师

    (1)作为架构师,首先心中有个观念:解决别人的问题。

    不再以完成自己工作为目标,而是以完成别人工作当成自己的最大利益。

    (2)当在解决问题的时候,要考虑涉众的利益:问题不解决,谁会有利益的损失;问题解决了,谁会有收益,谁的收益最大。

    (3)将技术作为工具来解决问题,采用长期总体成本最低的方案,不要着眼于眼前的短期成本。

    ——————————————————————————————————————————————————————————————————————————————————

    本文只是我读了《架构漫谈》后的理解,《架构漫谈》并没有讲解有什么具体的架构方案,但以建筑作为引子,从软件的发展谈到了软件的构架,方面很多,内容略杂,却易理解。

    前半部多为解决一些需求,架构师从宏观角度所要考虑的问题,考虑涉众利益、考虑真正问题、考虑解决方向。

    以生活中的网络支付为例,以前付现金,有着付现金找零钱的问题,忘了带钱的问题,带钱麻烦的问题等等,买家麻烦,卖家也觉得麻烦。手机人人都有,人人随身都带,那就在手机上添加支付功能。这下,一个手机就可以游玩全城。

    后半部为软件上讲解,软件在什么硬件上运行,怎么运行,用什么技术,安排什么角色,代码怎么安排等。

    以我自己编写的网页为例:初学网页时候,就直接将用户界面和数据运算写在同一个页面,问题也就多了,运行慢,修改一处,就要牵扯到其它功能的代码,BUG也不易发现,总的来说,就是为了完成功能而形成的大杂烩,什么菜都有,但无味、无相。

    软件架构师是什么呢?以大体的来说,他掌控着整个大的方向,知道什么地方采用什么技术,知道真正的问题所在,知道要达到的目的,在众多利益矛盾中寻求平衡。

  • 相关阅读:
    java访问修饰符
    java中的String
    int与Integer的爱恨情仇
    vs中动态DLL与静态LIB工程中加入版本信息的方法
    从页面中取出email地址和相对链接及绝对链接的代码...
    Web文件的ContentType类型大全
    将web站点下的绝对路径转换为虚拟路径_asp.net技巧
    在ASP.NET中重写URL 方法三:在IIS7中使用HttpModule 实现无扩展名的URL重写
    CSS中常用的选择器及三大特性
    JS“轮播图”
  • 原文地址:https://www.cnblogs.com/maplely/p/6491809.html
Copyright © 2020-2023  润新知