技术保守主义如何帮助我们更快更好地扩展
已发表: 2022-07-21在 Intercom,我们专注于未来,我们正在采取大胆的步骤来实现这一目标。 但是当我们做出技术决定时,我们喜欢保守。
在实践中,技术上的保守看起来就像在我们的堆栈中重用现有技术和框架,或者推广久经考验的模式和解决方案。 我们重视这种熟悉程度,因为我们明白要解决的重要问题是那些能够带来客户或业务价值的问题。
我们可以专注于通过构建、发布和迭代解决方案来改进产品,而不是评估新技术并将时间花在已经解决的最终提供很少客户价值的运营问题上。
这是探索我们产品原理的系列文章中的第六篇。 在这里,Waheed 讨论了我们的工程原则“技术上保守”。
技术保守主义有许多长期利益
多年来的几个例子最好地说明了这一原则,展示了“技术上的保守”如何使我们能够快速扩展,同时最终不受限制。 我之前谈到了我们设计报告系统的经验,我们评估了在我们的堆栈中引入新数据存储的好处 - Redshift。 这意味着向我们的系统引入一种从未针对生产进行过测试的新型数据库。 此外,我们将不得不花费大量时间来积累运营知识、维护生产中的集群,以及处理大规模运营 Redshift 时无法预料的问题。
“我们利用现有的基础设施将流程从大约 6 个月缩短到仅 6 周”
最终,我们认为熟悉的数据存储更适合这项工作。 我们利用现有的 Elasticsearch 基础设施(为 Intercom 的大部分搜索功能提供支持)将流程从估计的六个月缩短到六周。
报告系统的初始版本是几年前发布的,因此我们有机会反思我们在这种情况下应用技术保守主义的一些长期利益:
我们更快地解决了客户的问题
使用我们现有的基础架构意味着我们可以避免花时间熟悉新的数据存储和处理所有不可避免的问题。 我们能够立即专注于客户需要解决的问题,并快速发货,将交货时间缩短了四个多月。
我们充分利用了团队的时间
我们的数据基础架构团队能够继续专注于一小部分熟悉的技术,而不是分散在多种技术上。 因此,他们有——并且仍然有——更多的时间来确保我们现有系统的健康并优化我们对每项技术的使用。
“因为我们的技术规模相对较小,所以会定期进行改进”
我们增加了持续改进的价值
由于我们的技术集相对较小,因此会定期进行改进。 该产品利用了这些技术,因此这些改进的影响在基于这些技术的所有内容中都更加复杂。 一个微小的改进可以在整个产品中产生巨大的、积极的连锁反应。
更多的团队有更多的投入
使用通用技术意味着更多的工程师和团队感到自信并有能力与他们合作。 我们已经看到整个公司的团队对报告产品进行了频繁的改进,而不仅仅是一个拥有系统特定部分的团队。
请记住,原则不是规则,而是指导方针
原则是一种令人难以置信的协调团队的方式,并为 Intercom 带来了巨大的成果。 但有时不跟随他们可能更有意义。 随着公司规模的扩大,一些团队成员可能会教条地遵循原则或错误地解释它们。 默认采用技术保守主义并不意味着我们永远不会引入新事物。
“技术保守主义意味着偏爱已经在你的堆栈中的技术——但前提是它是最好的选择”
技术保守主义意味着偏爱已经在你的堆栈中的技术——但前提是它是最好的选择。 在某些情况下,现有技术可能不适用。 如果它不能回答以下问题,我们可能会进一步研究并评估替代方案:
- 新工具能否让您的业务更有效地扩展?
- 它是否允许您的团队或组织更快地行动并更快地交付价值?
- 它是否解决了您现有工具无法解决的客户问题?
如果您对其中任何一个回答“是”,则可能值得考虑引入该新工具。 在 Intercom,最近有一个例子对所有三个问题都回答了“是”。

用户,或我们客户的客户,是对讲平台的核心。 随着我们的成长,我们的客户及其在对讲机中存储多少用户数据方面的需求也在增长。 大量的用户数据导致当时我们当前的用户数据存储出现扩展问题,为了确保我们能够继续支持现有和新客户,我们需要重新考虑当前的解决方案。 这最终导致我们在我们的堆栈中引入了一项新技术——这就是我们做出这个决定的方式。
我们的扩展速度超过了我们的数据存储所允许的速度
我们使用 MongoDB 大约有 5 年了,并且有运营上的伤痕来证明这一点。 我们已经优化了拥有和运行它的各个方面——从它运行的硬件类型,到我们在它上面运行的查询。 我们正处于收益递减点,并看到强烈的信号表明它在几年内将不再适用——甚至可能成为公司增长的瓶颈。
“经常思考你的业务发展轨迹,并问‘是什么让我们在这里,让我们到达那里? '。 这将使您对自己的选择更加积极主动,而不是被动反应”
这就是拥有强大的、具有前瞻性的技术战略的关键所在。 在这一点上,我们有足够的数据表明我们可能需要评估另一种方法并有跑道来做。 定期思考您的业务发展轨迹,并问“是什么让我们走到了这里,让我们到达了那里?”。 这将使您能够积极主动地做出选择,而不是被动地做出反应,并减轻因引入新技术而带来的未知风险。
我们的技术正在减慢我们的团队
在 Intercom,我们努力运行更少的软件。 在这种情况下,即使我们采用了一种未知的新技术,采用 DynamoDB 也让我们能够做到这一点。
以前,我们需要自行管理 MongoDB 的扩展以及平衡负载的代码——这对团队来说是一笔巨大的开销。 DynamoDB 的部分吸引力在于它由供应商 AWS 管理。 这意味着,虽然采用它有初始成本,但最终它会更便宜,并为团队节省大量时间和精力。
“对技术保守主义不教条,使我们能够以大量开销和有限的能力取代一项技术”
这似乎违反直觉,但引入新技术最终导致我们运行的软件更少。 不拘泥于技术保守主义使我们能够用一种操作上负担更轻、可扩展性更强的新技术来取代一项开销巨大且功能有限的技术。
我们对要求无情
我们有时会要求 MongoDB 执行复杂且昂贵的查询,这会危及可用性和更常见但不太复杂的查询的性能。 在评估 DynamoDB 时,我们意识到它不支持那些复杂且昂贵的查询,但在更简单和更常见的查询方面会好得多。
我们已经主要使用 Elasticsearch 来执行复杂的查询,迁移的需要迫使我们审查并更仔细地定义我们需要从用户存储中获得的功能,并最终使我们能够提高其主要用例的性能:检索单个用户记录。
“在考虑更换一项技术时,不要想当然地认为你会以同样的方式使用新技术”
在考虑更换一项技术时,不要想当然地认为您将以同样的方式使用新技术。 随着时间的推移,您的需求可能会发生很大变化,并且堆栈的其余部分将不断发展或成熟,从而使用例变得更加狭窄。 这将为采用更专注、更高效的技术或卸载一些由供应商管理的技术提供机会。
让您的原则为您的业务服务,而不是相反
技术保守主义是一个很好的工具,可以让您的团队专注于重要的事情——解决客户问题并提供价值,而无需花费宝贵的资源来回答已经回答的问题。
但是,过于固执地认为引入新技术是不好的,可能会阻止您利用可以帮助您运行更少软件并更轻松快速地扩展的技术。 从长远来看,以最适合您的团队和您的业务的方式应用此原则非常重要。
您有兴趣加入对讲机的工程团队吗? 了解更多信息并在此处查看我们的空缺职位。