做架构的一点心得总结。
------------------------------------------
【IT168 专稿】一套工具集合,包含7个独立工具、30多万行代码…相信行业内的老司机们都知道小编说的是啥——数据库管理工具。他,从入行到现在,15年里,从数据库管理工具到接口驱动程序再到数据库内核,把数据库相关的研发工作完整地实践了一遍。因此对软件系统框架结果有了深度把握。他说“走上数据库架构师这条路,如人生的行进,偶然中蕴含着必然。”这就是小编本次的采访对象,SACC2016中国系统 架构师大会的嘉宾:华胜信泰数据库架构师李海翔。
扎实的基本功 畅游数据库内核“汪洋大海”
为了实现数据库管理工具集、7套工具统一风格、统一操作、统一UI,李海翔探索出了MVC(Model View Controller,模型(model)-视图(view)-控制器(controller))改进模型,把model变为2层,底层映射数据库的实体数据,7个工具可以共用底层的model,上层为不同工具定制UI展现特性,很好地解决了数据模型需要和不同工具的UI分离的问题。在采访中,李海翔发自肺腑的感言:这次成功的尝试让我初步体会到了架构的魅力,体会到做架构并非一朝一夕之功,而是在实践中不断学习、不断思考、不断改进、不断总结而来的,只有在实践中摸索、领悟才能逐渐“悟道”。
正是架构的魅力,推着李海翔一步一步踏实的规划着自己的职业道路。2006年,李海翔开始从事数据库内核研发工作。他形容,数据库内核犹如一片汪洋大海,广袤而深邃…
李海翔先是接触了高可靠分支,从事了备份恢复、日志管理等内核相关工作,之后又从事过底层的存储、中层的数据对象访问、数据库安全、SQL优化等相关工作,由深度而到广度再深入,打下了扎实的基本功。这段时间的工作,让他“认识”和“熟悉”了数据库内核的各个模块。
李海翔继续说道:“如果仅限于此,还不能完全“相知”,便不能承担起架构师的职责。”在工作中,他不断思考功能如何实现,模块功能极限等问题。这使李海翔逐渐架构起了模块之间的桥梁。思考模块间的关系帮他逐步融会贯通了零散的知识点,对数据库内核逐步相知、深知;思考模块的功能极限,如存储层单表最大容量、多进程架构的数据库系统可支持的会话数与共享内存的关系等,让他认识到做架构不能浮于表面,而要深入到真实需求产生的真实体系结构要求中,要考虑系统的安全、性能、容量、扩展性等真实体系结构的要求。”
随后李海翔又跳出数据库内核,从事了一段时间的数据库测试技术和测试部门的管理工作。他说“这让我站在数据库之外,以测试者的身份、以观察者的身份、以使用者的身份从整体上看待数据库的产品体系,这让我“视角大开”:从事过的工种多则建立的联系点多而倍感开阔,做架构设计需要这种极为广阔的视野,做数据库的架构设计需要考虑整个产品线的产品体系架构和各个产品各自的架构特点,需要先能庖丁解牛般掌握自己面对的对象,然后才能抽象出框架结构、进而析“结构”,然后成“架构”。
没有这段经历、似乎做一名数据库架构师会有所缺憾,以单一视角看待一个事物难以窥得庐山真面目。所谓架构师做架构的设计,首先重要的就是先“解构”,面对数据库的解构能力代表着能清晰掌握数据库体系结构的方方面面,有过深入才能浅出。”
经历了十多年的国产数据库研发工作后,李海翔来到Oracle做了两年查询优化工作。在国际化的研发环境和氛围中,与同事们一起开发MySQL的优化器,体会到了优化器在数据库整体结构中统领、驱动SQL执行的重要性。
谈到职业规划,李海翔的经历可以说给了初学的开发者丰富宝贵的经验。他说:“如果没有之前丰富的数据库多工种研发和测试经历,没有深入内核又潜出又深入内核的经历,没有在管理工作中感受组织架构,没有在生活中体会感悟不同的人性,则不会走上今天的架构师之路。”
人生亦架构 认真对待架构好人生
虽说从事技术开发相关工作,但业余时间李海翔把一些个人的心得体会都倾注在《数据库查询优化器的艺术》这本书上。他说“业余时间,我喜欢动笔。其实是动键盘,在键盘上锻炼自己手指的麻木性。”把那些分享过的技术串联,就有了这样一本讨论查询优化技术的书籍。
李海翔在采访中说:写书之初,不是为了写而写,不是为了名而写,是为了梳理“产品--架构--设计--投入--完成”这一全套过程。其中,书的框架结构设计的过程犹如软件的架构设计,为了让读者能够看懂和理解,要设计好如何设置各个章节的内容,如何将纷繁复杂而又极具深度的知识点行云流水的展现出来。做软件的架构设计,也应当是从用户使用的实际情况出发,而考虑功能、性能、容量、扩展、安全等何时独立,如何融合。
人生亦架构,认真对待倾注灵魂,即能架构好人生。
参加SACC又是一次自我提升
李海翔之前参加过多次DTCC数据库技术大会,但今年的SACC大会是第一次参加。他开心的说“对自己而言,参加SACC架构师大会,是又一次难得的提高和学习的机会。”
加入华胜信泰之后,李海翔主要负责数据库技术架构相关工作和架构部的管理工作。谈到最近的关注,李海翔觉得数据库技术架构,有很多有意思的内容,比如Informix在架构上以类协程的技巧在单进程用户态中实现了操作系统内核态实现多进程的功能…另外,除了关注Informix自身的技术外,他还关注着数据库的经典技术事务处理相关技术、关注着分布式数据库技术的发展和架构等。
当谈到成为了一个架构师之后有怎样的体会,李海翔强调:要反复观察、不断思考,在改进中觅得最好的架构设计;要注重体系结构的内在需求,关注安全、性能、容量、扩展性等关键点的架构设计;要思考整体和重点的关系,注意培养“解构”能力;要思考软件体系与工作生活的关系,应对波峰和低谷,做好扩容便于灵活扩展,有取有舍,就能架构好每一个产品。
架构师应更多注重“读代码”
谈到架构师是否应保持写代码这个习惯,李海翔表示“术业有专攻,似乎写代码是程序员的事情。但是,个人认为,架构师应在更高层级上“写代码”,应更多地注重“读代码”。软件开发中有一些工作,尤其是类似数据库系统这样的复杂系统的一些框架性代码(未必是核心算法的代码),非架构师而不能为,架构师应写这些框架性的代码,用代码流畅地体现出架构设计的思想。
另外,对于架构师,我认为比写代码更重要的是 “读代码”。读什么代码呢?一是读本领域内的经典代码,比如做为数据库内核开发的架构师,应该多读PostgreSQL的代码以领略代码的优美,读MySQL的代码以领略其实用之风。读本领域的代码可以开阔自己的思维,同一个思想、设计不同数据库有不同的实现方式,所以读本领域的经典代码细细体会和品味,之后可以把学习到的可以运用到自己的工作实践中。二是读本领域相关的其它领域的代码,如读一读Linux内核源码,读一读应用中间件的代码等,这样可以扩展自己的知识体系的深度,让自己所做的架构设计能更好地与周边环境相融。一个软件的架构不仅是支撑本软件体系结构的,而且要使得本软件对外能与操作系统协调、与应用协调。
多读代码,犹如找到一位位良师益友。”
写在最后
对于云时代的平台架构如何发展,李海翔说:在数据库方面,数据库云会得到发展并普及,分布式数据库将成为数据库云的基础设施,伪分布式数据库中间件将进入垃圾篓。
在即将到来的SACC2016架构师大会上,李海翔透露将分享“数据库引擎技术架构”,是对关系数据库架构技术的一次总结。
“恰逢金秋,精心架构,数年心血终得硕果。
精华荟萃,大师相聚,三天时光结识良友。
愿架构师大会架构起技术交流的大桥,祝架构的技术之路越走越宽敞!”
在采访的最后,这个“技术文青”为2016中国系统架构师大会送上了这首祝福的诗。如此有情怀又懂技术的嘉宾,让我们同期待他在SACC的舞台上一展风采!
作为国内最受欢迎的架构师盛会,2016年第八届中国系统架构师大会SACC即将于10月27-29日在北京盛大召开。本届大会以"架构创新之路"为主题,安排两大主场和24个专场。届时,来自互联网、电子商务、金融、电信、政府、行业协会等20多个领域的150多位技术专家将汇聚一堂,共同探讨云计算和大数据时代下,如何通过架构创新来实现企业的快速转型。更多内容请访问大会官网:http://sacc.it168.com/