learn-tech/专栏/超级访谈:对话毕玄/方向:技术演进,到底该怎么思考未来?.md
2024-10-16 11:00:45 +08:00

244 lines
21 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

因收到Google相关通知网站将会择期关闭。相关通知内容
方向:技术演进,到底该怎么思考未来?
你好,我是叶芊。-
 -
欢迎来到技术视野的研讨主题相信你一定非常期待毕竟在当年阿里技术牛人辈出的时候毕玄都是公认的技术方向感非常好做4个方向最少能命中3个的那种。-
 -
其实他自己也非常清楚这是他的个人优势,后来写离职复盘的时候他说:“我认为程序员的价值关键体现在作品上,作品里很重要的一点是对业务、技术趋势的判断,希望作为程序员的大伙,都能有机会打造一款世界级的作品,去为技术圈的发展做出贡献。”-
 -
那他到底是怎么培养技术敏锐度的?话不多说,我们开始今天的对谈。
 -
极客时间你对技术方向的判断力经过了很多项目的检验很多人公认你的方向感好。前面聊做决策的时候你也提到Leader需要赌未来带团队你也会团队成员讲清楚未来的方向和规划。这种判断力怎么形成的或者说有没有什么
毕玄:方法论?
极客时间:对,因为大家都喜欢,也都期待。
毕玄:但真的没有方法论。
极客时间:或者说技术敏感度?
毕玄:我们觉得真的很难培养。以前我们就想过怎么培养大家对一个事情的判断,但这是个走势问题,未来可难说了,谁也判断不了。我们后来总结最重要的可能是你要去想。
很多人其实从来没有想过未来的走向就像技术未来会走向什么一般觉得什么最火就是了。比如说从SOA到服务化、微服务到Service Mesh这是个历程我们以前经常问很多人你对这个历程怎么看每个阶段到底有什么区别
我问过很多人自己也被问得很尬因为回答不了。比如请问我们07年到09年做的服务化跟现在讲的微服务到底区别在哪没有人回答的出来那说明这根本是个瞎扯的词不就是概念嘛为了卖个概念忽悠人。包括Service Mesh很多人各有各的看法我觉得是什么看法不重要我们最怕的是没有看法的人但是你追问他为什么好如果回答因为很火就简直是瞎扯。
极客时间:既然没有培养技术方向判断力的方法论,那别人说一个技术是颠覆,判断他瞎扯和不是瞎扯,你的方法是什么?
毕玄:关键依旧是那一点,你觉得这个新东西的价值到底是什么?相比以前带来了什么变化?
极客时间:新东西的价值怎么分析呢?每个新东西出来,看它技术演进背后的那个推动力是不是一致的?
毕玄:对,以前在中间件的时候大家聊过这个话题,纯粹的技术演进到底怎么思考未来,以史为鉴是最重要的,但每个都不一样。
极客时间:是每个公司不一样,还是说每个技术的推动力不一样?可以举个具体例子说下吗?
毕玄:跟公司关系不大,主要看这个技术怎么往前走。
我们经常举例大数据因为大数据特别明显从Hadoop到Spark到Flink基本可以认为是三代。最关键的是你去看为什么大数据会有这三代的演进是因为它们都解决了用户对这玩意儿的核心诉求如果这个诉求归拢到一起还是一样的那就好办了。那用户对这几个大数据软件的核心诉求是什么
最核心的诉求是算更快。做一个大数据分析,想越快拿到结果越好,这就是我们的诉求。
Hadoop解决了什么问题Hadoop解决了0到1的问题以前没有一个大数据的东西Google发了一篇论文然后Hadoop做了一个开源版的实现有了0到1所以它一定会很成功。当然那个时候也不只有它却是它成功了这就有很多因素比如说最重要的是大厂的支持因为Hadoop是Facebook等等大力去推这是不一样的。
所以Hadoop解决能算出来但有点慢Spark解决的是我通过架构改造让你整个具备了算更快的能力Flink就更快因为已经实时化了。你看它的技术演进其实就是围绕了怎么解决掉客户的痛点然后通过技术层面的架构改造来完成这个事情当然这其中也有技术下面的基础设施成熟化的背景。
包括中间件,回顾一下这些年中间件的发展,过去为什么会有几次迭代?几次迭代解决的都是什么问题?那我们认为肯定都是解决了一个痛点。
痛点是要挖出来的,你围绕那个痛点去想,技术现在有没有可能把这个痛点往前推进一代产生很大的改变,你的新东西要解得更好,而不是小修小补。如果有,那我认,那就是技术真正的变革,而不是造了个概念。
很多人觉得自己做的是新一代,我们就问相比上一代,用户在这一代里碰到的什么问题,你帮他彻底解掉了?
极客时间:第一步想清楚用户的问题是什么,第二步想具体怎么去解这个问题,解决方案感觉也很难想。
毕玄技术演进本来就需要很多年因为技术的下一代是很难想出来的可能需要时机。数据库从关系到分布式走了多少年理论上方向提了无数年但直到现在才算是逐渐有了东西。现在数据库又在说要从OLTP、OLAP走向HTAP这是更新一代因为这也是用户的诉求他们在不断往前推进。
以前很多团队总纠结要不要硬造一个概念说我们现在做的是新一代,但是如果不到时机,其实没关系,你就维护着,只是很多人觉得维护没有什么价值。但你们造概念,公司更不会认,外面有可能被你忽悠。
极客时间:但很多公司都会强调,技术人员要具备一定的影响力。
毕玄:千万不要为了做影响力而做影响力。反正在我的评判里,这种我是绝对不会认的。我先只看你对公司业务的影响,然后如果你的方案确实在这个技术领域具备领先性,我才认为你有影响力。
因为影响力是很容易培养的,你有了结果,也有贡献,做的方法也具备引领性,说实话,剩下的只要炒作包装一下就可以,如果你的公司影响力足够大,你想成为什么都可以,但前提都是你自己得有足够的实力,等你做到了,影响力什么的都是很自然的过程。
 
极客时间:怎么判断是彻底解了还是小修小补呢?既然每个技术背后的推动力不一样,我们再看几个技术。比如说服务化、微服务,这个核心诉求到底是什么?开始阿里做服务化是为了去解什么问题?
毕玄:以前做服务化,核心要解的问题有两个。
第一,要解决系统的水平伸缩能力的问题,因为服务化了以后,说白了你的每个应用,每个系统,要承担的责任变少了,所以伸缩性就能变得很强。
第二个服务化的核心问题其实是研发协作的问题。以前100人开发一个系统大家都没有分工的我接了一个需求要改哪我就从头到尾全改这个时候有可能会出现冲突因为可能每个人都在改同一个地方大家合并代码的时候就非常痛苦效率很低。
服务化有分工了你就改这块儿他就改那块儿当然这也增加了协作成本但是它毕竟能让100人甚至上千人的研发团队可以并行做下去这一点也跟AWS说的Modern Application有关现代软件变得更复杂了做任何软件上来就是一帮人你必须考虑到一帮人协作的问题。
极客时间:“协作”这一点感觉比较少讲。
毕玄我们当年其实也没有想到是用来解这个问题的。这是Jeff Dean在斯坦福讲Google技术演进的时候说的Google做服务化的核心是为了具备千人以上的研发协作能力这看问题的角度就比我们强太多。
当时我们主要想的前一个,而且我们还是被逼的,因为不做服务化,就加不了机器,业务就崩盘了。
虽然当时100多人研发同一个系统已经很痛苦了但是我们没有想到服务化其实是用来解协作的是做完才发现解掉了后来看到Google说自己做服务化的核心目标是协作我们觉得哇你讲得有道理我们也加上了这一句
你看,服务化当年最重要是为了解这些问题,那微服务,请问跟服务化相比到底解了什么问题?
服务化现在留下的核心问题是粒度一个服务的粒度是主观的架构想切成多大粒度就多大粒度但这是有问题的还有服务里面比如说一个应用背后依赖了100个服务到底哪些服务是核心路径是必须依赖的现在都是靠人来控制的。
除非你说服务化的新一代可以解决这两个问题,那才是革命性的。但现在做不到,说什么微服务,他们就编吧,可能觉得服务化这么多年没发展也不大好,总得编个新的。
极客时间:微服务这个概念刚出来的时候不是很好理解,之前有人开玩笑解释为什么要做微服务,一般就是因为公司人有点冗余了。
毕玄:所以以前很多小公司问要不要做,我们都说你做个啥,一个系统多爽,开发效率最高,分布式会带来很多问题,包括对研发能力都是巨大的挑战。只是看起来技术不值得吹,觉得技术很烂什么的,当然这不重要,对业务来讲这都不重要。有些人就会这样,想挑战技术难度,觉得这种才叫复杂度,其实不是。
极客时间:但这种对技术难度的认知在技术团队里应该很普遍?
毕玄:很正常,因为技术的人都是有梦想的,梦想用一个很先进的技术去做一件事情。
但关键是在现今阶段,对公司来讲没有任何意义,所有公司不是不关注技术创新,只是出发点都是我到底面临什么问题。所以,这个问题除非你有一个创新的解法,可以比以前解得更好,那可以的,不能说你纯粹在外面看到一个很创新的玩意儿,一定要在公司用上,这就像拿着锤子找钉子。
而且很多人想用新语言、新框架,因为理论上来讲,这对他的职业路径可能更友好,否则他出去不好找工作。
 
 
极客时间:前面聊了大数据、服务化,现在最火的是云原生,这个技术方向我们也聊一聊,你觉得技术演进到云,本质是因为什么?云的下一步是什么?
毕玄CloudNative其实是个分布式无非是原来搭建分布式的方法现在变成基于云去搭建这是颠覆我是认的像新公司不需要投人了都是云帮你搞定。之前从单体到分布式的架构是个必然但现在分布式再走向哪里就说不清楚。
极客时间:容器呢?这个技术演进背后的推动力是什么?
毕玄:从虚拟化到容器化是革命性进步,这解决了什么问题?虚拟化无非解的问题就是怎么让一台机器能跑更多东西,容器化解的是我会跑更多。
极客时间:所以全是资源的利用?
毕玄所以我们认为容器就是个运行单位而这个运行单位不一定叫容器可能有个更小的运行单位。所以阿里后来在做轻量级容器等等方向的探索包括Serverless一定程度你可以认为就是一个更小粒度的运行单位这叫未来是一个技术趋势其实它一直都在解同一个问题只不过比前一代解得更好一点。
极客时间Serverless这个新方向可以多说一点吗对资源利用率这个问题它彻底解决的点是什么小厂完全不用买设备
毕玄肯定不用买了而且Serverless是真正的只有用了才要付钱。
比如我的业务现在没有请求量就不用付费请求量来了就只付那一点但现在我们是按买的机器付钱我可能现在根本没用但还是要付钱。如果哪家云厂商敢说能按请求量付钱那背后是不是Serverless我们都不在乎了能这么牛的话成本会省非常多那所有都颠覆了。
极客时间Serverless面临的核心难题是什么
毕玄主要是弹性的速度。比如Serverless我要拉起一个系统这不是几秒就能拉得起来的但对在线业务来讲你不可能点一下几秒都出不来大家能接受的都是几毫秒。所以Serverless都只是拿来做一些像计算这种后期的事情以前可能是一些离线的事情都是对响应时间可以忍受的。
Serverless也许是未来但还比较长远现在非常不成熟只是个补充方案就很尴尬。
极客时间:那一个技术,什么程度才算成熟?
毕玄所有的技术如果想颠覆必须进入核心业务。现在没有完全基于Serverless这种新理念来构造的在线业务的技术框架因为在线业务对稳定性是至高要求而且它完全不可预测。
尽管AWS推了无数年一直希望能推进到一个全新的技术框架阿里以前也想推因为Serverless对云厂商来讲并不是坏事如果真能做到大家肯定都来用了但很难从技术上来讲目前真的做不到这是最极致的弹性。
极客时间在资源利用这个方向除了Serverless有别的方案吗
毕玄就是混部现在混部到CPU层面了大数据和在线其实都是CPU层面的所以在离线的统一调度是这个阶段我们可以做的能把利用率提高的一个很落地的方案。
极客时间:调度的难题是什么?
毕玄之后最关键的是看GPU、FPGA这些能不能做好。
调度这个事其实阿里最早很多高管都有这个梦想博士成立阿里云的时候提出云的实际表现是统一存储和统一调度他认为云的核心是可以把所有的机器像一台机器用这就是统一调度。这个思想最早提出的应该是Google。
Google很早有篇文章叫《The Datacenter as a Computer》一个数据中心像一台机器这效率肯定是最高的事实上现在也还做不到。Borg的思路是把CPU尽可能当一台机器用但内存还不行比如A机器现在空了1GB机器有2G但你不能说用户现在有3G可以用这个真做不到因为内存有时延的问题在单机时延非常低一旦跨了网络但网络已经是光速了这是物理决定的就很难。
据说Google想探索这个方向因为Google近两年把这篇文章改了一下叫《The Datacenters as a computer》这简直颠覆了我们的想象。
极客时间Datacenters跨地的那种
毕玄:对,跨地数据中心像一台机器,我们连一个都没实现,你已经开始提下一个概念了,我们没法跟你玩。
 
极客时间:好,我们前面聊了如何分析技术演进的趋势,大概判断趋势之后,大家更关心的是在这波技术浪潮里自己能做什么。比方说现在所有人都知道云是趋势,有云了,基础设施会更集中在一批人手里。
毕玄:对,肯定是这样。
极客时间:那很多人在小厂,会担心自己之后的职业发展甚至岗位会受影响,怎么办?
毕玄纯基础技术像计算、存储、网络等等这种IaaS层面的基本会收拢到几大云厂商手里如果你要做这种技术没有别的选择加入这些厂商好了。
你看创业很少有人说我要创业做IaaS、要做计算不可能的这是需要更大规模效应的生意为什么小的云厂商越来越难因为只有你服务器规模到了多少万台的时候才可能实现盈利前期投入真的太大了。
但在IaaS之上应该会诞生很多垂直的PaaS也是做技术的但这些反而不在大厂手上全都在一些创业公司手上这其实就是美国的现状。然后PaaS更上面是做业务的。所以看你自己想怎么走去相应的公司就好了。真正喜欢做计算、存储、网络的同学其实很少的。
极客时间:很少是为什么?
毕玄因为计算、存储、网络是个非常非常专业的领域都是做虚拟化、计算资源这些东西多数人根本就没有触及到这个领域做的最多是PaaS比如中间件、框架这些而且未来外面会有好多家PaaS空间是会越来越大的不会越来越小。
极客时间就现在的行业发展进度看基础技术逐步商业化了很多人创业做PaaS包括阿里很多也都拿出来卖了这个改变是行业的进步吗对其它公司对其他团队同学也可以参考
毕玄:对团队同学的话,我觉得很难说。
极客时间:为什么,这样不是能更好地专注研究技术了吗?毕竟商业化了,团队的业务目标就是要不断追求自己产品的技术竞争力。
毕玄:我知道,但是对研发线的人来讲,很难说这是一件好事还是坏事。
好事确实是你做的东西不仅仅这家公司用了,还被全社会更多公司用了,成就感肯定更强。
但在技术层面来讲,商业化之后,很难说大家会觉得我技术上有多大更进一步的空间,因为外部更多是复杂性,而不是纯粹的技术难度问题,是你要支持的业务类型越来越多了。
极客时间:不是说技术要更先进?
毕玄:复杂性也算一种先进,只是大家怎么看待而已。
很多人觉得我支撑更高的并发量用了更低的成本这才叫追求了技术所以很多公司做晋升的时候业务技术的人会觉得自己没法跟基础技术的人PK大家都觉得基础技术在解基础问题复杂度很高我们后来说还是得区分一下业务复杂度也是难度。
做业务技术的人,他不是没有技术难度,他的技术难度在业务复杂度,能不能抽象成一个非常简单的东西,去支撑非常复杂的业务。就像阿里,阿里的营销够复杂了吧,每年双十一被吐槽最多的就是营销,但你想,写营销系统代码的人是不是更痛苦?做这套系统的人,他能不能做一个很好的抽象去支撑这么复杂的营销玩法,这也不是一般人做得到的,这也叫技术难度。
技术难度,不能光定义成纯技术侧的东西,其实还有很多是复杂性问题、抽象问题。当然每个技术人爱好不一样,有些会觉得我不喜欢面对这种,他喜欢解决技术问题,而业务是抽象,抽象是很复杂的东西。
 
水友讨论区
好,到这里今天关于技术演进方向的主题讨论就结束了。其实说实话,在和毕玄聊之前,我非常期待能不能收获一个类似灵丹妙药的方法论,虽然都说没有银弹,但人嘛总是会有幻想,今天聊完,失望多少有一点,但惊喜也意外很大。
失望是因为他说对一个事情走势的判断,最重要的可能是你要去想。这句话非常正确,但是完全没有用。
但意外惊喜是在追问的过程中,他也举例详细分享了自己的思路:所有的技术演进,其实都是围绕着用户对这个产品的核心诉求展开的,通过技术层面的架构改造,来解决用户当下的痛点。这个痛点,是你要挖出来的,你去想现在技术有没有可能把这个痛点往前推进一代,给用户提供新价值,这样才能产生很大的改变。
这个出发点很朴素但也很值得参考,你可以借鉴他的思路,找一个领域的技术演进过程分析一下,看看是否对自己有启发。
欢迎在评论区留言,也欢迎分享你自己的技术方向分析思路。下一讲我们会聊一聊带团队成事的话题,下一讲见。
拓展阅读
1. 毕玄之前就喜欢搞预测,在年末写过几篇预测文(虽然很多后来被打脸),如果感兴趣可以围观:
来一起预测2019、预测下云、AI在2018将会发生什么变化、2017年“工程时代”即将翻篇迎接”科技时代”、2014年预测行业变化对技术岗位的冲击、回顾2007展望2008
2. 毕玄非常关注对方向的判断关于IaaS、PaaS、SaaS和云写了几篇文章
IT从业者都应关注的软件行业的变化、回顾过去看IaaS的Next、回顾过去看应用PaaS的Next、云计算是新瓶装旧酒吗
3. 关于服务化毕玄之前也写过几篇文章,你可以从中看出他想法的变化:
2015年服务化你真的需要吗、2017年大部分公司并不需要微服务、2019年Serverless云时代的软件架构核心思想、服务化的过去、现在和未来、2022年应用架构演进到头了吗