我的“技术架构”之旅

导言:很久没写过涉及技术的文章了,因为进行职业转型后对技术有种很纠结的心态。热爱——每每看到五颜六色的代码窗口就会心里发酸,想起曾经那是生活中的一份灿烂心情;不自信——这么久离开技术会不会已经落后生疏(虽然一直没有脱离技术的学习与参与,但是失去了一线写代码的实践)。今天恰好去参加AWS(亚马逊云服务)的一个区域讨论会,一位亚马逊的架构师在为大家讲解AWS云服务及一些案例的架构设计,很多熟悉的概念,还有这位架构师的谦逊和真实,一切是那么亲切。所以心血来潮,想回顾一下自己做架构的职业之旅。



本想自己定义一下架构设计的要点,发现百度百科中总结的就很好“系统架构既需要掌控整体又需要洞悉局部瓶颈并依据具体的业务场景给出解决方案,并能把各种目标需求进行不同维度的扩展。”提炼一下:

  • 熟悉业务:技术本身是无“价值”的,要落地到具体的使用场景中为客户/用户解决问题。
  • 掌控整体又要洞悉局部瓶颈:我们时常要对技术实现进行优化、时常要解决各种bug,但是正如“过早优化是万恶之源”这句话的深刻含义一般,我们应该在明晰全局的基础上再去确定需要解决哪个局部问题。
  • 不同维度的扩展:面对不断变化,灵活性与可扩展性是我们进行架构设计所追求的目标。

这是一些做架构的核心要点,其中还有很多其他的点。看看我的点滴领悟。

第一阶段:外包生涯

作为技术人员仿佛会本能的排斥去做IT外包的工作,仿佛这样就会成为IT界“蓝翔”的代言人。其实做外包人员并不意味着低端和无成长性,特别是对于在一些有着严格规范和标准的外包企业中,有对代码规范和文档注释的要求;由于只需要做业务中一块,这就要求把业务功能和接口设计的足够分离。正是这段经历让我形成了规范的代码习惯和有了功能接口化、模块化的思维。

参考:华为代码规范文档;书籍—《代码大全》

第二阶段:研发单机软件

这是自己第一次独立负责研发一款软件,开始接触客户了解业务,然后诉诸于代码实现。在这个过程中有一个印象极深的片段,接手的代码有一个长达千行的函数,代码命名随意也没有注释,看得我云里雾里。最后导致自己付出了大量的时间,包括利用debug工具一行行跟代码才了解清楚业务逻辑,心里默默地走了数百遍的草泥马。随后我便用第一阶段养成的好习惯开始进行众多功能的分割,把这个千行的庞然大物分离成一个个套用的小函数,另外在代码(命名和注释)上进行规范,不但利于自己后期的维护,我想也不至于难为下一个接手的研发人员。在这段经历中,我开始有了把一些工具函数抽出来写成工具类的意识(这期间还看了很多开源的代码,从其中抽出不少工具函数)。另外一个重点,就是对单一程序插件机制的利用,比如可以灵活的调节界面展现元素,利用程序的动态加载机制(动态库)来对程序进行局部升级和逻辑改变。

参考:snort和 tcpdump的源码充分实践了程序的插件机制;博客文章—《提高工作效率的工具“类”》

第三阶段:Client/Server端编程

C(B)/S架构意味着开始接触网络编程、web编程。这个阶段对自己影响最大的应该是分层的思想。网络协议栈分层的精妙设计和java SSH框架的使用都深深影响了自己,比如自己一个即时聊天系统的架构设计就充分使用了分层的思想,包括后期使用分层的思想搭建了一些业务无关的技术平台,便利了自身也充实了公司的技术货架。

参考:博客文章—《IM系统架构设计之浅见》,技术平台源码github—高性能TCP网络服务器程序基于TCP协议的远程过程调用框架客户端实现

第四阶段:转向Linux系统、服务端编程

2011年时随着互联网/移动互联网的风暴愈加狂烈,90%以上的后端服务都是Linux承载,客户端技术又太碎片化,所以自己提前预判,将自己的技术栈从Windows全面转向Linux,从客户端转向服务端。如果说自己的架构生涯里转折点只能选一个,我会选这个阶段。Linux体系和windows就是两种不同的文化,其中《Unix编程艺术》这本书可以说是我的精神导师,我阅读了不下四遍。书中的很多思想都成为我今后做架构的依据和准则,比如“模块原则:使用简洁的接口拼合简单的部件;分离原则:策略同机制分离,接口同引擎分离......”,浓缩成一个词一句话“KISS——Keep It Simple,Stupid!”。当Martin Fowler 与 James Lewis 还未提出微服务的概念时,依据这些思想我已经做了很多微服务的设计和实践。

参考:博客文章—《三读《UNIX编程艺术》——UNIX哲学》  《服务端架构中的“网关服务器”》

第五阶段:搭建互联网平台级产品

这个阶段因为自己的角色已经不仅仅是个技术人员,而且已经深入到业务和产品设计以及运营中去。这时的思路是一定要以业务指导架构设计,我们不可能考虑全面所有事,架构可以随着业务发展慢慢演化。但此时的架构范畴已经不单单是某个程序的架构,而是技术选型、架构设计、性能优化、 安全、系统发布、运维监控、业务数据分析等对整个业务链的支撑。

参考:待总结(包含移动APP,智能硬件、web开发、数据库、云服务、高并发等等)



以上就是今天心血来潮的一些主要节点的回忆,其实还有很多的点点滴滴,正是由于这些点滴构成了自己的技术思想和职业生涯。敬曾经作为技术人员的自己,敬所有还在技术岗位的程序猿兄弟美眉们。


时间: 2024-08-03 21:29:39

我的“技术架构”之旅的相关文章

JavaWeb网站技术架构

JavaWeb网站技术架构总结 题记 工作也有几多年了,无论是身边遇到的还是耳间闻到的,多多少少也积攒了自己的一些经验和思考,当然,博主并没有太多接触高大上的分布式架构实践,相对比较零碎,随时补充(附带架构装逼词汇). 俗话说的好,冰冻三尺非一日之寒,滴水穿石非一日之功,罗马也不是一天就建成的,当然对于我们开发人员来说,一个好的架构也不是一蹴而就的. 初始搭建 开始的开始,就是各种框架一搭,然后扔到Tomcat容器中跑就是了,这时候我们的文件,数据库,应用都在一个服务器上. 服务分离 随着系统的

《大型网站技术架构》读书笔记之七:随需应变之网站的可扩展架构

此篇已收录至<大型网站技术架构>读书笔记系列目录贴,点击访问该目录可获取更多内容. 一.可伸缩与可扩展-傻傻分不清楚 上篇笔记我们学习了可伸缩架构,但在实际场合中,包括许多架构师也常常混淆可伸缩和可扩展,用可扩展表示伸缩性.那么在此,跟随作者我们来理清这两个概念,避免我们以后对其傻傻分不清楚. (1)扩展性(Extensibiltiy) 指对现有系统影响最小的情况下,系统功能可持续扩展或提升的能力.我们不禁想到了面向对象中一大原则:开闭原则,对扩展开放,对修改封闭.也就说,当系统新增一个功能时

《大型网站技术架构》读书笔记之六:永无止境之网站的伸缩性架构

此篇已收录至<大型网站技术架构>读书笔记系列目录贴,点击访问该目录可获取更多内容. 首先,所谓网站的伸缩性,指不需要改变网站的软硬件设计,仅仅通过改变部署的服务器数量就可以扩大或者缩小网站的服务处理能力.在整个互联网行业的发展渐进演化中,最重要的技术就是服务器集群,通过不断地向集群中添加服务器来增强整个集群的处理能力. 一.网站架构的伸缩性设计 1.1 不同功能进行物理分离实现伸缩 (1)纵向分离:将业务处理流程上得不同部分分离部署,实现系统的伸缩性: (2)横向分离:将不同的业务模块分离部署

《大型网站技术架构》读书笔记之八:固若金汤之网站的安全性架构

此篇已收录至<大型网站技术架构>读书笔记系列目录贴,点击访问该目录可获取更多内容. 一.网站应用攻击与防御 二.信息加密技术与密钥安全 三.信息过滤与反垃圾 四.电子商务风险控制 五.学习总结 转眼之间,<大型网站技术架构>的读书笔记到此就结束了.最近时间非常紧,因此本篇没有详细对笔记进行介绍(本篇涉及太多内容,而且都是安全相关的).通过本书的学习,我们从高性能.高可用.伸缩性.可扩展性.安全性五个方面的架构学习了每个方面经典的技术方案,虽然以理论偏多,但还是可以从中管中窥豹,一览

大型网站技术架构的演进

最近我在阅读 2 本关于大型网站架构的书:<大型网站技术架构--核心原理与案例分析>李智慧.<大型网站系统与 Java 中间件实践>曾宪杰. 我期望从这些书中学习到大型网站是如何做架构的,这个过程会遇到什么问题.当看完这 2 本书后,我总结出两个大问题: 1. 网站技术架构为什么会演进?换个说法就是为什么网站会变大? 2. 演进的过程会遇到什么问题?或者说为了演进,会遇到什么问题? 网站技术架构为什么会演进 我个人总结出来我们的技术架构演进的两种驱动力,驱动着我们为什么演进网站的技

《大型网站技术架构核心原理与案例分析》阅读笔记-01

通过阅读该书籍我们能够更加清楚的树立大型网站的的技术发展历程,剖析大型网站技术架构模式,深入的讲述大型互联网架构核心原理,并通过一些典型的技术案例来讲述大型网站开发全景视图,该书籍深入的阐述了各种大型网站面临的各种架构问题及解决方案. 在第一章第一篇大型网站架构演化中了解到与传统企业应用系统相比,大型互联网应用系统具有高并发大流量.高可用性.海量数据.用户分布广泛,网络情况复杂.安全环境恶劣.需求快速变更,发布频繁.渐进式发展等特点:大型网站架构演化发展历程经历了初始阶段的网络架构它的应用程序.

从技术架构的角度去丰富你的大数据知识

对于大数据的学习,很长一段时间,都觉得非常迷茫.不知道具体该学习什么!进而导致知识的知识点挺多,而自己所会的内容都不能够形成很好的体系,进而为自己的职场加分.而最近一直在学习相关大数的架构知识,进而具体到一个厂商.这样反而自己学的很快,总结一下前段时间的学习,温故而知新!!! 首先,大数据开始做为概念开始进入公众并在实际业务中落地是在13年.从一项技术的发展来看,这项技术会在18年形成一个很好的闭环.而在此期间,不管你是不是大数据的项目,在这五年内,只要冠以大数据名称都可以获益. 所以,大数据第

大型网站技术架构(一):大型网站架构演化

第一章:大型网站架构演化 九层之台,始于垒土:千里之行,始于足下. 对于网站的发展,亦是如此,从上世纪90年代开始,互联网经历了20多年的发展,发生了翻天覆地的变化,今天,全球有一半的人使用互联网,从信息检索到实时通信,从电子购物到文化娱乐,互联网渗透到了生活的每一个角落.但是,构建一个高性能的网站,绝非一朝一夕可以完成,我们来看下,作为一个大型网站系统应有的特点: 1.大型网站系统应有的特点 高并发,大流量:需要面对高并发用户,大流量访问.举个例子,去往迪拜的飞机有200张票,但是有100w人

微博首席架构师杨卫华:新浪微博技术架构分析

作为国内微博市场的绝对领军者,新浪微博公布一系列针对开发者的扶持政策,以期与第三方开发者联手推动微博行业的整体发展. 以下为演讲实录: 大家下午好,在座的大部分都是技术开发者,技术开发者往往对微博这个产品非常关心.最晚的一次,是12点多收到一个邮件说想了解一下微博底层是怎么构架的.很多技术人员对微博的构架非常感兴趣,就是一个明星他有300万粉丝,这个技术怎么来实现?今天在这里跟大家分享一下微博的底层机构,让大家对微博的底层技术有更好的了解.另外不管是做客户端.Web 1.0.Web 2.0.论坛