Comment construire une équipe de plate-forme maintenant! les secrets d'une ingénierie réussie

TLDR; Les équipes de mise à l'échelle sont difficiles. Une équipe de plate-forme bien faite peut aider à atténuer les difficultés.
Une plateforme au milieu de la mer (une bonne métaphore de l'isolement habituel des équipes de la plateforme)

Chez Conde Nast International, nous sommes passés d’une équipe de 20 ingénieurs à moins de 100 en moins d’un an. Nous avons découvert que la construction d'un système qui sera utilisé sur de nombreux marchés comporte de nombreuses pièces mobiles et des répétitions. Par exemple, reconstruire l'infrastructure et la configuration de l'application. Ajout de logiciels complémentaires tiers. Construire l'application en utilisant les redirections CDN. Enregistrement et configuration DNS.

De nombreux comptes AWS étaient utilisés par de nombreuses équipes. Suivi de la surveillance de l'utilisation était un gâchis. Chaque développeur doit réfléchir à l'emplacement et à la gestion de son système. Ils le font généralement indépendamment les uns des autres. Ils doivent penser à la surveillance et à la journalisation. Cela inclut également divers sous-systèmes, tels que le déploiement de la journalisation de la file d'attente et le routage du trafic.

Nous aurions pu faire beaucoup de choses pour rendre le processus beaucoup plus facile et plus fluide. C'est la raison principale pour laquelle nous avons décidé de créer une équipe d'infrastructure, puis une équipe de plate-forme.

L'équipe de la plateforme

L'équipe de la plateforme

L'équipe de la plate-forme ne fait pas partie des équipes de produits mais agit plutôt comme une équipe d'efficacité technique. Cela signifie que la principale clientèle de l’équipe de la plate-forme est constituée des équipes de produits. Cela dit, l’équipe produit doit également se renseigner sur la plate-forme en général. Ensuite, soulevez des problèmes et des commentaires pour l’amélioration continue (le nouveau CI). Cela ne signifie pas que l'équipe de la plate-forme est isolée du reste de l'organisation. Mais plutôt un acteur essentiel au succès de l’organisation.

La gestion de l'infrastructure est l'une des responsabilités de l'équipe de la plate-forme. Garantir les meilleures pratiques et une compréhension approfondie de l'infrastructure dans le cloud ou sur site. Par exemple, s’assurer que l’infrastructure sera auditable. Cela peut être mis en œuvre de plusieurs façons. Mais le moyen le plus courant d’implémentation est l’infrastructure en code (IAC).

IAC est activé par l'infrastructure en tant que service (IaaS). L'équipe de la plate-forme gère la construction d'IAC à l'aide d'outils à source ouverte. cela signifie que la plate-forme en construction est une abstraction des outils. Ces outils sont faiblement connectés et l'intégration de ces outils constitue la plate-forme. Pensez-y comme une plate-forme en tant que service (PaaS), mais plus proche de ce que les cas d'utilisation de l'entreprise.

Nous savions pourquoi nous construisions l'équipe de la plate-forme. Nous devions maintenant poser les bases sur lesquelles l’équipe de la plateforme était construite. Contrairement aux équipes de produits qui ont généralement un objectif et des mandats visibles. L'équipe de la plate-forme ayant des exigences plus non fonctionnelles, nous avons dû définir cela en profondeur.

Voici mon point de vue personnel sur la manière de constituer une équipe de plate-forme performante.

L'équipe et ses mandats

Les mandats

Automatisation

Les gens sont enclins aux erreurs. L'automatisation au sein de la plate-forme nous permet d'être plus confiants lors de l'exécution d'un morceau de code. Cela nous permet d’isoler tous les bugs et erreurs dans le code. et ensuite faire un déploiement continu.

Les tests automatisés sont importants. Tout ce qui n'est pas testé n'est pas encore complètement implémenté. De nombreux types de tests sont nécessaires selon le type de logiciel. Par exemple, test des unités de fuzzing de bout en bout pour les unités d'intégration.

La sécurité est primordiale pour le fuzzing et les tests de sécurité automatisés doivent être une priorité. Ceci pour empêcher l’injection d’attaque SQL par CORS et autres. Avoir cela va diminuer la surface d'attaque.

Utilisez le principe du moindre privilège lorsque vous donnez accès. Dans le même temps, veillez à équilibrer cela avec la facilité d'entrée. Un développeur utilisant une plate-forme nécessitant un accès toutes les 5 secondes est mauvais pour les relations interpersonnelles. Une équipe de plate-forme devrait être des facilitateurs et non des obstacles. Cela signifie qu'il faut beaucoup de temps pour établir des relations et permettre l'efficacité dans l'équipe.

Tout ce qui doit être fait deux fois doit être automatisé. Respectez le principe DRY autant que possible.
 
La plate-forme devrait être automatisée pour éliminer les frais généraux cognitifs. Aidez-nous également à être plus stable en tant que plateforme. Ce n'est pas une alternative à la documentation et aux post mortem, mais plutôt le résultat de celles-ci.

Une grande partie de l'automatisation est la stratégie de déploiement et la mesure des déploiements à l'aide de métriques. Enfin, traçant les métriques contre l’adoption par le client.

Utilisez des déploiements intelligents et comprenez quand appliquer. Exemple de ceci sont les suivants. Déploiements bleu-vert, tests a / b, restaurations automatiques et restaurations sans connaissances.

Efficacité
Construire une plateforme hautement efficace est important. Cela nous permettra d'avancer plus vite. Corriger rapidement les bugs pour gagner en efficacité. Et la construction des caractéristiques sur la base de la nécessité. Réutiliser le code et créer une implémentation de référence est la clé. Cela aidera l’ensemble de l’entreprise à obtenir un délai de mise sur le marché plus long ainsi qu’un avantage concurrentiel. Assurez-vous de documenter les inconnus connus et les cas extrêmes. Problèmes courants et chemins d'escalade.

L'efficacité de la plate-forme signifie également l'échec rapide et sa réparation. La plate-forme doit être aussi transparente que possible lors de l'affichage des erreurs. Les erreurs conduiront alors à un débogage et à des déploiements plus rapides. L'efficacité réside dans l'itération de petites fonctionnalités plutôt que dans un gros déploiement.

Avoir un système d'escalade pour la base de connaissances n'est pas un obstacle. Au lieu de cela, c'est un endroit pour commencer chaque fois que vous vous sentez perdu. Ceci avec de bonnes relations donne des résultats productifs et une coopération plus efficace. Aider les équipes à partager leurs connaissances. Ils vont acquérir de l'expérience l'un avec l'autre et c'est un bon moyen de construire une équipe très efficace.
 
En libre service

Une documentation suffisante et continue est importante. Une formation est nécessaire pour les développeurs. Les frais généraux liés à la formation de nouveaux développeurs doivent être pris en compte. Chaque nouvelle technologie que nous adoptons entraîne des frais généraux. Cela nécessite un examen attentif si les frais généraux valent la valeur de l'adoption. Le portail interactif des laboratoires de formation et des développeurs est utile. Un endroit où nous pouvons faire la découverte de MVP et de la mise en œuvre de référence. Tout cela nous aidera à atteindre l'autosuffisance.

Tous les nouveaux ingénieurs doivent créer quelque chose en utilisant la plateforme le premier mois. Cela peut faire partie de l'orientation initiale des nouveaux employés. Cela nous permettra également de découvrir des problèmes au sein de la nature en libre-service de la plate-forme. Formations supplémentaires pour chaque nouvelle partie de la plate-forme. La découverte de bricolage au sein de la plateforme est encouragée. Réinventer la roue et utiliser Shadow IT est activement découragé. La maintenance de nombreuses applications de la même chose est inutile et inutile.

La surveillance des métriques et le suivi des alertes sont des outils puissants. SRE peut faire initialement partie de la fonction de plate-forme intégrée à l’équipe de plate-forme principale. Cela aidera SRE à comprendre la mise en œuvre sous-jacente de la plate-forme.

La partie la plus importante de la plate-forme est qu'elle est conçue pour les développeurs. S'efforcer d'établir un équilibre entre l'élaboration de meilleures pratiques et la promotion de la communication interpersonnelle. Une plateforme en libre service signifie que vous aurez le savoir-faire. Puis comprendre la valeur d'avoir une plate-forme. Cela signifie que les développeurs auront parfois des frustrations. Les retours d'informations doivent être pris en compte lors de l'itération du développement de la plateforme. Il devrait y avoir un moyen de donner de la rétroaction aux développeurs de la plate-forme et comment la plate-forme se porte en général. Sans cela, la plateforme vit en isolation avec le reste de l'entreprise. L'adoption sera au mieux fatigante. Les gens veulent utiliser et adopter quelque chose qu'ils se sentent bien d'utiliser. Après tout, le développement de logiciels est un type de projet centré sur l’être humain. La communication, la motivation des interactions est une partie importante du développement. Nous devons le perfectionner en même temps que les exigences commerciales et les délais. Une plate-forme parfaite inexistante ne sert à personne. Une plate-forme semi-fonctionnelle et non sécurisée est une malédiction pour toute entreprise.

Enfin, il y aura toujours des choses hors du champ de la plate-forme. Cela devrait toujours être décidé au cas par cas. Sachant que les gens en ont toujours besoin à la fin de la journée et que vous devrez rediriger la demande vers une autre équipe. Peut-être l'escalader.

Le planificateur d’équipe qui regarde l’équipe à un niveau élevé

Des principes

L'équipe qui cherche à se tenir à la hauteur de ses décisions

Autorité

À bien des égards, le succès ou l’échec d’une équipe de plate-forme réside dans la décision qu’elle prend. L’équipe de la plateforme devra prendre des décisions qui affectent les autres équipes. Cela se produit lors de la construction des fondations de la plate-forme. Par exemple, le langage utilisé par les outils et les frameworks.

L’autorité de l’équipe de la plate-forme ne réside pas dans l’application des normes. Mais dans la direction subtile de l'équipe de développement dans l'une ou l'autre décision. Par exemple, construire une recommandation pour la journalisation. Pour le rendre compatible avec un analyseur de journalisation lors de l'envoi des journaux. L'établissement de normes strictes et rapides n'est pas de la responsabilité de l'équipe de la plate-forme. L’équipe de développement elle-même devrait avoir la prérogative de choisir. Tout comme les outils et les langages qu’il juge appropriés pour ses propres cas d’utilisation. Cela dit, des forces fondamentales doivent être définies à l’avance. Par exemple, utilisation du cloud ou de plusieurs fournisseurs de cloud.

Le verrouillage des fournisseurs est à la fois un cadeau et une malédiction pour les équipes de la plate-forme. Don en ce sens que ces décisions ont été prises par d'autres équipes. Cela signifie que les équipes ont construit leur écosystème d’outils autour d’une décision. Malédiction également car nous devons vivre ces décisions dans le cycle de vie d’une application. Ou ajoutez une surcharge supplémentaire de migration. Une équipe de plate-forme doit avoir une visibilité et une autorité sur l'ensemble de l'organisation pour avoir de meilleures chances de succès.

Tourne la comme ça. Nous croyons que DevOps est une culture et non une personne

Plaidoyer et évangélisation

DevOps est une culture et non un rôle. L'équipe de la plateforme devrait pouvoir évangéliser cela.

Le point d'échec habituel dans le développement logiciel est le manque de compréhension du fonctionnement de l'application dans des conditions d'environnement de production.

La première équipe technique qui facilite la communication entre équipes est généralement l’équipe de la plate-forme. Ensuite, le plaidoyer en faveur de la réutilisation du code et des meilleures pratiques par défaut revient à l'équipe de la plate-forme. Les performances et la fiabilité deviennent la principale préoccupation de l'équipe de la plate-forme.

L'efficacité technique est le soutien constant de l'équipe de la plate-forme. L’objectif principal de la constitution de l’équipe de plate-forme est que les ingénieurs construisent davantage avec moins de frais généraux cognitifs. Les détails pouvant être réutilisés et automatisés incombent généralement à l'équipe de la plate-forme.

Nous rendons votre plate-forme stable, un point d'ancrage à la fois

Responsabilité

Avec le pouvoir d'apporter des modifications aux blocs de construction fondamentaux de chacun des systèmes. Un bogue ou une vulnérabilité dans l’un de ceux-ci provoquera un problème en cascade. Le reste de l'équipe d'ingénierie sera alors affecté.

La responsabilité en tant qu'équipe est importante pour s'assurer que chaque fois que l'équipe apporte un changement radical, le reste de l'équipe en soit informé.

Un post mortem irréprochable est nécessaire pour que chaque membre se sente en sécurité pour apporter des changements. Construire un meilleur système tout en s'appropriant le système. La responsabilité de faire pression pour un modèle de support et des opérations revient ensuite à la plate-forme et à l'équipe SRE.

Ah .. Alors tout le monde n'aura pas le même travail en tournant cette roue

Compétence

L'expérience et le savoir-faire requis sur l'équipe de la plateforme dépendent de la structure de l'entreprise.

Par exemple, certaines entreprises ont une équipe de SRE qui s’occupe du fonctionnement et de l’opérationnalisation de chaque application. Cela signifie que la création d'un modèle de support n'est pas entièrement la responsabilité de l'équipe de la plateforme.

La gestion des fournisseurs est également une tâche qui peut être déléguée à des équipes de support aux applications.

Mais généralement, voici l'expertise dont vous aurez besoin au sein de votre équipe de plate-forme:

  • orchestration et conteneurisation de conteneurs
  • gestion du cloud
  • gestion des fournisseurs
  • gestion de pipeline
  • configuration dns et cdn
  • configuration du serveur
  • git et scm
  • ionisation du produit
  • observabilité (suivi de la journalisation)
  • opérationnalisation (runbooks et support escalade post mortem alerting)
  • compétences non techniques et gestion des personnes
  • infrastructure définie par logiciel (infrastructure sous forme de code)
  • collaboration avec d'autres équipes et négociation avec la direction
  • workflow commun et gestion de l'architecture
  • Sécurité
  • formation et enseignement pour développeurs
  • développement de la documentation

Idéalement, vos ingénieurs posséderont une expertise dans le domaine, puis une bonne connaissance pratique des autres domaines.

Ma suggestion pour développer l'expertise est de basculer entre les membres pour qu'il y ait des experts au niveau du domaine. Ensuite, effectuez un transfert ou effectuez une programmation extrême de paires de tables. Une telle redondance est intégrée à la structure de l'équipe.

Compte tenu de l'énorme mandat de l'équipe de la plate-forme. Nous pouvons sans risque supposer qu'il faudrait une grande équipe pour mener toutes ces activités en parallèle. Une partie de la tâche peut être déléguée à l'équipe d'application. Bien que cela ajouterait des frais supplémentaires pour le développement. Nous pourrions également séparer cette équipe, mais cela, en cas de mauvaise manipulation, pourrait entraîner un désalignement supplémentaire.

Il est recommandé d’avoir une structure semi-plate avec plusieurs ingénieurs principaux et ingénieurs principaux qui pourraient prendre une décision agile. De plus, disposer d'une telle équipe avec de nombreuses pièces mobiles signifierait qu'un rôle technique principal ne serait pas approprié. Il est essentiel de disposer d'un responsable de l'ingénierie pour la plate-forme et l'architecte de la solution.

L'architecte de la solution pourrait définir la feuille de route de l'équipe de la plate-forme. Coordonnez ensuite cela avec le reste des équipes d'ingénierie. Dans ce processus, nous pouvons également comprendre les besoins de l'organisation. Et ensuite, planifiez les capacités dont nous avons besoin. Enfin, l’architecte de la solution peut contribuer à la sélection des technologies à ajouter à la plate-forme.

Le responsable technique pourrait aider à la communication et à l’établissement de relations. Ceci est important pour un certain nombre de raisons. En tant que véritable équipe multidisciplinaire, le nombre de demandes sera élevé. Deuxièmement, la hiérarchisation des tâches sera cruciale pour la création de capacités.

En effet beaucoup de partie mobile. Mais bien fait, il peut s’agir d’une machine bien huilée

épilogue

L'équipe de la plate-forme est un nouveau concept rendu possible par les nouvelles technologies mises sur le marché. Kubernetes et son omniprésence en sont un bon exemple. Cette nouvelle équipe peut aider l’entreprise à développer facilement des capacités. Les équipes de mise à l'échelle sont difficiles. Avoir une nouvelle équipe de facilitateurs l'aidera à évoluer plus rapidement avec moins de frictions. C’est ma conception personnelle, basée sur l’expérience, de ce qui doit être au cœur de cette équipe et de l’expertise nécessaire pour l’intégrer.

Travaillez avec nous Consultez cette offre chez Condé Nast International: https://www.linkedin.com/jobs/view/839478085

Rejoignez notre communauté Slack et lisez nos sujets hebdomadaires sur Faun ⬇

Si ce message vous a été utile, veuillez cliquer plusieurs fois sur le bouton clap below ci-dessous pour montrer votre soutien à l'auteur! ⬇