Comment notre infrastructure évolue aux côtés de nos clients

Publié: 2022-06-03

Nous sommes déterminés à offrir la meilleure expérience client avec notre système d'exploitation Engagement. Nous avons des ambitions véritablement mondiales pour apporter notre mission de rendre les affaires Internet personnelles aux plus grandes entreprises clientes à travers le monde.

Cette ambition se reflète dans la façon dont nous concevons et construisons l'infrastructure qui prend en charge la plate-forme Intercom. Nous construisons pour le long terme - cela signifie assurer la fiabilité par défaut et la capacité de s'adapter à une échelle massive à mesure que nous grandissons.

Intercom a connu une croissance et ne fera que continuer à le faire - bon nombre de nos clients les plus anciens ont évolué avec nous au fil des ans. Au fur et à mesure que ces clients existants se sont développés et que nous avons accueilli des clients de plus en plus gros, nous nous sommes toujours concentrés sur le fait de dire oui à l'échelle.

Il s'agit du troisième article d'une série explorant les façons dont Intercom a adapté les fonctions clés pour répondre aux besoins des entreprises clientes.

Nous grandissons aux côtés de nos clients

  • Vous voulez servir plusieurs millions d'utilisateurs actifs. Intercom peut-il faire cela ?
  • Vous devez stocker plusieurs millions d'enregistrements d'utilisateurs. Intercom peut-il faire cela ?
  • Vous avez plusieurs milliers d'agents actifs que vous souhaitez actionner dans votre espace de travail. Intercom peut-il gérer cela ?

Oui à tout ce qui précède.

Aujourd'hui, nos systèmes évoluent de manière dynamique pour répondre à environ 50 000 requêtes Web par seconde en période de pointe, 26 000 tâches d'arrière-plan par seconde et 11 000 requêtes d'API publiques par seconde, ce qui démontre notre capacité à évoluer en continu pour répondre aux exigences des entreprises modernes.

Nous voulons être à la hauteur de vos ambitions. Cela signifie être capable de gérer d'énormes charges de travail de manière fiable et performante, et de les développer en permanence à mesure que nos clients grandissent avec nous. Nous voulons vraiment nous associer à nos clients pour nous assurer que nous résolvons leurs problèmes, à grande échelle, sur le long terme.

Chez Intercom, nous visons à exécuter moins de logiciels

Nous construisons exclusivement sur un très petit ensemble de technologies de base. Cela nous permet de développer des équipes d'experts de domaines approfondis pour soutenir et habiliter les ingénieurs produits à mesure qu'ils construisent la prochaine génération d'intercom, et fournir des outils d'observabilité de classe mondiale, une mise à l'échelle, une fiabilité et des modèles de construction sécurisés par défaut.

Notre outillage permet une haute disponibilité

Nous travaillons exclusivement avec AWS en tant que fournisseur de services cloud et proposons actuellement des offres d'hébergement de données dans trois régions mondiales différentes - États-Unis, UE et Australie - chacune architecturée sur plusieurs zones de disponibilité pour une haute disponibilité.

Notre application coéquipière est une interface Ember.js soutenue par un monolithe Ruby on Rails . L'application Rails est le cœur d'Intercom et ce que nous déployons sur des milliers de travailleurs Web, API et asynchrones sur des clusters dédiés par fonction.

"Chaque année, lors du Black Friday, alors que nombre de nos clients atteignent leur période la plus chargée, notre infrastructure s'adapte sans intervention humaine"

Ces clusters évoluent automatiquement pour répondre aux demandes des clients au fur et à mesure que nous traversons les pics et les creux du trafic client chaque jour. Par exemple, chaque année lors du Black Friday, alors que nombre de nos clients atteignent leur période la plus chargée, notre infrastructure s'adapte sans intervention humaine.

Nos outils d'observabilité nous permettent de surveiller de près la façon dont nous servons le trafic

Nos outils d'observabilité garantissent que nous avons le doigt sur l'efficacité avec laquelle nous servons le trafic par client. Nous travaillons également en étroite collaboration avec AWS sur de nouvelles technologies et approches conçues pour pérenniser notre croissance rapide.

En plus des métriques et de la journalisation standard, notre monolithe Rails est auto-instrumenté avec des traces de haute qualité et riches en attributs. Cela permet aux ingénieurs d'observer la production sans avoir à écrire de code supplémentaire.

Notre pipeline d'observabilité est basé sur Honeycomb Refinery et échantillonne dynamiquement les demandes précieuses pour conserver des traces intéressantes (par exemple, une erreur face au client) par défaut. Nous avons également la possibilité de configurer des règles personnalisées pour un contrôle d'échantillonnage complet.

"Nous prenons en charge la rétention à 100 % pour fournir aux ingénieurs toutes les données dont ils ont besoin lorsque nous développons de nouvelles fonctionnalités ou déboguons des problèmes de production"

Surtout, pour les transactions les plus précieuses, nous prenons en charge une rétention à 100 % pour fournir aux ingénieurs toutes les données dont ils ont besoin lorsque nous développons de nouvelles fonctionnalités ou déboguons des problèmes de production. De plus, comme nous marquons toutes les traces avec l'ID client de l'expéditeur de la demande, nous pouvons approfondir la façon dont l'un de nos clients utilise Intercom.

Différents magasins de données permettent une optimisation dans divers cas d'utilisation

Nous exécutons plusieurs types de magasins de données différents pour prendre en charge nos diverses exigences de lecture et d'écriture de données dans les applications :

  • AWS Aurora MySQL : nos banques de données source de vérité reposent en grande partie sur AWS Aurora MySQL. Dans le cadre de notre mise à l'échelle initiale, nous avons divisé les bases de données par fonction. Une fois que les clusters de bases de données individuels sont devenus les plus grandes instances fournies par AWS Aurora, nous avons lancé un programme pour créer des bases de données par client qui résident sur plusieurs clusters de clusters de bases de données plus petits, que nous pouvons désormais mettre à l'échelle horizontalement et verticalement. Ce travail a été achevé début 2020 et l'architecture nous permet de faire évoluer indéfiniment nos plus grandes tables.
  • Elasticache : Devant nos bases de données, nous avons une couche de mise en cache memcached construite au-dessus d'Elasticache.
  • DynamoDB : nous utilisons DynamoDB avec parcimonie pour les cas d'utilisation en lecture et en écriture très fréquents .

La recherche est un élément indispensable d'Intercom

La recherche sous-tend toute une série de fonctionnalités principales d'Intercom - Inbox Views , API , Articles , la liste des utilisateurs, Outbound , Reporting , Resolution Bot et nos systèmes de journalisation internes.

La recherche est largement alimentée par de nombreux clusters Elasticsearch par fonction. Nous avons conçu de nombreux outils qui automatisent les tâches les plus laborieuses d'Elasticsearch, notamment les correctifs de sécurité, la mise à niveau et le remplacement du matériel dégradé. Nous avons également construit des outils qui nous permettent d'exécuter des migrations (de la même manière que MySQL) sur des index.

"Notre infrastructure mondiale est conçue pour servir des centaines de milliers d'entreprises, grandes et petites"

En plus d'améliorer la capacité de nos ingénieurs à itérer sur le schéma des indices à grande échelle, cela nous permet de décomposer les grands indices en indices plus petits qui sont plus faciles à gérer et offrent une performance et une stabilité supérieures. Cela nous donne également une dimension supplémentaire dans laquelle nous pouvons faire évoluer nos clusters Elasticsearch. Comme notre approche de partitionnement MySQL, cela nous donne de nombreuses années de piste de mise à l'échelle.

L'infrastructure mondiale d'Intercom est conçue pour l'échelle d'Internet

Notre infrastructure mondiale est conçue pour servir des centaines de milliers d'entreprises, grandes et petites, et la rigueur que nous appliquons à la gestion de nos opérations d'infrastructure garantit le bon déroulement des choses.

Lors de la feuille de route, la mise à l'échelle est un élément clé que chaque équipe prend en compte. Nos revues opérationnelles régulières sont réalisées par des experts à plusieurs niveaux de nos équipes backend où nous évaluons les mesures de l'infrastructure et examinons les besoins en capacité.

Nous travaillons dur et intelligemment pour qu'il en soit ainsi, et c'est pourquoi nos clients nous font confiance, des plus petites startups aux plus grandes entreprises du monde.

Découvrez d'autres articles de la série Intercom for Enterprise