当前位置:

首页 > 系统应用 > 我的百度十年|云原生时代架构师的十大核心能力(上)

我的百度十年|云原生时代架构师的十大核心能力(上)

本文目录

    ​自从2009年入职百度以来,已经经历了11年了,我自己从一线研发工程师开始,也逐步成长成为了带领复杂技术方向的技术负责人。10年多的工作历程,让我有幸经历了大范围的技术演变,特别是云计算和云原生技术从朦胧到普及,对工程师和架构师的要求也发生了不少变化。趁着自己入职11周年的日子,结合我自己在百度的

    ​自从2009年入职百度以来,已经经历了11年了,我自己从一线研发工程师开始,也逐步成长成为了带领复杂技术方向的技术负责人。10年多的工作历程,让我有幸经历了大范围的技术演变,特别是云计算和云原生技术从朦胧到普及,对工程师和架构师的要求也发生了不少变化。趁着自己入职11周年的日子,结合我自己在百度的成长历程,总结下我认为在云计算特别是云原生时代,对软件架构师的核心能力要求,希望帮助大家在通往架构师的路上少走弯路。

    初出茅庐 |从工程师变成子系统的技术骨干

    读书的时候并不了解搜索引擎,一直想着自己要从事一个有深度的技术方向,当时听说读到 Google 的三驾马车的论文非常厉害,赶紧拿过来拜读。但是受限于技术背景的缺失,对 MapReduce 的理念却完全不理解。后来无意中读了一本搜索引擎的入门书籍,一下子被搜索引擎的技术吸引住了。我发现搜索引擎同时涉及工程和算法两大方向,从底层的 Linux 内核到分布式系统,从简单的压缩算法到复杂的 pagerank ,是足够我学习一生的技术方向。于是抱着做搜索引擎的信念,开启了找工作的历程。随后有幸收到了百度和阿里的 offer,考虑到百度肯定是搜索领域的领头羊,放弃了即将成为"阿里云"的公司,选择了百度。

    刚入职的时候我被分配到搜索工程团队,第一个项目是基于 Hadoop 重构原来的伪分布式架构下的建库系统,来解决伪分布式架构的不可线性扩展的问题。当时百度的索引数据量增长非常快,急需 MapReduce 这样划时代意义的架构来解决。我也是这时候加入了这个团队,经过3年多的时间,我和小伙伴一起把建库系统从伪分布式架构,升级成 MapReduce 架构,再基于 MapReduce 架构优化成了流批结合的流式建库架构,建库的效率提升了数十倍以上。我自己也从一线工程师逐步成长成小方向的核心骨干。这个阶段我认为主要锻炼了下面3项核心能力:

    (一)软件工程的持续改进能力

    软件研发是团队作战,我们每个工程师都是研发环节的一员。在软件研发领域,决定团队研发效率的核心在于研发流程和协作的效率。互联网行业面临快速的变化,不确定性非常强,云原生时代也更倡导的 DevOps 理念和敏捷的研发模式来提升效率,快速试错,来应对不确定性。我们团队从2011年开始尝试从传统的瀑布模式转移到敏捷模式,并且选择 DevOps 工具来帮助我们实施敏捷流程。

    下面是我总结的几点核心能力:

    • 把握关键流程:需求分析,产品设计,软件研发,产品验收等关键环节,需要明确关键的角色为此负责,比如需求分析和产品设计必须经过产品负责人的审查,软件设计,编码和测试必须经过技术负责人和对应模块负责人的审查等等。

    • 使用工具自动化:为了提升效率,让大量重复性高的环节自动化,包括文档工具,需求卡片的自动化状态流转,选择 IDE 和代码审查工具,代码搜索,构建自动化测试流水线和基础设施等。将重复性高的工作自动化来提升效率,我认为这才是工程师文化的精髓。

    • 重视代码审查:代码是软件研发环节最核心的交付物,也是工程师之间需要协作的关键之一。作为架构师需要能够发现并且持续优化涉及代码审查的环节,这方面 Google 的代码审查实践给我们提供了非常好的参考。

    架构师或技术骨干,对研发流程的每个环节都得保持高度敏感,及时察觉问题并给出有效优化方案。常有人讨论架构师要不要写代码,其实不管写不写,对研发流程各环节保持敏感,才能更好地推动软件项目高效高质量落地。

    (二)业务需求分析和理解能力

    理解业务可以让架构师的架构设计更快的落地,也让架构师能够更为顺畅的和业务研发同学进行沟通和交流。所以架构师切忌不可脱离业务,尤其是业务线的架构师,要时刻保持对业务的一定程度的理解能力。我们作为搜索架构团队,就需要经常和算法团队交流,和他们讨论算法团队的痛点和他们的发展预期,提前在工程架构上做好准备工作。

    • 理解业务:技术的核心是为了让业务获得成功,架构是技术的核心之一,所以架构师一定要加强对业务的深入理解,了解业务的痛点,偏向业务的架构师甚至能够预测业务的发展趋势,提前在业务需要的技术方向进行适当的准备。比如当时我们决定迁移 MapReduce 架构完全是预测到已有架构完全无法承担未来的数据增长,需要提前布局。

    • 提炼需求:很多时候用户提出的需求未必是真正的需求。面对需求,要养成多思考的习惯。思考需求的场景是什么,思考需求背后需要解决的问题是什么,来帮助我们识别并解决真正的需求。作为架构团队,算法和运维同学经常给我们提需求,但是用户提给我们的需求其实是经过自己加工的,隐藏了背后的场景,把他自己设计的解决方案当做需求提给了我们,但是经过深入讨论场景之后,往往可以把握真实的需求,设计更好的方法。

    (三)技术折中和持续优化能力

    随时业务的发展和技术的演化,我相信任何一家公司或者任何一个代码模块,都有所谓的技术债务或者实现的不那么好的代码和架构。架构师需要能够识别那些真正的技术债务或者说技术折中,这就要求架构师能够把握技术债务的影响程度,让技术想着持续优化和改进方向演化。

    适当的时机意味着把握目标,解决技术债务不是目标是手段,把握好目标才能更有的放矢。比如高频迭代的模块,因为结构耦合严重影响了效率和新功能的发布,或者说质量低下,频繁发生问题等等。或者说架构师在一定程度上预测未来的发展趋势,让技术朝着更先进的方式演化。我经常遇到一种情况是看到多种技术选型,架构师总是想所谓的统一架构。并以此为目标,却忽略了技术背后的真正业务目标,不能真正解决问题。

    迭代式的发展可以有效降低技术风险,这个过程要注意避免两个极端。一个极端是动辄进行大规模的重构,一个项目耗时数人年或者更长时间上线。这种情况不仅项目风险极大,而且也大大减少了试错的机会。另一个极端是不断的添砖加瓦,只关注新功能的设计和研发节奏,而不做任何技术债务优化工作。这样时间久了之后,项目就会越发难以维护,周边类似项目不胜枚举。

    游刃有余 |从技术骨干成长为架构师

    到2012年左右,我对于分布式建库系统已经非常熟悉了,大大小小的项目可以说手到擒来。但是我自己还不是十分满意,一方面我觉得自己只了解建库环节,对搜索引擎的检索和抓取环节完全没接触过,另一方面很多技术方向是在前人的积累上做的,感觉自己原创的并且先进技术比较少,所以我就想参与比较有开创性的之前没有做过的技术方向。从2013年开始跟着师傅一起探索新的技术方向。我们观察到不管是离线服务还是在线服务,当时微服务框架和中间件的能力是非常初级的,开源领域也没有更为成熟的技术,决定自己研发一套先进的微服务系统,现在看起来就是 K8S + ServiceMesh + SpringBoot (C++版) 的组合体。这个技术方向让我自己一方面对 C++ 底层技术非常熟悉,也让我认识了当时微服务的思想和技术趋势。在整个技术方向的研发和业务运用过程中,我自己的能力也得到了更全方面的锻炼,从技术骨干逐步成为负责一个技术方向的架构师。这时候也正好是以 Spring 为核心的微服务技术的快速发展时期。

    (四)归纳抽象和技术泛化能力

    架构设计的本质我认为是抽象和泛化,我在设计微服务框架过程中,不管是对外接口,还是内部组件设计,经过了大量抽象思维模式的训练。抽象是将共性和差异化的东西分离出来,共性的部分抽象成独立的接口,功能模块或者服务。泛化是将技术运用到更多相似的场景,解决相似的问题。抽象和泛化是相辅相成的,需要架构师对问题进行反复深入的思考和对比,思考问题的背后最本质的东西,解决本质的问题。日常编写代码的时候,把握好代码设计的 SOLID 原则,在需要的时候对代码或者架构进行局部重构等过程就是锻炼抽象能力的好机会。有了代码级的抽象和泛化能力作为基础,可以进一步参与模块级或者子系统级的架构设计工作,更深入的锻炼架构设计能力。

    抽象和泛化能力的培养需要我们能认清事物的本质,对此我特别推荐大家锻炼结构化的思维模式。《金字塔原理》或者《系统化思维导论》等书籍是锻炼结构化思维模式的经典书籍,非常详细的阐述了结构化思维的原理和方法,强烈推荐大家阅读并且运用到日常工作中。

    历史是一面镜子,日常工作中及时的总结和复盘也非常有帮助。在每完成一些阶段性工作之后,对自己的工作过程和成果进行总结,可以站在更高的视角看待自己的工作过程,可以帮助自己发现更多的不足并加以改善。

    (五)项目管理和技术领导能力

    随着自身能力日益精进,我逐渐开始承担技术方向的负责人角色,同时负责多个项目。一方面,要引领整个研发团队实现多个项目的落地;另一方面,还需规划团队未来的发展方向。这就要求架构师不仅要具备项目管理能力,还要有一定程度的技术领导力,以便带领整个团队共同完成工作。项目管理的核心在于项目的工作拆解、研发工作的合理分配以及项目进度的有效追踪等。在项目执行过程中,还需根据具体问题,做出相应的技术判断和决策。例如,调整研发工作的优先级和依赖关系,重新分配人力,梳理和沟通上下游环节等。最终确保项目在规定时间内达成最优结果。

    技术领导力的核心我认为有三个要素:定义目标,结果导向,组织能力。首先是设定目标,目标代表团队的方向,合理的目标是团队成功的前提。其次是结果导向,团队最终为结果负责,不是为技术负责,真正创造了价值才是团队得以发展的根本。最后是组织能力,良好的组织能力是团队高效达成目标的保障。这包括充分理解团队成员的特点,做到知人善用;合理设计协作流程和组织结构,提升协同效率;识别核心岗位和关键人才,做到人岗匹配等。管理是一门学问,架构师需要学一些管理方面的知识,才能更好的带领团队达成结果。

    本文是云原生时代架构师的十大核心能力上篇,后续会推出文章下篇,请扫码关注下方公众号二维码持续关注我们!了解更多微服务、云原生技术的相关信息!

    本文内容来源于网友投稿,如有侵权请联系删除。
    作者最新文章
    系统应用 百度
    相关文章 更多
    win10升级新版本后取消开机密码失效怎么修复
    win10升级新版本后取消开机密码失效怎么修复

    Windows 10更新后开机突然要求输入密码?本文解析自动登录失效的真实原因,提供通过netplwiz重新保存凭据、关闭Windows Hello干扰及排查账户策略的完整步骤,助你恢复免密进入桌面。

    win10更新没下载完反复重试该怎么停止任务
    win10更新没下载完反复重试该怎么停止任务

    Windows 10更新下载失败反复重试怎么办?不要直接停用服务。本文教你通过设置页面暂停更新、启用按流量计费连接以及调整活动时间,安全地暂时停止下载任务并避免意外重启。

    win10怎么取消系统准备强制升级新版本
    win10怎么取消系统准备强制升级新版本

    面对Win10强制升级新版本的提示,本文解析家庭版与专业版的应对差异。介绍如何通过暂停更新、设置活动时间临时避让,以及利用组策略控制功能版本。强调Windows 10支持终止后的安全风险,避免使用高风险的禁用服务手段。

    win10组策略找不到更新选项该怎么处理
    win10组策略找不到更新选项该怎么处理

    Win10组策略编辑器中找不到Windows Update选项怎么办?本文分析家庭版与专业版的权限差异,厘清本地策略与域策略的区别,提供设置页替代方案及企业环境排查思路,避免盲目修改注册表或安装非官方补丁。

    win10取消开机密码会影响电脑里的文件安全吗?
    win10取消开机密码会影响电脑里的文件安全吗?

    很多人为了便捷选择取消 Win10 开机密码,这会导致文件丢失吗?本文详解取消密码后文件访问权限的变化、BitLocker 加密的有效性以及更安全的替代方案,帮助用户在便利与数据安全之间做出正确选择。

    win10弹出立即重启更新怎么延后这个操作
    win10弹出立即重启更新怎么延后这个操作

    Win10弹出立即重启更新会打断工作?本文介绍如何通过Windows Update页面安排重启时间、设置活动时段以及暂停后续更新,有效延后重启操作,保护未保存的工作成果。

    win10自动更新在夜间偷偷运行怎么限制
    win10自动更新在夜间偷偷运行怎么限制

    Win10晚上自动下载或重启怎么办?不要直接禁用服务。本文教你通过设置活动时间、安排指定重启时间及短期暂停更新,精准控制Windows Update行为,避免夜间网络占用和意外重启,同时保留系统安全性。

    win10本地账户取消开机密码有哪些简单方法
    win10本地账户取消开机密码有哪些简单方法

    想跳过Win10开机输入密码?本文详解本地账户清空密码、netplwiz自动登录及PIN设置的步骤与区别,同时提醒Microsoft账户和域策略下的限制与风险。

    win10更新重启倒计时怎么取消不让电脑重启
    win10更新重启倒计时怎么取消不让电脑重启

    面对Win10更新重启倒计时,如何通过设置界面取消或延后?本文详解活动时间、安排重启及暂停更新的位置与作用,帮助你在不影响工作的前提下管理系统重启。

    win10取消开机密码重启后还要输密码怎么办?
    win10取消开机密码重启后还要输密码怎么办?

    Win10设置取消密码后重启依然要求输入?这通常不是系统故障,而是自动登录配置错误或睡眠唤醒验证未关闭。本文教你区分本地账户与微软账户,正确设置netplwiz自动登录,并检查锁屏策略,彻底解决开机免密问题。

    查看更多
    精品专题 更多
    装机必备
    装机必备

    正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

    Windows
    Windows

    正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

    macOS软件
    macOS软件

    正软商城macOS软件专区,精选适用于Mac电脑的办公、设计、影音、效率、开发和系统工具,提供软件功能介绍、macOS兼容版本、正版授权及购买下载服务。

    Mac软件 更多
    photoshop
    photoshop
    Windows、macOS 、 iPad

    Photoshop 2026 是 Adobe 推出的专业图像处理与视觉设计软件,支持 Windows、macOS 和 iPad 等平台,广泛应用于摄影修图、电商设计、平面海报、数字绘画及视觉合成等创作场景。

    Blender
    Blender
    Windows、macOS 和 Linux

    Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。

    灵活计算器
    灵活计算器
    macOS/iOS/Android

    灵活计算器是一款笔记式算数应用,支持实时计算、动态关联和云端同步功能。记录、整理和输出之间的过渡会更自然,适合长期写作、做笔记或持续沉淀个人内容。

    WINDOWS 更多
    3dmax(3ds max)
    3dmax(3ds max)
    Windows

    Autodesk 3ds Max 是一款专业的三维建模、动画与渲染软件,广泛应用于建筑可视化、游戏开发、影视动画、广告设计和产品展示等领域。

    photoshop
    photoshop
    Windows、macOS 、 iPad

    Photoshop 2026 是 Adobe 推出的专业图像处理与视觉设计软件,支持 Windows、macOS 和 iPad 等平台,广泛应用于摄影修图、电商设计、平面海报、数字绘画及视觉合成等创作场景。

    Blender
    Blender
    Windows、macOS 和 Linux

    Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。