cover of episode Abstractions and implementations

Abstractions and implementations

2024/11/22
logo of podcast Ship It! Cloud, SRE, Platform Engineering

Ship It! Cloud, SRE, Platform Engineering

People
A
Avthar Suwathan
D
Dave Rosenthal
D
David Hsu
H
Hazel Weakly
Topics
Dave Rosenthal:Sentry 的指标系统从传统方式转变为与追踪连接的方式,以便获得更丰富的调试上下文。最初,指标数据是独立的,如同另一个数据源或数据库表格,虽然可以按时间排列和深入分析,但缺乏与追踪的关联。在尝试传统方式后,发现这种方式无法满足某些需求,因此改变了 API 和方法,转向构建与追踪连接的指标系统。这种方式需要在构建遥测数据时考虑其与代码结构的关系,但这是一种值得的权衡,因为在实际使用数据时,这种连接能够提供丰富的调试上下文,从而提高效率。

Deep Dive

Key Insights

Why is psychological safety important in tech environments?

Psychological safety allows teams to innovate, collaborate, and feel safe to express vulnerability and empathy, which leads to healthier and more effective work environments.

What is the concept of 'home-baked abstractions and store-bought implementations'?

Home-baked abstractions refer to custom-built solutions tailored to a company's specific needs, while store-bought implementations are off-the-shelf tools that can be integrated without reinventing the wheel.

Why does Hazel Weakly believe that the tech industry lacks a process of 'compactification'?

Hazel argues that the tech industry has stopped compactifying abstractions, meaning we don't build on top of existing layers effectively, leading to frequent rewrites and inefficiencies.

What is an example of a real abstraction in tech?

A real abstraction is a collective understanding built by a team or organization to solve specific problems, such as developing nuanced concepts around consistency models for distributed databases.

Why does Hazel suggest that companies should not rebuild existing tools from scratch?

Rebuilding tools like Kubernetes from scratch wastes time and isolates the company from the broader development community, hindering collaboration and understanding of the problem space.

How does the concept of personas apply to business and technology?

Personas help businesses understand their customer base better, allowing them to tailor products, services, and internal tools to specific groups, improving both customer experience and business outcomes.

Why is communication between technical and non-technical teams important in tech companies?

Effective communication ensures that technical solutions align with business needs, leading to better products, happier customers, and more efficient internal processes.

What role does internal tooling play in improving business efficiency?

Internal tooling can automate repetitive tasks, reduce workload for help desk teams, and improve overall productivity by making processes more efficient and understandable for non-technical staff.

Why does Hazel believe that the tech industry needs to focus more on cross-team collaboration?

Cross-team collaboration fosters better communication, shared understanding, and alignment between technical and business goals, ultimately leading to more effective and innovative solutions.

What does Hazel hope the tech industry will learn from economic shifts?

Hazel hopes that economic challenges will force the industry to focus on long-term business effectiveness rather than short-term technical achievements, encouraging better collaboration and innovation.

Chapters
This chapter explores the difficulties of building abstractions in engineering, focusing on the balance between home-baked solutions and store-bought implementations. The discussion touches upon the evolution of technology and the challenges of maintaining long-term sustainability in software development.
  • Challenges in building effective abstractions in engineering.
  • The trade-off between home-baked and store-bought implementations.
  • The impact of technological evolution on abstraction strategies.
  • The concept of "compactification" in software development.

Shownotes Transcript

<context>抽象与实现 Hazel Weakly 加入 Justin 和 Autumn,讨论何时构建抽象以及如何实现它们。他们还分享了来自技术会议的经验,并深入探讨了在技术环境中建立社区和心理安全的重要性。 加入讨论Changelog++ 会员在这一集节省了 9 分钟,因为他们让广告消失。今天就加入吧!赞助商:Sentry – 代码出错,修复更快。注册时使用代码 CHANGELOG 可获得团队计划 100 美元的折扣。不要只是观察。采取行动。Sentry 是唯一为开发者构建的应用监控平台,能够找到每个问题的根本原因。超过 100,000 个不断增长的团队使用 Sentry 快速发现问题。

自制抽象,商购实现

<raw_text>0 一。

这是与 Justin Garrison 和 Autumn Nash 的 Ship It。如果你喜欢这个节目,你会爱上 The Change Log。周一的软件新闻,周三的深度技术访谈,周五为你周末享受的精彩脱口秀。在你获取播客的地方搜索 The Change Log 就能找到它。Ship It 由 Fly.io 提供支持。五分钟或更短时间内启动你的应用。了解更多信息,请访问 Fly.io。♪

嘿,朋友们,我和我的朋友 Dave Rosenthal,Sentry 的首席技术官在一起。所以 Dave,我听你说过 trace connected。我知道 Sentry 的下一个大前沿是追踪这个指标平台。你是怎么到达那里的?开发者需要了解你对这个产品的思考吗?在我来到 Sentry 之前,Sentry 正在开发一个指标产品。

我们开始以更传统的方式构建这个指标产品,指标就像是有点不相干的。它们只是另一个数据源。它们在某个地方是另一个表格。是的,你可以按时间排列它们。当然,你可以稍微深入一点,但实际上它们并没有与那个追踪连接在一起。在尝试过后,我们从中退后了一大步,尝试与用户一起进行。

并意识到我们想要做的整整一类事情是无法通过这种不相干的指标来实现的。因此,我们改变了我们的 API,改变了我们的方式,现在我们正朝着构建一个不是这种遗留不相干指标系统的指标系统的非常明确的方向前进。它是追踪连接的。

这样我们在实际深入到一个真实问题时,可以获得那种丰富的调试上下文。你知道,这有权衡。这并不是那么简单,只是随意地在系统中记录随机指标。当你构建遥测时,你必须考虑这个指标实际上是如何与底层运行的代码结构相关联的。

但我们认为这是对用户的正确权衡,因为这就像是花一点额外的时间来弄清楚那个连接。但当你实际使用数据时,连接就在那儿。所以小投资,大回报。这只是一个例子,说明我们如何在内部做出决策,以使我们的用户能够成功地使用这个追踪连接的理念。非常酷。看到你如何思考这些项目的最终结果真是太好了。

看到你在幕后思考和迭代的方式真是太酷了。好的,朋友们,去 Sentry.io。使用我们的代码 CHANGELOG 获得团队计划 100 美元的折扣。这基本上是将近四个月的免费使用。Sentry.io。使用代码 CHANGELOG。不要使用其他任何东西。使用我们的代码。这对你有好处。再次强调,Sentry.io。

欢迎来到 Ship It,这是一档关于所有推送后内容的播客。我是你的主持人,Justin Garrison。和我在一起的总是非常嫉妒的 Autumn Nash。你好吗,Autumn?

这就是我们目前的关系。你只是把这一切都抖搂出来。就像,看看我的 3D 打印机,而你没有。哦,我刚和你生活中的英雄 Angie Jones 共进晚餐。不仅我给你发了张照片,而且我还坐在她旁边吃晚餐。Justin 就像在走来走去,别希望你拥有所有这些男性特权。是的。

我们一直在谈论这个。就像,好吧,你必须说这个辣味观点,因为你是白人男性。你可以逃脱。我也会发表很多辣味观点。我会利用这个特权。那种声音,我会借给其他人,如果可以的话。他用得太狠了,让我的生活变得复杂。所以对我来说,这真的很有趣,因为我在科技行业取得了相当不错的成功。

在我转型之前,然后我转型了。因此,我能够实时看到,人们确实对我尊重得少了。什么?但我记得我以前是如何被对待的。所以我会走到人们面前,我会说,像 2021 年那样对待我。哦,我的天,我们永远是最好的朋友。

非常感谢。今天我们节目中的嘉宾是 Hazel Weekly。Hazel,非常感谢你加入我们。这是对 Hazel 最好的介绍。好的。等等,但不仅如此,等等,等等。这是一个音频播客,所以你们看不到,但 Hazel 穿得非常漂亮。就像,她刚刚赢得了最佳 Ship It 着装奖。我们现在有了一个为音频播客打扮的比赛。这太棒了。

但你说这是,我的意思是,我们在 11 月 1 日录制这个节目。就在万圣节之后,我们所有人都倾向于打扮一下。我也打扮了。你也有一个服装,我忘了。我去旧金山打扮成骷髅,而旧金山的万圣节真是太惊人了。确实,确实惊人。

我没有准备好。但同样,11 月 1 日只是万圣节的一个偏差。所以如果你仍然在庆祝万圣节,那也没关系。我直接从万圣节过渡到圣诞节。所以然后,我在万圣节之后再过一段时间,然后,我就直接进入圣诞节。我假装感恩节不存在,这只是一天的假期。对我们这些州来说是免费的两天,对吧?所以,呃...

享受吧。所以我们知道你有一个好的雇主,给你两天假。这是真的。我想这并不是所有地方都有免费的两天。再说一次,你真是太特权了,Justin。

上周他还说,今天没有会议。我想,我们现在是在炫耀吗?就像,看看我在背景中没有丢失的 3D 打印机。我想谈谈去 All Things Open 的事情,那真是太棒了。Autumn,你刚刚去了 GitHub Universe。但我觉得,我的意思是,到这集播出时,那些活动已经过去一个月了。所以我们可能应该...但你们知道,GitHub Universe 是,像...

细节,像可黑客化的徽章,所有细节都很到位。此外,Dungeons and Dragons 为 Kubernetes 部署的,像前 10 个 OSOS,像

真是太棒了。我从未见过如此信息丰富,但又充满幽默的东西,笑话太多了。你几乎忘记了他们在告诉你一系列安全事项,因为它太好了。这就像是一次极客的宗教体验。真是太棒了。此外,我遇到了最酷的人。我做了一个演讲,虽然还不错。因为你知道,社交和在众人面前表现。我的演讲被拒绝了,因为我不够酷。

所以我无法开始。你绝对够酷。我们会成为最好的朋友。但我无法开始告诉你我对 GitHub Universe 的 FOMO 有多么强烈。我没想到我会对它有这么强烈的 FOMO。我想这可能是因为它无法容纳我们所有人同处一室。你能想象如果我们一起参加 GitHub Universe 吗?哦,我的天。那将是一次霓虹灯的爆炸,简直就是...

我们必须让这件事发生。所以你要为 Scale 提交一个演讲,这样我们就可以一起去,对吧?我不打算在镜头前承诺任何事情。只需将 GitHub Universe 的演讲复制粘贴到 Scale。砰。我要说的是,传闻我计划,

传闻。提交一个 CRP 给 Scale 和 SRE con。如果有人希望我在镜头前表现得搞笑,他们绝对应该让我提交一个 CRP,因为这会提高我记住的概率。

从 5% 提高到更多。我们,Hazel,我们希望你搞笑。你必须告诉我们关于你自己的事情,Hazel,尽管我觉得每个人都认识你。如果他们不认识你,那就有点可惜,但告诉我们关于你自己的事情。所以这真的很有趣。尤其是每个人都认识我的事情。这是我经历过的最奇怪的真实但不真实的事情,因为我觉得

很多酷的人以某种方式认识我。然后一大堆其他人也认识我。然后没有其他人真正认识我。就像我甚至不是一个微名人。我甚至不是一个小众微名人。我就像那个角落里奇怪的孩子,人们因为他们觉得有趣而和我交谈。他们被邀请参加一些派对。在两年内,他们会成为微名人。但我现在处于一个奇怪的暮光区。

但就我所做的事情和关于我的事情而言,我做基础设施的事情,计算机的东西。我破坏东西。但我认为我思考的许多最有趣的事情是社区建设,

弄清楚如何为人们建立可持续的结构,并创造方法来给予他们心理安全,以及帮助他们进行创新的方法,并弄清楚如何将整体性、自我实现和社区实现的概念融合成一个快乐的堆,以便一切都能良好运作。我的意思是

我曾经认为你必须在进行资本主义和拥有一个有效、健康、快乐的团队之间做出妥协。这是选择三者中的两个。然后我发现其实这并不是选择三者中的两个。你实际上可以选择四个中的三个。通过倾向于人性、脆弱性、同理心和整体性,你甚至可以获得更多。这就是我所做的事情。

好的,朋友们,我在 Timescale 的新朋友 Avthar Suwathan 这里。所以,Avthar,帮我理解 Timescale 到底是什么?所以,Timescale 是一家 Postgres 公司。我们在云端和开源生态系统中构建工具,使开发者能够更好地使用 Postgres。因此,使用它进行时间序列分析,以及最近的 AI 应用程序,如 RAG 和搜索代理。好的,如果我们的听众想要开始使用 Postgres,

Postgres、Timescale、AI 应用程序开发。你会告诉他们什么?好的路线图是什么?如果你是一名开发者,你要么被要求构建 AI 应用程序,要么对正在发生的所有创新感兴趣,想要自己参与。而好消息是,今天的任何开发者都可以成为 AI 工程师。

使用他们已经知道和喜爱的工具。因此,我们在 Timescale 所做的 PGAI 项目使开发者能够使用他们已经知道的工具和数据库构建 AI 应用程序,而这个数据库就是 Postgres。这意味着你实际上可以提升你的职业生涯,构建新的有趣项目,

增加更多技能,而无需学习一整套新的技术。而最棒的是,这一切都是开源的,PGAI 和 PG Vector Scale 都是开源的。你可以通过 Docker 在本地机器上启动它,按照 Timescale 博客上的教程之一,构建这些前沿应用程序,如 RAG 等,而无需学习 10 种不同的新技术,只需使用 Postgres 和你可能已经知道并熟悉的 SQL 查询语言。因此,是的,就这样。今天就开始吧。这是一个 PGAI 项目,只需访问任何 Timescale GitHub 仓库,无论是 PGAI 还是 PG Vector Scale,按照其中一个教程开始成为 AI 工程师,只需使用 Postgres。

好的,只需使用 Postgres,并且只需使用 Postgres 开始 AI 开发,构建 RAG、搜索、AI 代理,所有这些都是开源的。访问 timescale.com/AI,玩玩 PGAI,玩玩 PG Vector Scale,所有这些都在你的桌面上本地运行。它是开源的。再次强调,timescale.com/AI。

你已经在节目中出现过,至少在 Ship It 中,因为在上周的节目中,上周或两周前,我们在与 Preston 讨论 HackyDerm。你被多次提到,作为帮助迁移和运行基础设施的人,并以安全和可持续的方式设置它,以便于一个社区运行的项目,就像我们实际上有这个基础设施的呼叫,以建立一个更大的社区。因此,我觉得...

我们在节目中谈论过的内容正是你刚刚阐述的内容。这就像 Hazel 第一部分,而这是你实际在空中出现的第二部分。

这就是我们谈论你的程度。而这第二部分,Hazel,你在 LinkedIn 上用你的一篇关于抽象的帖子让我很感兴趣。我立刻就想,我想再谈谈这个。因此,今天我真正想关注的事情是从 LinkedIn 帖子开始,但后来变成了一篇博客文章。我们将在节目笔记中链接到它,你谈到了自制抽象和商购实现。是的。

我认为这只是一个关于平台工程和基础设施的迷人思考方式。你能多谈谈这个吗?是的,绝对可以。因此,我实际上最终让自己对这个话题感兴趣,这就是我所有博客文章的写作方式。我要么非常生气,礼貌地对互联网大喊,要么我让自己感兴趣,最终写下它。

这就是博客的用途。是的,对吧。我知道,我有 ADHD。你看不出来吧。但这是...所以自制应用和商购实现,这始于...

在 LinkedIn 上查看,John Koffler 实际上在 LinkedIn 上发布了一篇关于抽象的帖子,Jerry D. Majors 也在谈论它。这里有一个关于什么是好的抽象,什么不是好的抽象,如何思考这个问题的概念。因为在工程中,最简单的事情之一并不一定是构建错误的东西,而是构建一个实际上并不工作的东西。

在与其他东西集成和与未来集成方面。这是我们在物理世界中理所当然的事情。由于物理法则,你在物理世界中拥有的约束数量是极其有用的。就像如果你想让人们进入一栋建筑,建筑只需要没有某个地方的墙。你可以稍微调整一下,但你不能发明一个传送装置。你不能做一些奇怪的反向陷阱或数学,你有这么多的约束,使你能够构建这些深度可重用的抽象。

以至于你可以走进一家五金店,买到螺丝钉,它们可以与螺丝刀配合使用。你不需要,知道,你不需要一个定制的螺丝刀。你不需要这些东西。这部分是,数千年来将东西组合在一起的演变,但约束也非常有趣。当你去掉这些约束,进入数字世界时,你进入了一个非常迷人的领域,那就是,对我来说,这是我最喜欢的话题之一,那就是...

人类思维本身是什么,它看起来是什么,我们在其上构建并将其视为有形的东西?我们在构建我们的抽象塔时,它是思想、模式、我们社会的集体知识、制度知识。我们如何在这方面变得更好?

因为现在我们可能只能处理两层半的抽象,也许在好日子里,然后我们在两年内重写它。这既不可持续,也无效。

现在,我不知道我是否 100% 同意这一点,因为自从我进入技术行业以来,我们几乎一直在迁移平台。每隔几年,似乎就会有一种新的理解方式,然后我们就会说,哦,实际上,这是新的最佳实践,或者这是人们思考这些事情的新常见方式。因此,我们将基于这种新的共同思维重建一切,对吧?因为

即使在八年前,对于大多数人来说,还不是容器。现在我们有点像,哦,这个容器的东西相当稳固。我们将继续推进它。因此,在此之前是虚拟机,之前是物理服务器。

无论这些东西随着时间的推移是否相似,你都会觉得,哦,这只是一个更小的计算机,对吧?就像,差不多,但不完全是。但必须有这种关于系统如何工作的集体直觉。我们都必须稍微一起移动,以确保每个人都在同一页面上,像,哦,如果你在公司与公司之间或环境与环境之间移动,你仍然可以操作系统并理解一些抽象,仅仅因为对可用技术的集体知识,计算机能做什么,以及这些东西,对吧?是的,但我认为有两个不同的对比。看看一些仍在使用 COBOL 的公司。你知道我的意思吗?许多政府运行的技术是如此古老。新代码的方式和一切都是如此古老。因此,有些部分正在移动。我是说,遗留系统确实主导了世界。遗留系统是所有资金的来源,但也-

所以这似乎是-

有些东西经得起时间的考验,你确实可以陷入那种构建的领域中,你知道吗?就像我们在做太空节目时谈到的,如果你把某样东西放到太空中,你不会一直升级它。因此,我认为这是一个权衡。有些东西,你知道,你进入它时不会每隔几年就更换东西。它必须在第一次或前几次尝试时就做好。我是说,足够好和

以及升级之间是有区别的,对吧?因为就像,哦,那些 COBOL 系统,猜猜怎么着?它们根本不赚钱。这没关系。我们不需要现代化它,对吧?就像有很多大型机存在。所有这些东西仍然存在。我们不需要为此添加新的抽象,但为了推动事物向前发展并尝试新事物,我觉得每隔几年我们都会重新发明一些抽象。因此,这很有趣。

我希望我们能达到的一个点,因为你正好掉入了我的陷阱。因此,这里有两个平行的概念,我认为,或者说两个稍微不同的概念。

一个是这种观念,我认为 Justin 更加关注的是,抽象是我们如何接近一个问题,如何理解它,如何思考它。例如,我们有计算机,然后我们有虚拟机,它们是可移植的计算机,然后我们有容器,然后我们有 Wasm 中的函数,我们有不同类型的运行时和路由器。

我们认为的程序的定义一直在变化。我们还有另一面,关于,我们是否需要重建我们的基础设施?我们是否需要转变?我们是否需要几乎为了拆除而拆除?那是进步吗?我认为你实际上可以通过考虑实际的地质压缩过程来调和这两种观点。因此,通过压缩,你有泥土和

它是松散的。你可以移动它。你可以玩弄它。它就在那儿。然后随着时间的推移,泥土实际上被埋入地下,变得更加紧凑,变得更紧密,变得更加石化。最终它实际上会变成石头。因此,我在过去,特别是五到十年,甚至在过去的十五年中,在科技行业注意到的最大事情之一是,感觉上

作为一个行业,我们已经停止了这个压缩过程。因此,想象一下,例如,2002 年,线程甚至在 Linux 内核中都不是一回事。但现在我们有线程,我们有多进程,我们有容器 cgroups。Cgroups 版本 2,我们基本上有这种模式,适用于大多数计算,

你会构建一种抽象,其他层不会消失,但你压缩了作为程序员在构建事物时需要考虑的内容。因此,就像以前,TCP 和 UDP 以及所有这些其他东西,有人必须发明它们。你过去只是通过接口发送数据包。这就是你所做的。你只是随意发明自己的协议。

最终我们想出了 TCP,我们想出了 UDP,现在我们有 HTTPS 和所有这些东西,根本不再考虑它。然后你可以超越这一点,继续前进。我们有 WireGuard,这是我最喜欢的这种过程的例子之一。

就像,知道吗,10、20 年前,VPN 是一件大事。它很复杂。它很烦人。加密是一件大事。加密网络很复杂。现在你在操作系统中有这个功能,以至于它是符合人体工程学的,一切都可以在其上运行。现在你看到所有这些非常非常酷的东西出现。eBPF 也是同样的道理。但我们在更面向用户的方面。

没有我注意到的压缩过程。这使得构建我认为真正的抽象变得非常非常困难,甚至几乎不可能。深入探讨一下你所说的真正抽象的含义。正如我在博客文章中所谈到的,我认为真正的抽象是...

我们在语言中没有一个好的名称,但这是一个过程,你带着一群人,试图理解一个问题或一个领域解决方案空间的东西。

随着你们共同努力,你们围绕事物建立词汇,围绕不同的想法、不同的表达建立概念和理解,然后你们在这些基础上构建,随着这些迭代的理解层次发展你们的理解。你可以在语言发展中看到这一点,例如,拥有永久冰的社会的语言有很多关于雪的词。而在英语中,我们基本上只有雪,因为我们没有经历得如此深刻,以至于需要这种细微差别。但另一方面,在西雅图,我们有 20 个不同的关于雨的词。

这个想法是,如果我们采用这种语言概念,建立这些集体理解和层次的方式,我会将其引入技术概念。这就是我在思考抽象时的想法。这是一个涌现的过程。思考涌现行为和涌现理解。你如何

建立涌现事物发生的能力,然后你如何让它继续成长并有机地演变?通常这始于,像我们在其上构建某样东西的原因,基本上是便利因素,对吧?就像回到 COBOL,像 Grace Hopper,

在使 COBOL 成为一种语言方面的关键人物,作为一种通用语言,你可以编写,然后将其编译到不同的裸金属实现的不同汇编、不同芯片之下,对吧?就像 COBOL 是为人们做的第一种语言。人们说,实际上,我将放弃一些速度,

而不是在实际执行中编写汇编代码,但我在编写这种通用语言时获得了速度,这种语言可以在不同的芯片上移植。对。这就是它作为一种抽象存在的整个原因。我们正在再次这样做。就像,实际上,如果我可以写 Kubernetes,我可以在任何基础设施上部署它,无论它在哪里运行,来说明这是我的新抽象。我放弃了一些控制权。

我在底层添加了一些复杂性,以进行编译,做一些我可能不理解它是如何到达那里的事情,就像编译一个二进制文件。

但归根结底,我在于我可以更好、更快地消费那个接口,仅仅是说:这是我需要编写的唯一内容。我需要编写 Kubernetes,其他所有底层的东西都会在其他地方被解决。我认为这实际上只是试图弄清楚我们如何让人类互动,并与计算机进行交流的一种方式,对吧?这只是给计算机指令的不同方式,但

以一种你满足人类在不同可读性水平和不同与计算机沟通能力的方式。因为如果你想想,像 Java,

使得编写一次然后在不同系统上编译变得更容易。然后 COBOL,它是不同的芯片。我们正在接近。然后 Python 对某些人来说比其他语言更易读。它们只是与计算机进行交流以获得特定结果的不同方式。Java 的例子是一个非常好的例子,对吧?因为 COBOL 抽象了硬件。Java 抽象了操作系统。

就像,我们只是将这个新的虚拟机放在它运行的任何东西之上。与 Wasm 所做的事情相同。你有这个可移植的运行时。然后我将写入运行时,然后我可以在任何操作系统和任何硬件上部署它。

<context>抽象与实现 Hazel Weakly 加入 Justin 和 Autumn,讨论何时构建抽象以及如何实现它们。他们还分享了来自技术会议的经验,并深入探讨了在技术环境中建立社区和心理安全的重要性。 加入讨论Changelog++ 会员在这一集节省了 9 分钟,因为他们让广告消失。今天就加入吧!赞助商:Sentry – 代码出错,修复更快。注册时使用代码 CHANGELOG 可获得团队计划 100 美元的折扣。不要只是观察。采取行动。Sentry 是唯一为开发者构建的应用监控平台,能够找到每个问题的根本原因。超过 100,000 个不断增长的团队使用 Sentry 快速发现问题。

自制抽象,商店购买实现

<raw_text>0 以及它是如何运行的。再一次,这只是人们在说,我希望这样,我讨厌“一次编写,到处运行”的方法。这并不是 100% 真实,但这是很多事情的想法和目标。如果我们能写出那种无处不在的抽象,也许我们就可以停止实现它。你提到的一个非常有趣的例子,因为如果你看看 DevOps 的历史,那个词、概念、敏捷运动,

而敏捷运动实际上有一个起源故事,实际上是 Java 及其未能真正做到“一次编写,到处运行”的失败。其中一个故事是关于当时有一些开发者

在 Windows 机器上运行并编译和编写 Java 应用程序。他们采用瀑布式的方法,先编写整个应用程序,然后将其部署到生产环境中,结果生产环境非常搞笑。如果它是“一次编写,到处运行”,你在本地测试并且它工作,那么它应该就能正常工作。

结果发现它完全崩溃了,根本无法工作。他们基本上不得不把整个东西撕掉并重写。项目的领导者看着它说这是一个彻底的灾难。我们如何确保这种情况基本上不会再发生?

我们不能做到“一次编写,到处运行”,但不能在它像这样之前运行。所以抽象变得不一定是技术,而是过程。因此,抽象和演变在于,如果它是“一次编写,到处运行”,那很好。

但即使不是,关于可重用性和效率的更好想法实际上是你编写某些东西,并且你可以尽快确定它是否有效。

这就是敏捷运动开始的地方。这就是 DevOps 开始的地方。很多持续集成和持续开发的概念来自于认识到无法在实际操作的上下文中验证某些东西的根本缺陷。

那么这如何适用于你在博客文章中提到的商品化实现?因为你有这些抽象,你希望以对操作机器的人有用的方式进行自制或构建。然后你将以某种方式应用它,使用现成的组件并基本上将它们粘合在一起,对吧?就像供应商工程那样。是的。所以...

商店购买的实现和自制抽象之间的区别是,如果你把抽象视为对你、你的团队、你的组织、你的公司有用的东西,那么抽象实际上是关于这个公司如何在做公司事情方面变得更好的。

因此,最有效的抽象总是会与你的理解深度相关,以至于它们对其他人并不一定有意义。并不是说其他人不能使用它们,但它确实并不一定有意义。

例如,如果你在一家处理大量分布式数据库的公司工作,你可能会发展出很多关于一致性模型的细微概念。如果你是一家只有一个通用网站且没有做很多事情的公司,你可能没有很多关于一致性模型的抽象、概念和理解。

但你可能会有关于不同类型环境或 A-B 测试或对网站有用的事物的抽象。而实现之所以是商店购买的,是因为如果你在自己的实现之上构建抽象,你将会遇到非冒险综合症之类的事情。你将使整个公司与开发世界的其余部分隔离。

这实际上会在长期内对你造成更大的伤害。想象一下,如果每个人都看到 Kubernetes,然后说,哦,这是个好主意,但我只是要从头开始编写它,并在其上构建这些漂亮的小概念。你可以构建抽象,你可以构建概念和理解,但如果你重建 Kubernetes,那只是浪费时间。

这并没有实质性地帮助你更好地理解问题。实际上,它阻碍了你更好地理解问题,因为你无法在实现层面与其他人合作。我认为开源的一个被低估的方面不仅仅是你的团队在为每个人使用这些工具而工作,而是你有这样一个思维领域,像一个

声音板,从多个观点和在多个环境中运行的人员那里改进某些东西。因此,你获得了更多的迭代和验证,因为其他人以不同的方式使用这个产品。我是说,这如何适用于像...

Kafka 这样的东西,对吧?Kafka 有一种基本的使用方式或使用它的理由。然后每个人都以不同的方式使用它,对吧?每个人都在说,哦,我,你知道,每个人都在将消息从一个地方移动到另一个地方,并在中间有一些缓冲,但他们试图缓冲的实际内容或他们为什么要缓冲它,或者他们通过多少数据,或者他们需要多快通过,所有这些都取决于实现或用例。很多时候,这种情况

我几乎觉得,Hazel,你所说的是抽象不仅仅是技术部分。它是业务的过程。我们如何完成工作,组织是如何结构化的,这需要在抽象中融入,而不仅仅是技术实现,比如,这里有一个 WordPress 网站。我将使其尽可能容易部署。实际上,如果你有一个内部团队创建 WordPress 网站与外部客户创建 WordPress 网站,那么这个抽象需要看起来不同。

因为你在制作或使用抽象的人与创建和维护抽象的人之间的接口。

绝对如此。当你将其扩展到不仅仅是技术人员时,实施与抽象之间的区别变得更加重要,在某些情况下显而易见。以 WordPress 为例,你可以考虑,我们如何在内部思考

公司中的其他人如何知道他们需要一个?他们如何与开发人员交谈?他们如何与设计师交谈?开发人员如何与非开发人员讨论

我们需要从我们正在构建的东西中得到什么,我们甚至如何思考这一点?所以我们可以谈论图像和页面上的一堆图像,但这不是画廊,直到你称之为画廊。如果你谈论一个网站,它可以是一堆粘在一起的页面,但它是一个着陆页吗?

那是不同的。着陆页对你意味着什么?也许你有一个漏斗的概念。如果你经常写漏斗,你可能实际上会为 WordPress 创建一个适合你特定营销团队实现和你特定销售团队策略的漏斗构造。而这不会是普遍的。普遍的实现可能是,你知道,

哦,我们需要自定义类型,我们需要一个表单,我们需要,你知道,我们不会重建自己的表单软件。但漏斗看起来会因每个公司而异,并且必须如此。

好吧,我和我的好朋友 David Hsu 在 Retool 一起。非常喜欢 Retool。非常喜欢用 Retool 构建的内部工具。但是 David,并不是每个人都知道如何使用 Retool。你不能用 Retool 构建什么?是的,所以 Retool 非常适合构建任何类型的 CRUD 应用程序,你主要关心安全性、身份验证、授权等内部相关的事情。

如果你想构建,比如说,像 Google Maps 这样的东西,可能你不应该使用 Retool。你知道,去编写一些自定义的 JavaScript 或 React 来构建像 Google Maps 这样复杂的应用程序。但如果你想构建一个 CRUD 应用程序,Retool 对此非常好。我们特别看到的是,后端工程师在前端经验较少或对前端兴趣较少的情况下,真的会倾向于使用 Retool。

因为对于后端工程师,有时你只想获取一个正式类型的数据库,测试它是否有效。你想去测试那个 API,例如。在 Retool 中快速启动一个应用程序要快得多。他们试图学习 React,学习 Redux,学习状态管理,学习前端堆栈的所有不同部分,但这有点复杂。因此,我认为后端工程师特别倾向于使用 Retool 来构建快速的 CRUD 应用程序。

好的,朋友们,构建内部软件的最佳方式是访问 retool.com。你可以无缝连接数据库,使用优雅的组件构建,并在其上添加自己的代码。你可以加速乏味的任务,而无需学习 React,无需学习 Redux,释放出你需要的时间来处理最重要的事情。再次强调,retool.com。免费开始或预约演示。Retool.com。♪♪♪

每当我看到一个抽象被重建时,通常是因为有一个新的抽象消费者。一旦我们说出这一点,有人会来问,好吧,我们有这个 WordPress 抽象。我们在谁知道的其他基础设施抽象之上运行它,但然后业务来问,运行每个 WordPress 实例的成本是多少?

如果从一开始就没有考虑到这一点,你将会附加一些没有外部测量的东西。但如果你将 WordPress 的总成本构建到抽象中,无论你将其打包成什么样的 WordPress 网站,如果你将成本作为其中的一部分,那么你可以让这个其他消费者轻松地进来并与之集成,并说,哦,我知道这个的成本是多少,或者我们可以构建不同大小的 WordPress 抽象。

这些成本不同。然后我们可以更容易地将其直接与业务联系起来。通常,这来自于几乎像是对抽象的膨胀,并说,好吧,我们有一个非常酷的紧凑抽象,现在我们需要为这些不同的业务单元附加五个不同的东西,以便它们对他们有意义。你要么将这些引入抽象,要么为这些东西提供其他接口,以便它们在抽象之外工作。我认为这也是因为我们在技术上施加了很大的压力,但在与其他部门合作以使业务部分发生和能够进行流程和沟通方面却没有施加太多压力,因为很多时候我们想构建一些非常酷的东西,这很好。我们想要非常技术化。我认为开发人员就像是 Mac 和 Linux 之间的争论。我们想要 Linux,当你想要深入了解你想要添加到某些东西的所有不同内容时。有时你想要 Mac 或 Mac OS,因为你希望它更简单地使用,对吧?就像我们与那个更用户友好的新 Linux 发行版的整个对话一样,我们在谈论。是的。但如果我们不真正理解,如果开发人员没有被赋予选择,并且没有被放置在真正理解业务需求的地方,而业务需求又无法真正理解技术要求

构建你称之为什么,他们的工作如何与业务的其余部分联系在一起。是的,这似乎总是这种拉锯战,越是我们有这些不同的东西,像不同的抽象方式,有时抽象是好的,因为你只希望你的开发人员专注于他们需要知道的事情,但其他

其他时候它隐藏了太多,以至于他们甚至不知道自己在什么之上工作。但我觉得如果我们能改善沟通,沟通与技术同样重要,因为我们真正做的是与计算机沟通,对吧?但你还需要能够沟通并理解业务,以做出正确的技术决策。是的。因此,我想要一个具体的例子,很多公司在某种程度上使用的抽象,但他们会受益于以更统一的方式构建的抽象,那就是角色。因为你最终会拥有你的客户基础,你可以将客户基础分解为角色,但人们真的会将这些角色拿来构建一个真正的抽象吗?结果发现很多人并没有。因为如果你考虑一下角色的真正抽象可能是什么样子,

理论上,你可以将你的监控和 SLO 以及可观察性和所有这些东西进行细分,并能够与,比如说,你的产品团队合作,以根据体量、可靠性需求、支持团队以及产品成功团队按角色确定什么定价是合理的。然后人们可以开始讨论,哦,我们认为我们有这个角色,但结果发现这个角色有非常奇怪的行为,他们在这个领域的这个桶和这个桶中适合。我们有两个角色吗?

或者结果发现这个角色占我们收入的 10% 和流量的 90%。我们如何优化、限制或重新谈判?那是什么?这是一个错失的机会吗?这是一个过度投资吗?那是什么?你最终在现实中发现,人们在处理性能时,他们只是有点

在处理它,而没有将其与业务上下文联系起来。因此,他们可能会说,“哦,是的,这群人只是非常频繁地使用网站,随便吧。我们只会修复这个,让它工作,以便它不会崩溃。我们将在这里处理多租户,但我们只会以一种临时的方式处理它,以便应用程序的每个人的生活质量都还不错。”

但你无法将其传达给公司其他人。因此,你最终只会得到这些听起来毫无意义的 OKR,比如,我们将把第 99 百分位响应时间降低到这里。没有人关心。但如果你说类似于,哦,这个角色占收入的 80% 和体量的 20%。所以我们将专注于使他们的第 99 百分位性能非常非常顺畅。为此,我们将处理这种鲸鱼类型的角色

我们将通过限制策略来处理它。而这个其他角色实际上是一个非常小的角色,除了它有一个客户占据了该角色使用的 97%。所以那个客户将得到稍微少一点的待遇。我们将与产品团队和营销团队、销售团队进行沟通,弄清楚

我们需要对我们的定价策略做些什么来考虑这一点,因为这并不反映实际发生的事情。也许我们需要一个新的企业工具。这是一个信号,因为这很奇怪。但这远比你可以提出的任何仅仅是数字的 OKR 更具吸引力。这是非常真实的,因为有时你需要故事和背景,但背景。

在任何其他业务中,你不能不知道你的受众才能为他们制作出好的产品。这就是迭代和敏捷的整个意义。如果你能回去获取结果并找出什么有效,什么无效,你就能更好地服务于客户,同时也能更好地服务于业务。

我的意思是,但我们被数字和技术所蒙蔽,对吧?数字是简单的部分。我认为我们可以更好地为在业务中工作的人和我们的客户提供服务。如果我们采取将两者结合的方式,并记住这是一个业务,你知道,你需要像。 我确实觉得回顾我自己的经历,开发人员的薪水如此之高,他们被视为这种高水平。

被放在一边,如果你不是开发人员,就不允许打扰他们。这真的很难让他们回到现实中,告诉他们,我们都在一起为一个业务工作,我们需要共同努力,实现让客户满意的同一个目标,通过,您知道,改善业务所做的任何事情。基础设施和开发人员,你只是被简单的事情所蒙蔽,比如,那个数字真的很容易追逐。我可以将那个数字降低 10%。我知道这是

而你会说,实际上这并不重要。归根结底,让我们看看这实际上会做什么,对吧?因此,在某些时候,你必须回头看看更困难的事情,去与人交谈,那些是你的客户,或者那些是你与客户接口的人。那是公平的,对吧?我在帮助台工作了很长时间。如果我不必,但我仍然在帮助台工作。

对吧?即使,即使我的头衔改变,对吧?我仍然基本上是帮助台。我仍然在与人交谈。专家解决方案架构师实际上是非常高薪的帮助台。你知道我的意思吗?如果你仔细看看我们的工作,如果你做得对,你就是帮助台。因为如果你不知道你的客户需要什么,你不知道你是否满足了这些需求,什么是像一半的时间可观察性进入你的产品和客户,

总是问题。你知道,就像当你担心 DNS 是否是问题时,90% 的时间都是 DNS。它也可能是人们完全像工程师一样,有时人们会过于关注技术细节和技术的炫耀。我只是觉得,

沟通是如此重要。这也是一种文化现象。是的。我们在技术领域面临着一个巨大的问题,人们认为他们想被留在角落里,只做自己的事情。他们认为,技术更好。越技术化,越书呆子,越是所有这些非人类元素,越好。是的。

如果你能把我的大脑拔掉,放进一个蝙蝠里,那太棒了。试图让这些类型的人明白,如果你与非技术人员交谈,你实际上会在工作中表现得更好,而不是仅仅侮辱他们或只是看不起他们。

他们会说,什么?哦,不。即使角色之间的谈话方式,工程师如何谈论产品,解决方案架构师之间的谈话方式,总是这种荒谬的争斗,这使得合作变得更加困难。我喜欢阅读人们的个人简介,上面写着“我喜欢解决困难的问题”。我想,哦,你喜欢为你的家人修理打印机吗?就像是

解决困难问题的水平就像,去为你爸爸修理打印机,对吧?或者向那些在 Google 和手机流行之前出生的人解释任何技术。我孩子们如何拿起技术并直接使用它,而我试图教给年长的家庭成员的方式是痛苦的。

困难的问题。困难,困难的问题。我认为我们在这里达成的共识是,公司的每个人都是客户服务的一部分。每个人都是销售的一部分。在我看来,每个人也是招聘的一部分,对吧?这些是你在公司工作时无论如何都在做的三件事。无论你的头衔是什么,你都有这三件事。如果你没有做,或者你认为你没有做,你实际上是在做,但你做得很糟糕,实际上可能是在做你认为自己在做的事情的相反。你在做负面的事情。

这对公司和你自己都不好。但就像回到,是的,你是帮助台的一部分,你是,知道吗,成为帮助台的一部分有什么真的很棒?你有这种非常好的、非常精炼的直觉,知道什么可以自动化,什么不能自动化,你应该在这方面工作。做到这一点的最佳方式之一,最高杠杆的方式是为非技术人员构建内部工具。

没有什么比去说,我构建了这个东西。它很有意义。每个人都在说,为什么按钮在错误的位置?你会说,好的,什么?他们会说,好的,我根本不明白。实际上,我对此一无所知。你是什么意思?这基本上就像是获取什么?你必须让事情对人们来说是可以理解的。

但当你为非技术人员构建内部工具时,它最终成为一个巨大的,

影响点,巨大的影响点和巨大的投资回报,令人震惊的是人们在公司中不这样做。我还没有看到一家公司,有人独立地说,哦,我要为帮助台人员构建一个内部工具,因为他们在这种类型的问题上花费了 60% 的时间。我可以在一两个小时内构建这个,然后它将帮助很多人。你

你不能这样做,因为那是浪费时间。我说,不。所以在之前的公司,我们有 DNS 记录和 S3 存储桶。很多客户希望,您知道,进行 S3 存储桶直接传输。但这需要点击几个按钮,设置几个东西,并在某处触摸 AWS。因此,帮助台人员和解决方案人员会说,

你知道,去找 DevOps 类型的团队。这些团队被繁忙的工作压得喘不过气,基本上是在帮助帮助台。我说,这些团队已经不堪重负。他们没有时间去做这个。仅仅构建一些东西需要两天时间,你只需填写一堆表单,然后在后台执行一堆丑陋的 bash 脚本来创建所有这些东西。

没关系。它不需要很棒。我实际上从未获得构建该内容的许可。我说,这太愚蠢了。不让人们解决自己的问题的公司有其他问题,对吧?对。但在大多数公司中,根本没有激励以那种方式合作。如果有什么的话,实际上是有惩罚。确实如此。被积极惩罚。确实如此。这就像...

我觉得我只是想知道,像,既然我们处于这个奇怪的技术低迷期,你知道,什么时候人们会意识到你确实需要那些跨团队技能和那些...

沟通技能和流程技能,以使你成为更好的工程师。我希望零利率现象能给人们提供空间、时间和探索的便利,因为投资风险如此之低,以解决很多这些问题和社会问题,以及你知道,如何真正帮助业务,如何真正做所有这些事情并激励正确的结果。结果却产生了相反的效果。

因此,我的新希望是,在市场的鞭策下,我正在从零利率过渡到高利率,以及所有这些变化中,希望人们能够被迫超越,您知道,明天,超越他们的邻居,去思考,什么实际上使业务更有效?

超越我对自己应该做什么以及如何提供价值的先入之见。如果我能超越那个框框,选项是什么?可能性是什么?我希望我们作为一个行业能够达到这一点。如果没有,我愿意拖着他们,踢打着前行。拖着他们,Hazel。拖着他们。

我知道我们将来会有更多的对话,无论是面对面还是更多的播客。Hazel,人们可以在哪里找到你在线?你可以在 hazelweekly.me 找到我。你还可以在 Blue Sky、Mastodon 和 LinkedIn 上找到我。我相信你可以在其他地方找到我,但我并不推荐,因为那有点奇怪。你还可以在 Coffee With Me 找到他们,因为我们即将成为最好的朋友。我们将成为最好的朋友。这将是伟大的。

非常感谢你来参加这个节目。感谢大家的收听。如果你有其他想法,关于平台的想法,甚至我想听听人们如何跨越他们工作的边界和他们合作的团队,以增加商业价值或制作一种跨越这些障碍的抽象。我喜欢听这些故事。所以请与我们联系。是 [email protected]。我们将很快再次与大家交谈。此外,我们可以投票吗?

Hazel,像所有基础设施、平台和技术的总统,因为如果我们让他们,这将是一个更好的地方。我是说,我穿着一套非常干净的服装。看,我是你的第一票。我会为你做竞选活动。我们来吧。好的,非常感谢。

感谢您收听 Justin Garrison 和 Autumn Nash 的 Ship It。如果您还没有查看我们的 ChangeLog 新闻通讯,请为自己做个好事,前往 changelog.com/news。在那里,您会找到 29 个理由,是的,29 个理由,说明您应该订阅。我告诉你第 17 个理由。你可能真的会开始期待周一。听起来像是有人得了周一症。