7

左耳朵耗子:你得知道,技术不是用来写 CRUD 的

 2 years ago
source link: https://www.techug.com/post/left-ear-mouse-you-know-technology-is-not-used-to-write-crud.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

左耳朵耗子:你得知道,技术不是用来写 CRUD 的

2

2021 年 8 月 14 日,周六,七夕。

这一天,对于意义非凡。当然,不是因为今天我脱单了,而是我听了一场直播。弹幕里,有人说,这场直播,堪称自己觉醒的分水岭。我不会说那么漂亮的话,但我确定,我的人生可能被改变了,我可能真的是被激发了。

这场直播的主角是知名技术专家左耳朵耗子和极客时间首席内容官小盖,他们用 2 个小时的时间,解了我心头太多的惑。听完之后,七夕那天,我没有再浮躁的刷抖音,而是静下心来,拿了本书,去星巴克待了一下午。

我知道,我现在焦虑、迷茫,对现在自己的工资、工作也不满意。但之前,我都是向外归因,而现在,我知道了,我是需要努力,把自己的刀磨好,像左耳朵耗子那样。

甚至,我也立了个大志,我以后技术厉害了,我也要去做更厉害的事情,去做创新的事情。而不是在现在这家外包公司,做增删改查,靠体力来挣钱。

这里,我也真心诚意推荐小盖(微信搜索:极客时间小盖)的视频号,真的太好了,给了我向上的力量。以后,我再也不吐槽了,我生逢其时,选对了计算机专业,在一个信息化革命的时代里,并且,我年纪也还不大,我还能去改变、创造一些事情。

下面是我整理的直播内容,没有整理全,把对我自己启发最大的内容拿出来了,希望也能帮到你吧,咱们一起努力。

Q:可以谈一谈云计算对于软件外包公司的影响吗?低代码平台对于程序员发展的影响?

A:云计算对于外包公司没有太多的影响,它更多影响的是一些运维的公司,像什么 DBA。因为云计算更多的做的是控制逻辑,而不是业务逻辑,你看没有一家云计算公司是帮你做业务。但是未来肯定要一点点上业务,业务的有些东西肯定还是可以标准化,但是不能够完全的标准化。

真正可能颠覆外包公司的会是低代码这样的东西,低代码对于一些中小企业是 OK 的,因为他们并不想要特别复杂,定制化的东西。他们只想要一个可以快速使用的,它可以通过一些低代码手段做自己的低配的一些定制化的东西。

低代码,我们可以这么理解,就是有些时候我想做定制,但是这个定制化呢,可能大家都有这样的需求,它算是一个比较通用的,或者可以被标准化的需求。这样的需求可以通过低代码的手段来解决。

我举个例子,比如说像 SQL 就是一种低代码的一种方式,它是一种只描述业务场景的语言,所以它根本不关心你后面的数据库到底是怎么去把这些数据捞出来的。它就是在描述,我要什么样的数据。

有了低代码平台之后,用户就可以像用 SQL 去操作一些东西。所以,一些不去思考的外包公司就可能会被颠覆掉。

如果你在做外包的话,我觉得还是需要去自己思考,如果不思考的话,颠覆你的往往不是这些云计算,也不是 C++,而是什么都可以颠覆你,因为你只是在按部就班的做事,用户让你做啥你就做啥,没去想,用户说我要一匹更快的马,你就去做,你去训马去了,而不是去做个汽车,我觉得这是外包公司最大的问题。因为他们没有任何的话语权,就是用户让他干啥他就干啥,而用户绝大多数时候都不知道自己想要什么的。

Q:也就是说低代码应该会去拿掉一部分增删改查的工作。

A:是的。低代码肯定会拿掉一些标准化的东西,拿掉一些 CRUD 的东西。但是我觉得我们技术人员可以去干更高级的事情,我想说的意思就是技术不是去做什么 CRUD 这些,技术是去创新,大家一定要理解。

这个逻辑不是说给外包公司的同学挺的,你知道,你在大公司里面也可能是做外包,不要觉得在大公司里面不是做外包,大公司里你可能是在给那些运营做外包,一样的道理,无非就是你是他养的人罢了,没什么差别。

但是真正技术你是要拿来做创新,你要去颠覆点什么东西,创造点什么东西,如果你是走在这条路上的话,你是不用担心的,不管是低代码也好,还是别的什么也好,都无所谓的,为什么?因为你在创造新的东西,创造价值。

Q:要去拿技术创新,势必要技术过硬。这里面就涉及到大家怎么学基础技术,但是,好像很多基础技术一时半会工作又用不到(弹幕问题)。

A:我觉得学 Linux 的一些基础一些知识会给你,为什么?因为有两种,也不需要特别底层,你要底层的话也是非常底层,你问题就是,

我觉得学这些基础知识,有两个好处。第一,你知道里面的原理,知道很多复杂的东西他是怎么运作的。你不用着急他有没有用,肯定有用。你还是要坚持,因为你慢慢会发现,很多东西都是想通的,到一个时间点,你就会有一通百通的感觉。

第二,你学这些基础知识以后,当出现了一些比较难解的问题,你这些知识马上就可以用上了。你要知道,这些难解的问题可以让你你跟别人快速拉开差距。逻辑很简单,你有基础和不懂基础完全是在两个层面上,当遇到了一些比较稀奇古怪的问题,不懂这些基础知识的他就在那瞎搞,这里试一下,那里试一下,就像我说的散弹枪,这里捅一下那里捅一下,也许捅对了,也许没捅对,没捅对还得接着捅。

举个例子,Linux 操作系统,你懂 PageCache,这在做性能优化的时候,你就能快速 get 到关键点。一个人比另外一个人强,强在哪些地方?就是因为我会用工具,而他在那使蛮力,就像从一加到一百,使蛮力人就真正去从一加到一百,会用工具的人,一个公式就做完了。学基础就是让你会用那些更好的工具。

Q:弹幕里有人问,能说一下你在比如说亚马逊和这样的大公司都学到了什么东西?

A:首先得说下,并不是在大公司里才能学到东西,其实用心观察的话,无论大公司,还是小公司,你都能学到东西。但是啊,你得用心观察,你得走心,你不用心的话,在哪里都一样。

大公司最大的问题是一个萝卜一个坑,你就只能干你负责的那一小部分,你就是他的一个零件,所以有的人就觉得可能在大公司里学不到很多东西。但是在小公司里,你可以做一个面的事情,这样也能学很多。当然,小公司也有他的特定问题,比如不够复杂。这是你要想清楚的。

话说回来,我在大公司里面,在亚马逊我学到是大公司里面重点你要学它整个组织运作的方式,整个体系化的管理,以及它是怎么调动那么多人来完成一件事的。还有它的一些思维方式,比如为什么它要做这个,而不是做那个,这是大公司跟小公司不一样的地方,因为大公司有资源。这是我能从大公司上面学到的一些知识,你看,都不是技术的。

当然,有的大公司管理方式也不对,你得辩证理性的看。大公司很多时候能够招聘到行业里的聪明人,你可以跟着他们学。就像你打羽毛球下象棋一样,你必须要找高手学。

总结下,大公司里面,我学到了三个事情,第一个是它是怎么组织这么多人做事情的。第二个是大公司是怎么挣钱的。第三个事情是大公司里面那些高手是怎么工作的。这是我觉得最有价值的东西。

具体来说,亚马逊组织整个公司都类似于我们常说的微服务架构。工程师的分工不再看技能,而是以职责分工,也就说是,我让你完成这个事,这个事得从前端一直干到数据库,干到运维,反正打包起来就是一个事,你干完其中的任何一个环节这个事都没完,你必须从头到尾全部都干完。

所以他在拆的时候,是竖着切的,就是比如说这是购物车,这是下单,这是发短信,这是地址。里面有一个团队把所有事情全部弄完,这个团队是两张披萨可以喂饱的团队,也就是 8 个人左右的样子。

在入职亚马逊之前,业界讨论的是瀑布模型,是敏捷之类,这些我都觉得有很多问题,直到看到亚马逊以后,我感叹说这种组织模式是真厉害。

它怎么挣钱?这里面我也学到了很多,具体不展开了。就一句话,它是用技术挣钱。所以你看他做了世界上第一个推荐系统,也做了世界上第一个云计算平台。

亚马逊的理念是,首先一个事情,你必须要把它简化,简化的话你就必须要抽象化。然后简化后才可以标准化,标准化的东西才能自动化,自动化的东西才能导致规模化。大概逻辑就是抽象化->简化->标准化->自动化->规模化。而简化、标准化、自动化这条线全部都是技术在干的事,你想想,第一次工业革命,第二次工业革命全都是在干这事。

也就是说,只有技术,才可能最终推动规模化,这是亚马逊信奉的理念。

Q:如果说我一直在小公司去不了大公司,怎么能够那样快速成长呢?

A:不去大公司也能成长,但是我觉得关键点是,你有没有跟那些聪明人在一块,并不是所有聪明人都在大公司里边,你的朋友圈会比公司更重要。有一句话是这么说的,你的收入是你最经常接触 5 个人的平均数(不是皓哥原话,是我补充的)。你跟什么样的人在一起决定了你怎么样成长。

有的小公司也不一定你不能成长,关键是你跟对了什么,有没有跟对人,他的格局够不够,大概是这样子。你看像我们公司,我们公司就是非常注重员工成长。每周都要让他们去做分享,我会留出大量的时间来让大家去学习,甚至要去写东西。因为我觉得写作是一种深度思考。你不是说学,学完东西以后,看完书就扔了,你还要写一写。你要去做个笔记写一写,因为写作是一种深度的思考。你才能够写作的过程当中你才会去认真去想,去总结,去归纳。

Q:接着刚才聊,你的创业方向是怎么聚焦到网关这个方向的?

A:用户来找我的东西无非就是那么几个事。第一个,我要高并发,第二个,我想开发速度更快。第三个,我用户量很大,我速度又很快,我必然不稳定,我需要一个高可用。

你看这里面的逻辑,你发布速度快,你就必须要用并行发布,那肯定会迭代到微服务了。你不用微服务的话,你就是单体,单体的话所有人就在等排期,这是不可能快的。有些公司所谓的快,其实是拿人堆,他并不是技术上,你可以很悠闲的快,他是那种很忙碌的快。

高并发、高配速、高可用,所有这些东西都会导向云原生、分布式、微服务,还有 Kubernetes。

我们再抽象一下,其实就是几个层面的问题,服务治理、流量治理、资源治理、数据治理。这四块东西会逐步变成企业的基础设施。你要解上层问题的话,你的基础设施必须要好。就像我怎么让车开到 180 公里每小时?你先得铺路去,先得把那个路给我搞好,路修不好,我车怎么可能开快,全是坑坑洼洼的土路。

服务治理,Spring Cloud、Eureka、Dubbo 这样的工具在做,资源治理是 Kubernetes 在做,唯有两个事情没有人做,一个是流量治理,一个是监控。所以一开始我们起步的时候,就是一个流量网关加监控。但监控,我看到,很多公司都是在比,谁家的监控指标多,但我想说,数据太多等于没有数据。你得把数据关联起来,数据和数据之间有了关系之后,那才叫信息。

我们不是做数据,我们是做信息。信息里面能找到因果关系,因为这个所以那个,有了这层逻辑以后,才能导出公式。所有做科学实验都是走这条路的,不断的做实验拿数据,在数据里边把它标注好,关联起来,找到信息,找到信息里面找因果关系,找到因果关系里面看看能不能推出一些公式,大概就是这么一个逻辑了。

所以我觉得今天很多监控系统都做错了,大家只是在拼命的采集数据,而不去思考这些数据到底里面有什么样的联系,我举个例子,我们做监控系统就是上面会有,我要说清楚这个 API,对外的一个 API,后面连着多少的 Service,这些 Service 运行在哪些 Resource 上,然后它又使用了那些数据库,哪些中间件,你如果说不清楚这些,这个关联数据的话,你是没办法做的,今天那些运维,因为它是按技能分工,运维我只关心我底层资源。我不关心你应用层,我底层的资源 OK 我就 OK 了。所以这就导致了什么?导致了我停这台机器,比如说我今天想来问你,我想下线这台机器,它到底影响哪些用户?在今天我可以告诉你,在今天中国,没有人,没有任何一家公司可以说清楚这个事情,包括 BAT。

国外可以说的清清楚楚,因为数据有管理,我就知道停这台机器到底它服务了前面那些 API,这些 API 有多少用户在用。因为我数据是关联了的,这就是我们为什么要走这条路。这套东西我们接下来都会开源,大家可以去关注。

GitHub 地址:https://github.com/megaease

PS:做流量网关,目前已经有一些解决方案了,但归纳看,就两种,一种是偏应用的(Spring Cloud),一种是偏控制面的(Nginx、HAProxy)。左耳朵耗子做的是偏应用的,具体大家可以去 GitHub 看看。

Q:为什么你们会选择用 Go 语言?

A:一个技术能不能发展起来,关键还要看三点。

  • 有没有一个比较好的社区。像 C、C++、Java、Python 和 JavaScript 的生态圈都是非常丰富和火爆的。尤其是有很多商业机构参与的社区那就更是人气爆棚了,比如 Linux 社区。

  • 有没有一个工业化的标准。像 C、C++、Java 这些编程语言都是有标准化组织的。尤其是 Java,它在架构上还搞出了像 J2EE 这样的企业级标准。

  • 有没有一个或多个杀手级应用。C、C++ 和 Java 的杀手级应用不用多说了,就算是对于 PHP 这样还不能算是一个优秀的编程语言来说,因为是 Linux 时代的第一个杀手级解决方案 LAMP 中的关键技术,所以,也发展起来了。

用这些标尺来衡量一下 Go 语言,我们可以清楚地看到:Go 语言容易上手;Go 语言解决了并发编程和底层应用开发效率的痛点;Go 语言有 Google 这个世界一流的技术公司在后面;Go 语言的杀手级应用是 Docker 容器,而容器的生态圈这几年可谓是发展繁荣,也是热点领域。所以,Go 语言的未来是不可限量的。

Q:我记得你总结说 Java 适合做业务层,Go 是中间件,Rust 是系统层。但是也有很多业务层是在用 Go?

A:Go 写业务层没问题,Node.js 也可以写业务层,我以前都是拿 C 语言写业务层。你拿着这个东西写什么都可以,但是当你的这个架构变得越来越大,越来越复杂,你里面一定要有一个框架。

早期的项目你用什么语言都行,但是从 1 到 10,你开始要去尊重两个东西,第一个你的开发速度要快。第二个你的稳定性,性能这些,这个时候可能像 Go 语言,或者是 Java、Ruby,Python 这些都还可以,但是如果 10 到 100,我估摸着只剩 Java(对于大部分公司而言)。

Q:谈一谈云原生的本质到底解决了什么核心问题?

A :Cloud Native 会颠覆掉 Cloud,今天的 Cloud 就是过去的 IBM。Cloud Native 是什么样的?我把这些技术拿出来给到企业,你自己学习自建。Cloud 是我把技术封闭起来,我帮你运维,另外一种我把技术给到企业,但是企业不一定 Hold 的住,所以需要像我们这样的团队和公司帮你降低技术门槛。放一张图你就知道了,从关注资源到关注应用。

本文文字及图片出自 InfoQ


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK