软件|Mobvista蔡超:一名优秀架构师需掌握的8大窍门

DoNews 9月21日消息(采访人员 刘文轩)近日 , 汇量科技(Mobvista)集团副总裁兼首席工程架构师蔡超做客QCon+案例研习社线上发布会 , 分享了成为优秀架构师必备的8大窍门 。
软件|Mobvista蔡超:一名优秀架构师需掌握的8大窍门
图片

蔡超拥有17年软件开发经验 , 其中有超过10年在HP、Amazon等世界级公司任职软件架构师/首席架构师 。 先后领导开发了网络安全管理系统(TopAnalyzer)、HP(中国)移动设备管理系统、亚马逊全球的新外部直运(External Fulfillment)平台、亚马逊物流+系统、亚马逊全球客服系统以及大型弹性集群管理平台SpotMax等 。 基于多年实战经验 , 蔡超总结并分享了他在架构师成长之路上的8大窍门 , 为同行们带来更多思考 。
软件|Mobvista蔡超:一名优秀架构师需掌握的8大窍门
图片

汇量科技(Mobvista)集团副总裁兼首席工程架构师蔡超(右1)
以下是蔡超的分享内容:
到现在我工作17年了 , 期间不仅在HP、Amazon这样的世界级团队中担任过架构师 , 也在汇量科技这样快速成长的企业中担任过技术领导 。 基于超过十年的架构师工作经验 , 我将和大家分享一下这些年的成功与失败 , 希望能帮助大家避开那些我曾踩过的坑 。
“提出问题”难于“解决问题”
作为技术人员我们往往习惯于给出设计方案 , 做一个问题的解决者 , 而很少做一个问题的提出者 , 去思考要设计什么 。 团队中最常见的典型矛盾是产品团队和研发团队的矛盾 。 作为研发团队 , 我们常吐槽产品团队的需求不合理 , 不懂技术等 。
其实我们可以尝试把自己的工作往前移一下 , 不仅仅是去设计架构实现产品的需求 , 而是去实现客户的需求 , 甚至发现潜在需求 。
变成在设计上提出问题的人后 , 你会发现提出问题同样需要深入思考 , 设计一个好的问题 , 有时候甚至比解决问题更难 。
即便是软件开发领域的大神Frederick P. Brooks Jr.(《人月神话》的作者)也会有同样的感叹 , “The hardest part of design is deciding what to design.” 这句话便是出自他的《The design of design》 。
决定“不要什么”比“要什么”更难
也许是由于人性的贪婪 , 对于软件系统我们同样想要更多:更多功能 , 更好的性能 , 更好的伸缩性 , 扩展性等等 。 作为软件架构师要明白软件架构设计其实是一种取舍或平衡 。 当大家都在往里面加东西的时候 , 架构师更应该来做这个说不的人 。
软件设计和定义过程中存在很多取舍 , 如完善功能和及早发布的取舍、伸缩性和性能的取舍等 。 如何做好取舍?著名的CAP原则就是一个很好的关于取舍的指导策略 。 为保持架构风格的一致性 , 在一开始架构师就应该根据系统的实际需求来定义一些取舍的原则 , 如:数据一致性拥有最高优先级 , 提前发布核心功能优于完整发布等 。
非功能性需求决定架构
很多设计人员可能会认为架构是由要实现的功能性需求决定的 , 但实际上真正决定软件架构的其实是非功能性需求 。 因此 , 架构师需更加关注非功能性需求 , 如性能 , 伸缩性 , 扩展性和可维护性 , 甚至包括团队技术水平和发布时间要求等 。 能实现功能性需求的设计方案有很多 , 只有考虑了非功能性需求后才能筛选出最合适的设计 。
《面向模式的软件架构》这套书为不同的非功能性需求提供了很好的参考和指导 , 多年来一直是架构师们的必读经典 。 下图的架构模式便是来自这本书的第一卷 , 图中的Micro-Kernel模式 , 更加关注可扩展性和可用性(错误隔离) 。
软件|Mobvista蔡超:一名优秀架构师需掌握的8大窍门
图片

“简单”并不“容易”
很多架构师常常会提到保持简单 , 但有时候我们往往会混淆简单和容易 。 简单和容易在英语里是两个不同的词“simple”和“easy” 。


推荐阅读