这些博客是讲软件架构的,也是讲软件架构师的。他把软件开发比喻为盖房子,他提出了一个重要的理念:高质量、可复用。
关于高质量,我们都知道软件开发需要以工程的方式进行,这就要求软件架构师要有足够丰富的工程经验去设计每一个层次的体系结构。虽然我自己没有从事过工程工作,但是我看过很多在一些大公司工作过的人的经历与看法。比如微软公司、 IBM、 Oracle、 Sybase等都是世界上最大的工程数据库,同时也是世界上最大的数据库管理系统。他们这些公司都拥有庞大而又复杂的架构体系,在那个时代没有一个人可以把它们全部理解透,更别说做到自如地使用了。但是现在随着互联网和移动互联网时代的来临,我们不需要那么多复杂无比却又庞大无比系统了。因此我觉得我们在设计开发软件时就应该以高质量为目标,这样才能保证软件系统运行稳定、可靠、高效且易维护。
关于可复用,我认为这是一个很大的话题了!简单来说就是一个系统在运行中不断修改以适应环境变化,通过一些数据结构和技术手段(比如:配置文件)把这些修改记录下来并整合到新版本里去。这里面还包括了可扩展性和性能优化问题。比如在开发银行这个系统时发现用户请求不断增加,那就要想办法在其中加入缓存等功能来避免用户长时间等待而造成整体性能下降!在设计时就需要考虑这些问题!
关于可扩展性方面:软件架构师要保证系统各部分之间有良好的接口关系,使模块可以进行动态扩充或缩编而不影响整个系统运行;对不同层次模块之间的接口设计也需要注意。比如:在银行这个业务里需要用户来查询账号信息等数据;然后才能去开发与其相关联的业务模块并进行扩展或缩编;最后才是整个业务模块内部实现各自功能并达到“高可用”目标!
关于性能优化:一个系统性能最重要指标就是响应时间。
一方面这会影响到客户体验(如登录界面是否足够友好)和开发人员效率(如用户数不够时可能需要不断增加新用户来获取系统资源);另一方面如果用户用得很快而软件运行缓慢则会严重影响工作效率甚至使客户流失(这在今天是很常见的问题)!
关于高可用性,我想说下自己对高可用方面感受最深的就是亚马逊了。我以前看到过一本书叫《第五项修炼》(第五项修炼就是高可用性)这个书我还没看过,但是从名字里也能看出其重要性。目前亚马逊在全球有10个数据中心、几十个数据仓库,并且每年还在以两位数速度增长!可是它面对着“全球变暖”“地震”等诸多挑战却依旧保持着相对稳定的状态!因为它是一家全球性公司并不仅仅局限于亚洲和北美地区,而是充分考虑到了全球各地客户的需求及各种突发事件(比如中国发生地震)来制定其数据中心布局、配置、运维策略等!
读完这本书后我觉得最大启发是:面对任何挑战我们都应该保持一个积极乐观的心态并努力去解决它。正如书中提到一样:“我们所有人都生活在同一个星球上,无论你是谁都没有办法脱离地球而独立存在;每个人都会死掉,所以要更加珍惜生命!”
另外在高可用方面我还学到了另外一点,就是团队合作!团队合作的好处就在于每个人都有自己分工,而且所有人又都围绕着同一个目标在共同努力,这样做起来效率就会更高!另外在一个高可用的环境中每个人所做的工作也会更有意义!
关于微服务,刚开始学微服务的时候并不是很理解。现在自己越来越觉得它是一个非常好的思想。微服务它强调通过服务化手段将单体应用中存在的多个部分独立开来并将其整合成一个大服务!这样做好处是:既可以降低开发成本(因为服务数量少),也可以使模块之间无缝地协作、互访;同时还能够让每个服务具有可扩展性(即一个单体应用中可以添加新服务来满足不同用户的需求)。
我想说的另一点就是微服务对程序员来说要比传统项目管理更简单;它更容易让程序员感到工作得心应手而且易于完成;此外也更有利于架构师及工程师实现其软件系统价值。
最后,我想说下这些文章内容对我最大的启发就是:“架构师需要具有丰富的工程经验并对软件架构有清晰地认识”!这点在任何一个行业都一样!我们都知道一个团队里没有技术出身(可能包括软件测试),但是他也并不一定就不懂技术!关键在于能否对软件架构有清晰而又清晰地认识,同时还能够熟练运用!
总之读完这些文章我感觉自己对架构以及如何做架构师方面有了更深地了解;同时也非常感谢作者能在这么忙的情况下写出这样好的文章!