お客様と一緒にインフラストラクチャを拡張する方法

公開: 2022-06-03

私たちは、エンゲージメントOSで最高のカスタマーエクスペリエンスを提供することに真剣に取り組んでいます。 私たちは、インターネットビジネスを個人的なものにするという私たちの使命を世界中の最大の企業顧客にもたらすという真にグローバルな野心を持っています。

この野心は、インターコムプラットフォームをサポートするインフラストラクチャを設計および構築する方法に反映されています。 私たちは長期的に構築しています。つまり、デフォルトで信頼性を確保し、成長に合わせて大規模な規模に対応できるようにすることを意味します。

インターコムは成長を続けており、今後も成長を続けるでしょう。私たちの長年の顧客の多くは、長年にわたって私たちと共に進化してきました。 これらの既存の顧客が成長し、ますます大きな顧客を歓迎するにつれて、私たちは常に規模を拡大するために「はい」と言うことに焦点を合わせてきました。

これは、インターコムが企業顧客のニーズをサポートするために主要な機能を拡張する方法を探るシリーズの3番目の投稿です。

私たちはお客様とともに成長しています

  • 数百万人のアクティブユーザーにサービスを提供したいと考えています。 インターコムはそれを行うことができますか?
  • 数百万のユーザーレコードを保存する必要があります。 インターコムはそれを行うことができますか?
  • ワークスペースでアクションが必要なアクティブなエージェントが何千もあります。 インターコムはそれを処理できますか?

上記のすべてにはい。

現在、システムは動的にスケーリングして、ピーク時に1秒あたり約50,000のWebリクエスト、1秒あたり26,000のバックグラウンドジョブ、1秒あたり11,000のパブリックAPIリクエストを処理します。これは、現代の企業の要件を満たすために継続的にスケーリングできることを示しています。

私たちはあなたの野心にマッチしたいと思っています。 つまり、信頼性が高くパフォーマンスの高い方法で膨大なワークロードに対応し、お客様の成長に合わせて継続的に拡張できることを意味します。 私たちは、お客様と真に協力して、お客様の問題を大規模に長期的に解決できるようにしたいと考えています。

インターコムでは、実行するソフトウェアの数を減らすことを目指しています

私たちは、非常に少数のコアテクノロジーの上に独占的に構築しています。 これにより、ディープドメインの専門家のチームを開発して、製品エンジニアが次世代のインターコムを構築する際にサポートおよび有効化し、世界クラスの可観測性ツール、スケーリング、信頼性、およびデフォルトで安全な構築パターンを提供できます。

当社のツールは高可用性を可能にします

クラウドサービスプロバイダーとしてAWSと独占的に連携し、現在、米国、EU、オーストラリアの3つの異なるグローバルリージョンでデータホスティングサービスを提供しています。各リージョンは、高可用性を実現するために複数のアベイラビリティーゾーンにまたがって設計されています。

私たちのチームメイトアプリは、 RubyonRailsモノリス支えられたEmber.jsフロントエンドです。 Railsアプリケーションは、Intercomのコアであり、専用の関数ごとのクラスター上の何千ものWeb、API、および非同期ワーカーにデプロイするものです。

「毎年ブラックフライデーに、多くのお客様が最も忙しい時期を迎えているため、インフラストラクチャは人間の介入なしでそれに合わせて拡張されます」

これらのクラスターは、毎日顧客トラフィックの山と谷を通過するときに、顧客の要求に対応するように自動的に拡張されます。 たとえば、毎年ブラックフライデーに、多くのお客様が最も忙しい時期を迎えているため、インフラストラクチャは人間の介入なしでそれに合わせて拡張されます。

可観測性ツールを使用すると、トラフィックをどのように処理しているかを綿密に監視できます

私たちの可観測性ツールは、顧客ごとにトラフィックをどれだけ効率的かつ効果的に提供しているかを把握することを保証します。 また、AWSと緊密に連携して、急速な成長を将来にわたって保証するように設計された新しいテクノロジーとアプローチを提供しています。

標準のメトリクスとロギングに加えて、Railsモノリスは高品質で属性が豊富なトレースで自動計測されます。 これにより、エンジニアは追加のコードを記述しなくても生産を観察できます。

私たちの可観測性パイプラインはHoneycombRefineryに基づいており、デフォルトで興味深いトレース(顧客向けエラーなど)を保持するために貴重なリクエストを動的にサンプリングします。 また、完全なサンプリング制御のためのカスタムルールを構成する機能もあります。

「100%の保持をサポートして、エンジニアが新機能を構築したり、本番環境の問題をデバッグしたりするときに必要なすべてのデータを提供します。」

重要なのは、最も価値のあるトランザクションについて、100%の保持をサポートして、エンジニアが新しい機能を構築したり、本番環境の問題をデバッグしたりするときに必要なすべてのデータを提供することです。 さらに、すべてのトレースにリクエスト発信者の顧客IDのタグを付けると、どの顧客もインターコムをどのように体験しているかを深く掘り下げることができます。

さまざまなデータストアにより、さまざまなユースケースにわたる最適化が可能になります

アプリケーション全体でさまざまなデータの読み取りと書き込みの要件をサポートするために、いくつかの異なるタイプのデータストアを実行しています。

  • AWS Aurora MySQL :信頼できる唯一の情報ストアのソースは、主にAWSAuroraMySQLの上に構築されています。 初期スケーリングの一環として、データベースを関数ごとにシャーディングしました。 個々のデータベースクラスターがAWSAuroraが提供する最大のインスタンスに成長した後、小規模なデータベースクラスターの複数のクラスター上に存在する顧客ごとのデータベースを構築するプログラムを開始しました。これにより、水平方向と垂直方向の両方にスケーリングできます。 この作業は2020年の初めに完了し、アーキテクチャにより、最大のテーブルを無期限に拡張できます。
  • Elasticache :データベースの前に、 Elasticacheの上に構築されmemcachedキャッシングレイヤーがあります。
  • DynamoDB非常に高い読み取りおよび書き込みのユースケースでは、 DynamoDBを慎重に使用します

検索はインターコムの不可欠な部分です

検索は、受信トレイビュー API 記事、ユーザーリスト、送信レポート解決ボット、および内部ログシステムなど、インターコムのコア機能のホスト全体を支えます。

検索は、主に多くの関数ごとのElasticsearchクラスターによって強化されています。 セキュリティパッチの適用、アップグレード、劣化したハードウェアの交換など、Elasticsearchの最も面倒なタスクを自動化する多くのツール構築しましたまた、インデックスに対して(MySQLと同様の方法で)移行を実行できるツールも構築しました。

「当社のグローバルインフラストラクチャは、大小を問わず、数十万の企業にサービスを提供するように設計されています」

インデックススキーマを大規模に反復するエンジニアの能力を向上させるだけでなく、大きなインデックスを小さなインデックスに分割して、管理しやすく、パフォーマンスと安定性を高めることができます。 また、Elasticsearchクラスターをスケーリングできるさらなる次元も提供します。 MySQLシャーディングアプローチと同様に、これにより、滑走路を何年にもわたってスケーリングできます。

インターコムのグローバルインフラストラクチャは、インターネット規模向けに構築されています

当社のグローバルインフラストラクチャは、大小を問わず数十万の企業にサービスを提供するように設計されており、インフラストラクチャの運用管理に厳格に適用することで、物事がスムーズに実行されるようにしています。

ロードマッピングを行う場合、スケーリングはすべてのチームが考慮する重要な入力です。 定期的な運用レビューは、インフラストラクチャメトリックを評価し、容量要件をレビューするバックエンドチーム全体の複数のレベルの専門家によって提供されます。

私たちはそれを維持するために懸命にそして賢く働きます、そしてそれが私たちの顧客が私たちを信頼する理由です–最小のスタートアップから世界最大の企業まで。

IntercomforEnterpriseシリーズの他の投稿をご覧ください