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


因此 , 我们应该在原型或早期的迭代中确认风险 , 并通过合理的架构解决风险 。 绝对不要把风险放到最后 , 就算是一个项目要失败也要让它快速失败 , 这也是一种敏捷 。
从"问题"开始 , 而不是"技术"
技术人员对新技术有着一种与身俱来的激情 , 总是乐于学习新技术和使用新技术 。 这容易导致一个通病 , 就是"当我们有一个锤子的时候看什么都是钉子" , 因而使用一些不适合的技术去解决手边的问题 , 导致简单问题复杂化 。
我曾经的一个团队便发生过类似事件 , 原本是一个用MySQL作数据存储的简单服务 , 但由于当时负责该项目的人员对彼时新出的DynamoDB产生了兴趣并学习了相关知识 , 因此该成员决定使用DynamoDB替换MySQL 。
之后很快发现DynamoDB并不能很好地支持事务特性 , 在当时只有一个性能极差的客户端类库支持事务 , 而由于采用了客户端方式 , 引入了大量额外交互 , 导致性能差别达到7倍之多 。
这时候 , 这个成员就采用了当时在NoSQL领域广泛流行的最终一致技术 , 通过一个Pub-Sub消息队列来实现最终一致(即当某对象的值发生改变后会产生一个事件 , 然后关注这一改变的逻辑 , 就会订阅这个通知 , 并改变与其相关的数据 , 从而实现不同数据的最终一致) 。
接着由于DynamoDB无法提供SQL那样方便的查询机制 , 为了实现数据分析不得不又引入了EMR/MapReduceJob 。
到此 , 大家可以看到虽然最后实现了一样的功能 , 但是项目的复杂性大大增加 , 维护工作也由一个人变成了一个团队 。

架构|Mobvista蔡超:一名优秀架构师需掌握的8大窍门
文章图片

过度繁忙使你落后
对于IT人而言 , 加班是家常便饭 , "996"似乎成为了公司高效的标志 。 但事实上没日没夜的忙碌往往会挤压我们的学习时间 , 导致我们失去知识更新的意识 , 不知不觉变得落后 , 最终失去跳槽的能力与勇气 。
在今天这个高速发展的时代 , 我在工作经历中发现过度繁忙往往会带来以下问题 , 首先是缺乏学习导致工作能力难以提升无法面对日益复杂的需求;其次 , 在技术上与业务上丧失领先优势 , 只能被动追赶 , 而被动追赶又会让我们更加忙碌 , 最终形成恶性循环 。
个人技术的成长就像健身 , 仅靠锻炼还不够 , 营养的补充同样重要 。 当你在一个领域工作一段时间以后 , 工作对你而言就主要是实践了 , 随着你对该领域的熟悉 , 能学习的到的技术会越来越少 。 所以每个技术人员都要保证充足的学习时间 , 否则很容易成为井底之蛙 , 从而陷入前面提到的恶性循环 。
最后 , 以伟大诗人屈原的诗句和大家共勉"路漫漫其修远兮 , 吾将上下而求索"希望我们大家都可以不忘初心 , 保持匠心!


推荐阅读