自从2009年入职百度以来,已经经历了11年了,我自己从一线研发工程师开始,也逐步成长成为了带领复杂技术方向的技术负责人。10年多的工作历程,让我有幸经历了大范围的技术演变,特别是云计算和云原生技术从朦胧到普及,对工程师和架构师的要求也发生了不少变化。趁着自己入职11周年的日子,结合我自己在百度的成长历程,总结下我认为在云计算特别是云原生时代,对软件架构师的核心能力要求,希望帮助大家在通往架构师的路上少走弯路。
初出茅庐 | 从工程师变成子系统的技术骨干
读书的时候并不了解搜索引擎,一直想着自己要从事一个有深度的技术方向,当时听说读到 Google 的三驾马车的论文非常厉害,赶紧拿过来拜读。但是受限于技术背景的缺失,对 MapReduce 的理念却完全不理解。后来无意中读了一本搜索引擎的入门书籍,一下子被搜索引擎的技术吸引住了。我发现搜索引擎同时涉及工程和算法两大方向,从底层的 Linux 内核到分布式系统,从简单的压缩算法到复杂的 pagerank ,是足够我学习一生的技术方向。于是抱着做搜索引擎的信念,开启了找工作的历程。随后有幸收到了百度和阿里的 offer,考虑到百度肯定是搜索领域的领头羊,放弃了即将成为"阿里云"的公司,选择了百度。
刚入职的时候我被分配到搜索工程团队,第一个项目是基于 Hadoop 重构原来的伪分布式架构下的建库系统,来解决伪分布式架构的不可线性扩展的问题。当时百度的索引数据量增长非常快,急需 MapReduce 这样划时代意义的架构来解决。我也是这时候加入了这个团队,经过3年多的时间,我和小伙伴一起把建库系统从伪分布式架构,升级成 MapReduce 架构,再基于 MapReduce 架构优化成了流批结合的流式建库架构,建库的效率提升了数十倍以上。我自己也从一线工程师逐步成长成小方向的核心骨干。这个阶段我认为主要锻炼了下面3项核心能力:
(一)软件工程的持续改进能力
软件研发是团队作战,我们每个工程师都是研发环节的一员。在软件研发领域,决定团