技術的保守主義が私たちのスケーリングをより速く、より良くするのにどのように役立つか
公開: 2022-07-21インターコムでは、未来に焦点を当て、そこに到達するために大胆な措置を講じています。 しかし、技術的な決定を下すときは、保守的になりたいと思っています。
実際には、技術的に保守的であることは、スタック内の既存のテクノロジーとフレームワークを再利用すること、または試行錯誤されたパターンとソリューションを促進することのように見えます。 解決すべき重要な問題は、顧客またはビジネスの価値を提供するものであると理解しているため、この親しみやすさを高く評価しています。
新しいテクノロジーを評価し、最終的に顧客価値をほとんど提供しないすでに解決された運用上の問題に時間を費やす代わりに、ソリューションを構築、リリース、および反復することによって製品の改善に集中できます。
これは、当社の製品原理を探求するシリーズの6番目の投稿です。 ここで、Waheedは、「技術的に保守的であること」というエンジニアリングの原則について説明します。
技術的保守主義には多くの長期的なメリットがあります
この原則は、何年にもわたるいくつかの例によって最もよく示され、 「技術的に保守的である」ことにより、最終的に制約となることなく、迅速に拡張できることを示しています。 以前、レポートシステムを設計した経験について話しました。そこでは、スタックに新しいデータストアであるRedshiftを導入することの利点を評価しました。 これは、本番環境に対してテストされたことのない新しいタイプのデータベースをシステムに導入することを意味していました。 さらに、運用知識の構築、本番環境でのクラスターの維持、およびRedshiftの大規模な運用による予期しない問題への対処に多くの時間を費やす必要がありました。
「既存のインフラストラクチャを活用して、プロセスを推定6か月からわずか6週間に短縮しました。」
最終的には、使い慣れたデータストアの方が仕事に適していると判断しました。 インターコムの検索機能の大部分を強化する既存のElasticsearchインフラストラクチャを活用して、プロセスを推定6か月からわずか6週間に短縮しました。
レポートシステムの最初のバージョンは数年前に出荷されたので、その場合の技術的保守主義の適用の長期的な利点のいくつかについて考える機会がありました。
お客様の問題をより早く解決しました
既存のインフラストラクチャを使用することで、新しいデータストアに慣れ、避けられない問題に対処するために時間を費やす必要がなくなりました。 お客様の解決すべき問題に即座に集中し、迅速に発送することができ、納期を4か月以上短縮しました。
チームの時間を最大限に活用しました
私たちのデータインフラストラクチャチームは、複数のテクノロジーに分散するのではなく、使い慣れた小さなテクノロジーのセットに引き続き集中することができました。 その結果、既存のシステムの正常性を確保し、各テクノロジーの使用を最適化するための時間がありました。
「当社の一連のテクノロジーは比較的小さいため、定期的に改善が行われます」
継続的な改善の価値を高めました
当社の一連のテクノロジーは比較的小さいため、定期的に改善が行われます。 製品はこれらのテクノロジーを活用しているため、これらの改善の影響は、それらの上に構築されたすべてのものに複合されます。 わずかな改善で、製品全体に大きなプラスの波及効果をもたらすことができます。
より多くのチームがより多くのインプットを持っています
共通のテクノロジーを使用するということは、より多くのエンジニアとチームが自信を持って作業できるようになることを意味します。 システムの特定の部分を所有する1つのチームだけでなく、会社全体のチームからレポート製品が頻繁に改善されています。
原則はルールではなく、ガイドラインであることを忘れないでください
原則は、チームを調整するための素晴らしい方法であり、インターコムに素晴らしい結果をもたらしました。 しかし、それらに従わない方が理にかなっている場合があります。 会社の規模が大きくなると、一部のチームメンバーが原則に独断的に従うか、誤って解釈するリスクがあります。 技術的保守主義をデフォルトにすることは、私たちが決して新しいものを導入しないことを意味するべきではありません。
「技術的保守主義とは、すでにスタックにある技術を支持することを意味しますが、それが最良の選択肢である場合に限ります」
技術的保守主義とは、すでにスタックにあるテクノロジーを支持することを意味しますが、それが最良の選択肢である場合に限ります。 状況によっては、既存のテクノロジーが適切でない場合があります。 次の質問に答えられない場合は、さらに調査して代替案を評価する可能性があります。
- 新しいツールを使用すると、ビジネスをより効果的に拡張できますか?
- それはあなたのチームや組織がより速く動き、より速く価値を提供することを可能にしますか?
- 既存のツールでは解決できなかった顧客の問題を解決しますか?
これらのいずれかに「はい」と答えた場合は、その新しいツールの導入を検討する価値があるかもしれません。 インターコムでは、3つの質問すべてに「はい」と答えた最近の例がありました。

ユーザー、またはお客様のお客様は、インターコムプラットフォームの中核です。 私たちが成長するにつれて、インターコム内に保存するユーザーデータの量に関する顧客とそのニーズも成長します。 膨大な量のユーザーデータが、当時の現在のユーザーデータストアのスケーリングの問題を引き起こし、現在のソリューションを再考する必要のある既存および新規の顧客を引き続きサポートできるようにしました。 その結果、最終的にスタックに新しいテクノロジーを導入することになりました。これが、この決定に至った経緯です。
データストアで許可されるよりも速くスケーリングしていました
私たちはMongoDBを約5年間使用しており、それを証明するための運用上の傷がありました。 実行したハードウェアの種類から、実行したクエリまで、所有と実行のあらゆる側面を最適化しました。 私たちは収穫逓減の段階にあり、2、3年以内に目的に適合しなくなり、会社の成長のボトルネックになる可能性があるという強いシグナルを目にしていました。
「あなたのビジネスの軌道について定期的に考えて、 「何が私たちをここに連れて行ったのか、私たちをそこに連れて行ってくれるのか」と尋ねてください。 '。 これにより、事後対応ではなく、積極的に選択できるようになります。」
ここで、強力で前向きな技術戦略を立てることが重要になります。 この時点で、別のアプローチを評価する必要があるかもしれないことを示唆するのに十分なデータがあり、それを行うための滑走路がありました。 定期的にあなたのビジネスの軌跡を考え、「何が私たちをここに連れて行ったのか、私たちをそこに連れて行ったのか」と尋ねます。 これにより、事後対応ではなく積極的に選択を行うことができ、新しいテクノロジーを導入する際の未知の未知の問題に関するリスクを軽減できます。
私たちのテクノロジーは私たちのチームを遅くしていました
インターコムでは、実行するソフトウェアの数を減らすよう努めています。 この場合、未知数の新しいテクノロジーを採用していましたが、DynamoDBを採用することでそれが可能になりました。
以前は、負荷を分散するためのコードとともにMongoDBのスケーリングを自己管理していました。これは、チームにとって大きなオーバーヘッドです。 DynamoDBの魅力の一部は、ベンダーであるAWSによって管理されていたことです。 つまり、採用には初期費用がかかりましたが、最終的には安価になり、チームの時間と労力を大幅に節約できます。
「技術的な保守主義について独断的ではないため、技術を大きなオーバーヘッドと限られた機能に置き換えることができました」
直感に反するように思えるかもしれませんが、新しいテクノロジーを導入すると、最終的には実行するソフトウェアが少なくなりました。 技術的な保守性について独断的ではないため、オーバーヘッドが大きく機能が制限されているテクノロジーを、運用上の負担が少なく、よりスケーラブルな新しいテクノロジーに置き換えることができました。
私たちは要件について冷酷でした
場合によっては、MongoDBに複雑で費用のかかるクエリを実行する必要があり、可用性と、より一般的ではあるがそれほど複雑ではないクエリのパフォーマンスが低下します。 DynamoDBを評価したところ、これらの複雑で高価なクエリはサポートされていませんが、より単純で一般的なクエリの方がはるかに優れていることがわかりました。
私たちはすでにElasticsearchを使用して複雑なクエリを実行していましたが、移行の必要性から、ユーザーストアに必要な機能を確認してより慎重に定義する必要があり、最終的には主なユースケースであるシングルユーザーレコードの取得のパフォーマンスを向上させることができました。
「テクノロジーの置き換えを考えるとき、新しいテクノロジーを同じように使用することを当然のことと思ってはいけません」
テクノロジーの置き換えを検討するときは、新しいテクノロジーを同じように使用することを当然のことと思ってはいけません。 要件は時間の経過とともに大幅に変更される可能性があり、スタックの残りの部分は進化または成熟して、ユースケースがより狭くなります。 これにより、より焦点を絞ったパフォーマンスの高いテクノロジーを採用したり、ベンダーが管理する一部のテクノロジーをオフロードしたりする機会が開かれます。
あなたの原則をあなたのビジネスのために機能させる、その逆ではない
技術的保守主義は、チームが重要なことに集中できるようにするための優れたツールです。つまり、すでに回答済みの質問への回答に貴重なリソースを費やすことなく、顧客の問題を解決し、価値を提供します。
ただし、新しいテクノロジーの導入が悪いという信念に固執しすぎると、実行するソフトウェアの数を減らし、より簡単かつ迅速に拡張できるテクノロジーを利用できなくなる可能性があります。 長期的には、チームとビジネスに最適な方法でこの原則を適用することが重要です。
インターコムのエンジニアリングチームに参加することに興味がありますか? 詳細については、こちらのオープンな役割をご覧ください。