论架构师的自我修养

接上一篇从电商数据指标到电商数据中台
在完成了业务抽象和数据建模之后 , 到了技术实现的阶段 , 作为架构师 , 你会怎么做 。
想起在学生时代认真读过的《国富论》 , 书中对社会分工的论述至今印象深刻 , 西方的利己主义跟我们所常见到的自私自利见不得别人好是完全不同的概念 。 从利己的角度出发 , 每个人的天赋和擅长的技能都是不一样的 , 通过社会分工 , 所有人都可以聚焦在自己擅长的领域 , 不断的提高生产效率 , 最终生产出的价值均分到个人将远大于自己单打独斗自给自足啥都要做的生产方式 。 同样的 , 从利己的角度出发 , 政府收多少税 , 用税收做什么事(比如修一座桥) , 都需要论证是否有利于纳税人 , 这会让资金和资源不断的投入到有价值的事情上 。 还有就是 , 从利己的角度出发 , 对知识产权的尊重和保护 , 实际也是对自身天赋和所擅长技能的保护 , 让你可以全身心投入到技术突破中 , 而不用太担心被别人摘了桃子 。 这些最终催生出了工业革命、管理革命 , 以及计算机技术和互联网的诞生 。 从计算机技术领域来看 , 当一个系统越来越复杂之后 , 基于对知识产权的严格保护 , 技术将会被大公司所垄断 , 这对于在这个领域一个人就能吊打一群人的技术天才们而言是不可接受的 , 开源社区由此诞生 , 无数技术爱好者的技术共享极大的降低了所有人的技术门槛 , 这加速了互联网的繁荣 。
以上简短的回顾论证了利己和共享这两个看似矛盾的词实际是很和谐统一的 , 这比我们时常听到的都是为你好而实际上很藏私要更有生命力 。
回到正题 , 这对我们的技术选型又有什么启发 。
首先当然是要从开源社区汲取力量降低技术成本 , 并在力所能及的时候向开源社区做出贡献 , 如果长期只喝水不挖井 , 以后大概率就会没有水喝或者要付出很贵的价格才能喝上水 。
这些年开源社区有很多好的产品 , 很多企业都在用 , 随手举几个例子:云原生的kubernetes(k8s)+docker;运维监控的prometheus+grafana;日志分析的ELK(elasticsearch+logstash+kibana);微服务的springcloud+springboot;大数据的hadoop+hive+spark+hbase+flink 。
重复发明轮子是一项代价很高但产出有限的投资 , 也违背了社会分工的经济规律 , 开源社区中如果没有好的选择 , 成熟的商业产品也要纳入选择范围 , 想想你自己的技术团队有多少人 , 每天都在做什么事情 , 就很明了 , 我们需要聚焦在自身的业务特色上 , 把有限的技术力量投入到我们的核心能力建设上 。 比如同样100人的技术团队 , 做这个商业产品的公司是百分百都投入到这个产品中 , 而且还都是相对专业对口的人才 , 如果我们自己来做的话 , 估计最终只能拉出来三五个人来做这件事 , 大概率还不是资深的 , 时间、质量都会是问题 。 像之前提到的观远BI , 和GrowingIO的用户行为分析 , 都是很不错的商业产品 。
再来看数据中台的技术选型 , 我们需要考虑的最重要一点是技术架构要能线性扩展支撑规模增长 , 数据只会越来越多 , 架构一定是要能线性扩展的 , 分布式的存储和计算是现阶段必然的选择 。
这张图是数据中台建设过程中比较常见的一种架构图 , 如果不考虑实时流计算 , T+1和小时级别的计算是完全可以胜任的 , 实时流计算可以考虑引入flink , 窗口的概念要比sparkstream的批处理更高效 。
【论架构师的自我修养】技术无止境 , 我想 , 热爱才是最好的自我修养 。


    推荐阅读