Comment le conservatisme technique nous aide à évoluer plus vite et mieux

Publié: 2022-07-21

Chez Intercom, nous nous concentrons sur l'avenir et nous prenons des mesures audacieuses pour y arriver. Mais lorsque nous prenons des décisions techniques, nous aimons être conservateurs.

En pratique, être techniquement conservateur revient à réutiliser des technologies et des frameworks existants dans notre pile, ou à promouvoir des modèles et des solutions éprouvés. Nous apprécions cette familiarité parce que nous comprenons que les problèmes importants à résoudre sont ceux qui offrent une valeur client ou commerciale.

Au lieu d'évaluer de nouvelles technologies et de passer du temps sur des problèmes opérationnels déjà résolus qui n'apportent finalement que peu de valeur au client, nous pouvons nous concentrer sur l'amélioration du produit en créant, en publiant et en itérant des solutions.

Ceci est le sixième article d'une série explorant les principes de nos produits . Ici, Waheed discute de notre principe d'ingénierie "Soyez techniquement conservateur".

Le conservatisme technique présente de nombreux avantages à long terme

Ce principe est mieux illustré par quelques exemples au fil des ans, démontrant comment « Être techniquement conservateur » nous permet d'évoluer rapidement tout en n'étant finalement pas une contrainte. J'ai déjà parlé de notre expérience de conception de notre système de création de rapports, où nous avons évalué les avantages de l'introduction d'un nouveau magasin de données dans notre pile - Redshift. Cela aurait signifié l'introduction d'un nouveau type de base de données dans notre système qui n'avait jamais été testé en production. De plus, nous aurions dû passer beaucoup de temps à acquérir des connaissances opérationnelles, à maintenir les clusters en production et à gérer les problèmes imprévus liés à l'exploitation de Redshift à grande échelle.

" Nous avons tiré parti de notre infrastructure existante pour accélérer le processus d'environ six mois à seulement six semaines "

En fin de compte, nous avons décidé qu'un magasin de données familier était mieux adapté à la tâche. Nous avons tiré parti de notre infrastructure Elasticsearch existante, qui alimente la majorité des capacités de recherche d'Intercom, pour accélérer le processus d'environ six mois à seulement six semaines.

La version initiale du système de rapport a été livrée il y a quelques années maintenant, nous avons donc eu l'occasion de réfléchir à certains des avantages à plus long terme de notre application du conservatisme technique dans ce cas :

Nous avons résolu le problème du client plus rapidement

L'utilisation de notre infrastructure existante nous a évité de passer du temps à nous familiariser avec un nouveau datastore et à faire face à tous les contretemps inévitables. Nous avons pu nous concentrer immédiatement sur le problème du client à résoudre et l'expédier rapidement, réduisant ainsi le délai de livraison de plus de quatre mois.

Nous avons profité au maximum du temps de l'équipe

Notre équipe d'infrastructure de données a pu continuer à se concentrer sur un petit ensemble de technologies familières au lieu d'être réparties sur plusieurs technologies. En conséquence, ils avaient – ​​et ont encore – plus de temps pour assurer la santé de nos systèmes existants et optimiser notre utilisation de chaque technologie.

« Parce que notre ensemble de technologies est relativement petit, des améliorations se produisent régulièrement »

Nous avons augmenté la valeur des améliorations continues

Parce que notre ensemble de technologies est relativement petit, des améliorations se produisent régulièrement. Le produit exploite ces technologies, et donc l'impact de ces améliorations est aggravé sur tout ce qui est construit dessus. Une petite amélioration peut avoir un effet d'entraînement massif et positif sur l'ensemble du produit.

Plus d'équipes ont eu plus d'apports

L'utilisation de technologies communes signifie que davantage d'ingénieurs et d'équipes se sentent en confiance et habilités à travailler avec eux. Nous avons constaté de fréquentes améliorations du produit de reporting de la part d'équipes de toute l'entreprise plutôt que d'une seule équipe propriétaire d'une partie particulière du système.

Rappelez-vous que les principes ne sont pas des règles, ce sont des lignes directrices

Les principes sont un moyen incroyable d'aligner les équipes et ont donné d'excellents résultats pour Intercom. Mais il y a des moments où il peut être plus logique de ne pas les suivre. Au fur et à mesure qu'une entreprise évolue, il existe un risque que certains membres de l'équipe suivent les principes de manière dogmatique ou les interprètent de manière incorrecte. Par défaut, le conservatisme technique ne devrait pas signifier que nous n'introduisons jamais quelque chose de nouveau.

"Le conservatisme technique signifie favoriser une technologie qui est déjà dans votre pile - mais seulement si c'est la meilleure option"

Le conservatisme technique signifie favoriser une technologie qui est déjà dans votre pile, mais seulement si c'est la meilleure option. Dans certaines situations, une technologie existante peut ne pas convenir. S'il ne peut pas répondre aux questions suivantes, nous pourrions chercher plus loin et évaluer des alternatives :

  • Le nouvel outil permet-il à votre entreprise de se développer plus efficacement ?
  • Cela permet-il à votre équipe ou à votre organisation d'agir plus rapidement et de générer de la valeur plus rapidement ?
  • Résout-il un problème client qui ne pouvait pas être résolu avec vos outils existants ?

Si vous répondez « oui » à l'une d'entre elles, il peut être utile d'envisager l'introduction de ce nouvel outil. Chez Intercom, il y a eu un exemple récent qui a répondu « oui » aux trois questions.

Les utilisateurs, ou les clients de nos clients, sont au cœur de la plateforme Intercom. Au fur et à mesure que nous avons grandi, nos clients et leurs besoins en termes de quantité de données utilisateur qu'ils stockent dans Intercom ont augmenté. La grande quantité de données utilisateur entraînait à l'époque des problèmes de mise à l'échelle avec notre magasin de données utilisateur actuel, et pour nous assurer que nous pouvions continuer à prendre en charge les clients existants et nouveaux, nous devions repenser notre solution actuelle. Cela nous a finalement amenés à introduire une nouvelle technologie dans notre pile - voici comment nous sommes arrivés à cette décision.

Nous évoluions plus rapidement que notre magasin de données ne le permettait

Nous utilisions MongoDB depuis environ cinq ans et avions les cicatrices opérationnelles pour le prouver. Nous avions optimisé chaque aspect de sa possession et de son exécution, du type de matériel sur lequel il fonctionnait aux requêtes que nous exécutions dessus. Nous étions sur le point de voir des rendements décroissants et voyions des signaux forts indiquant qu'il cesserait d'être adapté à son objectif d'ici quelques années - et pourrait même devenir un goulot d'étranglement dans la croissance de l'entreprise.

"Réfléchissez régulièrement à la trajectoire de votre entreprise et demandez-vous ' Est-ce que ce qui nous a amenés ici nous y amènera ? '. Cela vous permettra d'être proactif sur vos choix plutôt que réactif »

C'est là qu'il est essentiel d'avoir une stratégie technique solide et avant-gardiste. À ce stade, nous avions suffisamment de données pour suggérer que nous devions peut-être évaluer une autre approche et avions la piste pour le faire. Réfléchissez régulièrement à la trajectoire de votre entreprise et demandez-vous « Est-ce que ce qui nous a amenés ici nous y amènera ? ». Cela vous permettra d'être proactif quant à vos choix plutôt que réactif, et d'atténuer les risques liés aux inconnues inconnues liées à l'introduction d'une nouvelle technologie.

Notre technologie ralentissait notre équipe

Chez Intercom, nous nous efforçons d'exécuter moins de logiciels. Dans ce cas, même si nous adoptions une nouvelle technologie avec des inconnues inconnues, l'adoption de DynamoDB nous a permis de faire exactement cela.

Auparavant, nous gérions nous-mêmes la mise à l'échelle de MongoDB ainsi que le code d'équilibrage de la charge - une surcharge importante pour l'équipe. Une partie de l'attrait de DynamoDB était qu'il était géré par le fournisseur, AWS. Cela signifiait que, même si son adoption avait un coût initial, elle serait finalement moins chère et permettrait à l'équipe d'économiser énormément de temps et d'efforts.

"Ne pas être dogmatique sur le conservatisme technique nous a permis de remplacer une technologie avec des frais généraux importants et des capacités limitées"

Cela peut sembler contre-intuitif, mais l'introduction d'une nouvelle technologie nous a finalement permis d'utiliser moins de logiciels. Ne pas être dogmatique sur le conservatisme technique nous a permis de remplacer une technologie aux frais généraux importants et aux capacités limitées par une nouvelle technologie moins lourde sur le plan opérationnel et plus évolutive.

Nous étions impitoyables sur les exigences

Nous aurions parfois besoin de MongoDB pour effectuer des requêtes complexes et coûteuses qui risquaient de compromettre la disponibilité et les performances de requêtes plus courantes mais moins complexes. Lors de l'évaluation de DynamoDB, nous avons réalisé qu'il ne prendrait pas en charge ces requêtes complexes et coûteuses, mais qu'il serait bien meilleur pour les requêtes les plus simples et les plus courantes.

Nous utilisions déjà principalement Elasticsearch pour effectuer des requêtes complexes, et la nécessité de migrer nous a obligés à revoir et à définir plus délibérément les fonctionnalités dont nous avions besoin de notre magasin d'utilisateurs et nous a finalement permis d'améliorer les performances pour son cas d'utilisation principal : la récupération d'enregistrements d'utilisateur unique.

"Lorsque vous envisagez de remplacer une technologie, ne tenez pas pour acquis que vous utiliserez la nouvelle technologie de la même manière"

Lorsque vous envisagez de remplacer une technologie, ne tenez pas pour acquis que vous utiliserez la nouvelle technologie de la même manière. Vos exigences auront probablement considérablement changé au fil du temps, et le reste de la pile aura évolué ou mûri de sorte que les cas d'utilisation deviennent plus étroits. Cela ouvrira des possibilités d'adopter des technologies plus ciblées et plus performantes, ou de décharger certaines technologies pour qu'elles soient gérées par un fournisseur.

Faites en sorte que vos principes fonctionnent pour votre entreprise, et non l'inverse

Le conservatisme technique est un excellent outil pour permettre à vos équipes de rester concentrées sur ce qui est important : résoudre les problèmes des clients et apporter de la valeur sans dépenser de précieuses ressources pour répondre à des questions auxquelles on a déjà répondu.

Cependant, devenir trop rigide dans la conviction que l'introduction de nouvelles technologies est mauvaise pourrait vous empêcher de tirer parti des technologies qui vous aideront à exécuter moins de logiciels et à évoluer plus facilement et plus rapidement. Il est important d'appliquer ce principe d'une manière qui fonctionne le mieux pour votre équipe et votre entreprise, à long terme.

Êtes-vous intéressé à rejoindre l'équipe d'ingénierie d'Intercom? Pour en savoir plus et voir nos postes vacants, cliquez ici.

Carrières CTA - Ingénierie (horizontal)