L'infrastructure est ce dont dépendent le travail et les bénéfices de l'entreprise informatique. Tous les processus qui se produisent avec le code de l'ordinateur du développeur à la production dépendent du fonctionnement ininterrompu des serveurs, des logiciels et des services externes. Si l'infrastructure ne fonctionne pas comme elle le devrait, l'entreprise perd des bénéfices.
Les startups ne prêtent pas beaucoup d'attention aux infrastructures - elles doivent couper le produit jusqu'à ce que les investisseurs soient à court d'argent. Les grandes entreprises ne sont plus à la hauteur - nous avons des milliers de tâches ici, nous devons travailler.
Comprendre que l'infrastructure d'une entreprise informatique est également un produit, qu'elle a un objectif, qu'il est nécessaire de prendre en compte les coûts et de suivre les mesures, n'atteint souvent pas.
Savez-vous combien coûte votre infrastructure: serveurs, logiciels, services externes? Que pensez-vous de son coût, par quelles métriques? Combien perdrez-vous si quelque chose tombe ou s'il n'y a pas de sauvegarde?
Artyom Naumenko (@entsu) de Skyeng connaît les réponses à ces questions. Il a travaillé à la fois dans des entreprises avec deux développeurs dans l'État et dans des sociétés avec mille employés. Il gère actuellement l'infrastructure de Skyeng et, en même temps, le centre d'apprentissage pour enfants Skyeng. Artem dira comment l'entreprise construit des infrastructures, comment elle y gagne de l'argent et quelles erreurs ne devraient pas être commises.
À propos de la société
Skyeng est une jeune entreprise, elle n'a que 6 ans. Mais pendant tout ce temps, il a augmenté 3 fois par an.

Cela signifie que l'infrastructure croît également trois fois par an. Aujourd'hui, nous avons 100 serveurs, 300 en un an et 900 en 2. Ce n'est pas facile, nous travaillons dur pour assurer une telle croissance.
Skyeng est une entreprise informatique. L'entreprise est jeune, il n'y a pas encore beaucoup d'héritage, tout est standard pour la pile PHP:
- PHP
- Angulaire
- PostgreSQL
- Linux sur lequel tout tourne.
Une centaine de développeurs. L'entreprise se développe et d'ici la fin de l'année, il y en aura plus.

La plupart de nos services sont rédigés par nos soins et l'ensemble des activités de la société tourne sur sa propre infrastructure. Il est suivi par une équipe infrastructure de 6 personnes. Nous fournissons tous les processus qui se produisent avec le code de l'ordinateur du développeur à la production. Le code est développé sur nos machines et serveurs virtuels, déploiement - à l'aide de nos Jenkins configurés et de nos outils de déploiement, l'opération en production se fait également sur nos serveurs, que nous gérons.
L'objectif de l'entreprise est de croître 7 fois en 2 ans. L'infrastructure devrait croître de la même manière. Pour atteindre l'objectif, chaque membre de l'équipe devops travaille comme un bœuf. Chaque année, nous devrions être 3 fois meilleurs que l'an dernier et 7 fois meilleurs à l'avenir. Chez Skyeng, personne ne s'intéresse aux belles histoires qui "ont essayé mais échoué". Le résultat est important, pas le processus.
Principes de construction des infrastructures
Les activités de toute entreprise informatique travaillent sur l'infrastructure. Si cela ne fonctionne pas, l'entreprise ne fonctionne pas, que ce soit Yandex, Amazon ou Skyeng. Nous en sommes conscients, donc la première chose qui est importante pour une infrastructure sympa est
de se fixer un objectif . Cela ressemble à un discours de Tony Robbins, mais sans objectif, rien ne fonctionnera.
L'objectif doit être fixé pour deux raisons.
- Si vous avez un objectif, vous vous rapprocherez de lui.
- S'il n'y a pas d'objectif, il n'y a nulle part où aller. Même si vous venez quelque part, vous ne pourrez pas vous défoncer de l'objectif atteint.
S'il n'y a pas d'objectif, il est impossible de l'atteindre.
Problèmes d'entreprise
La définition d'objectifs ne suffit pas. L'objectif de l'entreprise est de croître 7 fois en 2 ans. Il y aura des problèmes pendant la croissance. Ils varient en fonction de la taille et du type d'entreprise.
Le premier type d'entreprises et de personnes sont des startups . Dans l'image ci-dessous, «démarrage typique» - un radeau et une petite équipe qui essaie de nager quelque part. Les avantages d'une startup sont que chaque membre de l'équipe comprend où l'équipe se déplace, qui fait quoi et ce qu'il doit faire pour atteindre un objectif commun.

Le problème avec les startups est le manque d'argent. Lorsqu'un grand volume de tâches retombe sur les devops, il n'a pas le temps et se demande un assistant. Habituellement, il obtient la réponse: «Pourquoi? Vous gérez toutes les règles - continuez! ”
Le type suivant est d'énormes navires . Certains membres de l’équipage du navire ne voient pas où il navigue. Ils remplissent leur petite fonction, par exemple, ils jettent du charbon dans le four, et ils ne comprennent pas ce qui se passe dans le monde.

Le principal problème avec les navires est que de plus en plus de tâches sont nécessaires. Une centaine de clients, pour chaque problème, on ne sait pas trop comment prioriser, le tableau d'ensemble est flou, mais on «travaille»! Le temps ne suffit jamais et de plus en plus de tâches sont nécessaires. Une équipe ne sera jamais en mesure de construire un convoyeur qui jette du charbon dans le four pour effectuer des tâches importantes.
Le troisième type est celui des leaders . Le principal problème pour les gestionnaires d'infrastructure est les serveurs coûteux, les infrastructures coûteuses et le manque de compréhension de la manière dont les coûts d'infrastructure affectent les revenus de l'entreprise en général. Le gestionnaire doit en quelque sorte répondre aux questions sur pourquoi il y a tant de millions pour les serveurs, si nous mentirons moins si nous payons plus et ce qui se passera si nous payons moins.

Objectifs d'infrastructure
Je décrirai quels objectifs dans Skyeng nous fixons pour notre infrastructure dans le contexte des objectifs mondiaux de l'entreprise, et comment nous les atteignons. L'infrastructure a 4 objectifs.
Gardez une trace du budget . Une entreprise est une structure commerciale pour gagner de l'argent, nous devons donc les compter.
Résolvez les tâches rapidement . Ils n'ont pas relevé le serveur à temps, le nouveau service de l'entreprise ne démarrera pas et ne fera pas d'argent. La sauvegarde n'a pas été restaurée à temps - encore une fois, quelque chose ne fonctionnera pas et l'entreprise perdra ses bénéfices.
Commodité des développeurs . Cet élément nécessite une explication distincte. L'année dernière, Skyeng a dépensé 600 millions de roubles pour le développement. Si nous, en tant qu'infrastructure, avions augmenté la vitesse des développeurs d'au moins 1%, nous aurions gagné 6 millions. Si vous mettez deux gars à plein temps, ce qui augmentera la productivité de 1%, ce sera rentable.
Résultat à long terme . Nous ne devrions pas nous efforcer une fois, faire quelque chose de cool pour que tout le monde soit heureux, puis tout s'écroulerait. Ce que nous faisons devrait fonctionner pendant longtemps.
Pour que cela fonctionne, des mesures doivent être inventées. Ils doivent être mesurables, sinon ce ne sont pas des objectifs, mais des bêtises. Les objectifs doivent être exprimés en chiffres et en graphiques.
Examinons les éléments plus en détail.
Le budget
Mesurer l'infrastructure par entreprise est la part des dépenses de l'entreprise consacrée à l'infrastructure.

Skyeng est une école, et la valeur principale est une leçon. Une leçon moyenne coûte 800 roubles. Parmi ceux-ci, 12 vont à l'infrastructure: serveurs et devops.

Le pourcentage des infrastructures diminue, nous y travaillons. Cela profite à nous, aux entreprises et aux clients. Vous pouvez prendre des serveurs bon marché, ne pas sauvegarder et supprimer encore plus ce calendrier. Mais c'est faux, il faut considérer non seulement les coûts d'infrastructure, mais les coûts d'infrastructure et les pertes attendues des chutes.
Pour chaque service, nous considérons combien d'argent par heure nous perdons de sa chute. Nous gardons un journal détaillé de quand et quel service mentait, et combien nous avons perdu à ce sujet.
Le calendrier des pertes de chutes au cours de la dernière année.Plus de défaites au deuxième trimestre 2018 - bonjour à Roskomnadzor! L'an dernier, les dépenses en infrastructures ont été de 20 millions, les dépenses en baisse de 5 millions. Si nous avions tout réservé, cela nous aurait sauvés de Roskomnadzor, mais nous aurions quand même été de moins 15 millions.
Il n'est pas rentable pour les entreprises de tout dupliquer d'affilée. Il faut penser quoi dupliquer et quoi ne pas.
Nous dupliquons les services pour lesquels le coût d'un serveur ou d'une base de données supplémentaire est inférieur aux risques attendus de chutes.
Faites vite
Nous mesurons le pourcentage de tâches terminées le jour de la mise en place. L'infrastructure comporte de nombreuses tâches qui doivent être résolues ici et maintenant. D'autres équipes qui ne peuvent pas faire leur travail en dépendent. Les tâches importantes qui prennent des semaines sont considérées séparément.
Planifiez les tâches le jour de la configuration.Selon le calendrier, la probabilité de terminer une tâche le jour du réglage est d'environ 80%. Nous voyons ce graphique et pensons que tout est cool. Mais d'autres équipes peuvent ne pas penser ainsi et évaluer différemment. Par conséquent, nous menons des enquêtes auprès d'autres équipes.
Exemple de sondage.Nous menons des enquêtes via le formulaire Google habituel avec des questions. Les développeurs et nos autres clients y répondent régulièrement.
Le résultat de l'enquête sur la vitesse de l'infrastructure.La situation actuelle est bien décrite par les sondages, mais pas l'avenir. Pour évaluer la probabilité de la situation à l'avenir, nous mesurons le nombre de tâches effectuées à l'aide de la demande d'extraction. C'est ce qui en bénéficiera dans un an ou deux.
Il y a six mois, nous avons décidé de passer à «l'infrastructure en tant que code». Ici, nous mesurons toutes les demandes à l'infrastructure: remplissez un vidage ou un morceau de journaux, corrigez le point nginx sur le prod ou créez un nouveau serveur. Ce sont toutes des demandes, et nous les évaluons toutes en fonction du nombre de demandes d'extraction. À l'avenir, nous voulons que toute demande soit résolue à l'aide d'une demande d'extraction ou pour que nous ne soyons tout simplement pas invités.
Nous savons que l'approche «infrastructure en tant que code» offre trois principaux bonus:
- réduction du coût du changement;
- augmentation du taux de changement;
- réduction des risques.
Nous avons besoin des trois, alors nous allons de cette façon et mesurons à quel point nous nous rapprochons.

Pour les journaux, il existe un système de visualisation, pour l'émission des accès, il y a Terraform. Vous pouvez créer un système dans lequel tout sera automatisé. Idéalement, ce graphique devrait aller à 100%. Lorsqu'un appel est effectué à l'aide de code, nous pouvons l'exécuter rapidement et le déployer sur une autre infrastructure tout aussi rapidement.
C'est pratique pour les développeurs
C'est important pour Skyeng. Nous avons maintenant 100 développeurs, à la fin de l'année, il y en aura 120. Il est important qu'ils fonctionnent efficacement. Nous voulons embaucher des gens pour une raison, nous avons besoin de ceux qui amélioreront l'entreprise.
La seule et principale mesure pour les développeurs est le résultat d'une enquête de satisfaction avec l'équipe d'infrastructure.
En général, tout va bien.La plupart nous apprécient bien. Mais si vous demandez à quel point ils sont satisfaits de l'environnement de développement, alors tout n'est pas si agréable.

L'environnement de développement est notre casse-tête. Il s'agit d'un point de croissance qui doit être amélioré. Par conséquent, nous interviewons personnellement les employés qui ont répondu le pire: quel est le problème, qu'est-ce qui a ralenti ou n'a pas fonctionné pour lui? Savoir ce qui se passe peut améliorer les choses.
Tant que vous ne savez pas ce qui se passe, vous ne pouvez rien changer.
Résultat à long terme
N'importe laquelle de nos mesures peut être augmentée en se concentrant simplement dessus. Par exemple, pour augmenter le pourcentage de tâches terminées le même jour, vous pouvez tout supprimer et résoudre uniquement les tâches arrivées. Vous pouvez effectuer toutes les tâches à l'aide de code.
Par exemple, dans une certaine ville «N», tous les efforts sont consacrés au développement des routes. Ils font des pistes plates, larges et à plusieurs voies dans la ville. C'est cool la première, la deuxième année. Mais toutes les autres zones se dégradent: il n'y a pas d'environnement accessible, les arbres sont abattus, il y a plus de voitures, il n'y a pas assez de parkings et l'environnement a déjà quitté la ville le long de ces routes. Dans 5 à 10 ans, des taxis autonomes et des hyperloops apparaîtront déjà dans la ville voisine, mais ici il n'y a encore que des routes lisses. Il est clair que c'est la route vers nulle part.
Nous ne devons pas permettre cela, nous devons regarder vers l'avenir. Par conséquent, nous mesurons le temps que nous consacrons au développement et à l'assistance.

Le graphique montre que ces derniers mois, peu de temps a été consacré au développement. Pour moi, en tant que leader, c'est le signe que les gens sont nécessaires ou l'automatisation des processus. Selon le calendrier, je peux même calculer combien de mois toutes les ressources iront au support, quand nous ne serons pas à temps et qu'il y aura un effondrement.
Tâches bénéfiques
Nous nous sommes fixés un objectif et réfléchi aux paramètres, mais tant que nous ne commencerons pas à le mettre en œuvre avec nos mains, rien ne changera. Vous devez faire non seulement quelque chose, mais les tâches les plus rentables en termes de métriques et de temps.
Au fil du temps, tout se simplifie.
Deux tâches peuvent être comparées dans le temps: la première prendra une semaine, la seconde - 3 heures. Cela ne dépend pas du département d'où provient la tâche. Les mesures sont plus compliquées - elles sont nombreuses. Comment calculer quelle tâche est la plus rentable à faire: la première ou la seconde, si l'une optimise certaines métriques et l'autre l'autre?
Pour nous, nous l'avons décidé simplement - nous avons trouvé une unité universelle qui décrit toutes les tâches.
Notre unité universelle est le rouble . Nous évaluons le bénéfice de toute tâche par le profit qu'elle apportera et divisons par le temps qu'il faut pour terminer cette tâche. Nous évaluons donc chaque tâche en termes de métriques (roubles) et de temps.
Nos tâches trimestrielles.Dans la capture d'écran ci-dessous, les deux dernières colonnes indiquent combien d'argent nous gagnerons sur la tâche et combien de temps nous y consacrerons. L'équipe d'infrastructure gagne de l'argent en améliorant les conditions pour les développeurs, en optimisant les processus dans l'entreprise et le fonctionnement des serveurs. Nous passons à Docker non pas parce que c'est cool, mais parce que nous pensions que c'était rentable.

Mesures supplémentaires que nous mesurons.
Avance:
- % de soutien;
- % tâches avec PR;
- % de tâches fermées par jour.
Retardé:
- % du bénéfice de l'entreprise;
- pertes de chutes;
- avis des développeurs.
Ce n'est qu'une partie des mesures, nous en avons plus.
Tâches que nous n'évaluons pas
Nous n'évaluons pas les bugs. Si nous avons pris une sorte de système pour le soutenir et le soutenir, nous corrigeons les bugs simplement parce qu'ils ne devraient pas être là.
Il en va de même pour le support. Nous mesurons en général combien de temps est consacré au soutien, et nous ne permettons pas que ce soit trop. Nous évaluons chaque système dans son ensemble pour ses avantages ou ses inconvénients. Tâches plus faciles à réaliser ou très urgentes, nous n'évaluons pas. Tout ce dont j'ai parlé ne s'applique pas à eux - nous les faisons simplement.
Pourquoi il est utile et important d'évaluer les tâches
Prix et réalisations . Avec les affaires, vous devez toujours parler la langue de l'argent. Il ne comprend que l'argent. Si vous dites que vous avez un projet, vous le coupez, il rapportera 5 millions et demandera un million de prix par équipe - ils seront d'accord avec vous. Pour les entreprises, cela est compréhensible.
Embauche Ne proposez pas aux entreprises d'embaucher des employés et d'introduire de nouvelles technologies, mais offrez de gagner de l'argent ensemble. Alors il vous rencontrera sûrement. Au minimum, la discussion ne commencera pas le long du chemin "Avez-vous le temps ou n'avez-vous pas le temps, avez-vous besoin d'une personne ou pas?" La conversation ira dans une direction différente, et vous comprendrez à l'avance si ce projet en vaut le coût ou est-il plus facile de le jeter et d'en chercher un autre?
Optimisation des coûts . Si nous comprenons à quoi l'argent est dépensé, nous pouvons facilement le compter et optimiser les dépenses.
Décisions administratives . Cet article que j'ai réalisé récemment. L'infrastructure a commencé à se développer et j'ai décidé de diviser l'équipe en sous-commandes. La question s'est posée de savoir comment procéder précisément, dans le but de renforcer les effectifs. La solution est apparue sur la base de métriques - a divisé toutes les métriques de notre infrastructure en blocs, et chaque équipe est responsable de ses propres métriques. J'ai 3 sous-commandes. Pour chacun, le domaine de responsabilité commun est compréhensible et tous les participants comprennent ce dont ils sont personnellement responsables. Il s'agit d'un domaine de responsabilité compréhensible.
Pour le rendre cool
- Fixez-vous un objectif - nulle part sans lui.
- Divisez la cible en métriques et mesurez.
- Évaluez les tâches et terminez les plus cool.
Ensuite, vous aurez certainement du succès!
Lors de DevOps Conf 2019 , nous parlerons de «l'infrastructure en tant que code» séparément. L'avenir de l'approche, les modèles Terraform, le déploiement et la gestion de l'infrastructure BareMetal et Kubernetes sont quatre articles sur le sujet. Une conférence réunissant processus et technologie se tiendra à Moscou les 30 septembre et 1er octobre . L'horaire est prêt, vous pouvez étudier le programme , les résumés ou réserver des billets .
Abonnez-vous à la newsletter et à la chaîne Telegram et restez à l'écoute pour les nouvelles et les nouveaux rapports.