Du 4 au 6 septembre, à Saint-Pétersbourg, dans la salle de conférence Selectel, un DevOps Slurm de trois jours aura lieu.

Nous avons construit le programme sur la base de l'idée que tout le monde peut lire les travaux théoriques sur DevOps, comme les manuels des outils, indépendamment. Seules l'expérience et la pratique sont intéressantes: une explication sur la façon de le faire est nécessaire et non nécessaire, et une histoire sur la façon dont nous le faisons.
Chaque entreprise, chaque administrateur ou développeur a son propre niveau DevOps. Certains abusent de Git, d'autres mettent en œuvre SRE. Le cours est organisé de telle sorte que chacun trouve quelque chose de pertinent qui peut être mis en œuvre ici et maintenant.
Nous commençons par Git, puis examinons le développement d'applications, l'interaction du code et de l'infrastructure, construisons CI / CD, décrivons l'infrastructure comme du code (IaC), testons la solution résultante, configurons la surveillance, collectons et étudions les journaux, et enfin arrivons à SRE: tournez la fiabilité dans une histoire mesurable et gérable.
Git
Maintenant, Geet n'est pas utilisé uniquement par celui qui a acheté le premier ordinateur portable hier. Il s'agit d'un outil trivial et omniprésent, et néanmoins, nous rencontrons souvent son utilisation abusive: de la poussée forcée vers le maître, et se terminant par la copie de fichiers de Gita vers le serveur via Ctrl-C, Ctrl-V.
Nous vous disons comment faire ce n'est pas nécessaire, comment le faire, comment le faire à Southbridge.
On passe la pratique: les bases de la Gita, le travail d'équipe.
Sujet n ° 1: Git Basics
- Commandes de base git init, commit, add, diff, log, status, pull, push
- Git flow, branches et tags, stratégies de fusion
- Travailler avec plusieurs repo à distance
Sujet n ° 2: Travail d'équipe avec Git
- Flux Github
- Fourche, télécommande, traction
- Conflits, sorties, encore une fois sur Gitflow et autres flux en relation avec les équipes
Le matériel est organisé de manière à ce que les administrateurs et les développeurs puissent immédiatement mettre en œuvre toutes les pratiques du travail.
Du point de vue de DevOps, un bon travail avec Git organise et automatise les processus de développement et d'administration, élimine un certain nombre de problèmes récurrents et améliore la productivité du travail.
Développeur DevOps
Nous regardons DevOps à travers les yeux du développeur: nous lançons l'environnement local, écrivons une application, configurons sa surveillance et sa journalisation, le testons localement, organisons le stockage des variables / secrets et la découverte de service, et surveillons le traçage (opentracing).
Thème №3: Travailler avec l'application d'un point de vue de développement
- Configuration de votre environnement local: meilleures pratiques
- Nous écrivons un microservice en Python (y compris les tests)
- Utilisation de docker-compose en développement
Thème n ° 4: Interopérabilité du code et de l'infrastructure
- Pratique de configuration
En conséquence, les développeurs verront comment le code doit envoyer des journaux, comment le tester, comment il sera débogué à l'avenir. Les administrateurs comprendront les besoins des développeurs: quelles erreurs se produisent dans le code, comment organiser les tests pour les développeurs et comment tester le projet vous-même.
À ce stade, la tâche principale de DevOps est résolue: la compréhension mutuelle et la collaboration entre les vierges et les ops sont construites. Il s'agit d'une étape clé pour passer du déploiement des tâches à un engagement responsable.
En conséquence, la vitesse et la qualité du travail augmentent.
CI / CD
L'automatisation moderne implique CI / CD. Nous commencerons par regarder l'automatisation manuelle: makefiles, githukes, scripts. Nous analyserons quand ces outils sont toujours pertinents et quand ils ne devraient pas être utilisés.
Examinons ensuite les meilleures pratiques du CI moderne en utilisant l'exemple de Gitlab.
Sujet n ° 5: CI / CD Introduction à l'automatisation
- Introduction à l'automatisation
- Outils (bash, make, gradle)
- Utilisation de git-hooks pour automatiser les processus
- Lignes d'assemblage de convoyeurs d'usine et leur application en informatique
- Un exemple de construction d'un pipeline «commun»
- Logiciel CI / CD moderne: Drone CI, BitBucket Pipelines, Travis, etc.
Sujet n ° 6: CI / CD: Travailler avec Gitlab
- Gitlab CI - Général
- Gitlab Runner, leurs types et leur application
- Gitlab CI, fonctionnalités de personnalisation, meilleures pratiques
- Étapes Gitlab CI
- Variables CI Gitlab
- Assemblage, test, déploiement
- Restrictions de contrôle et d'exécution: uniquement, lorsque
- Travailler avec des artefacts
- Modèles à l'intérieur de .gitlab-ci.yml, réutilisant des actions sur différentes parties du pipeline
- Inclure - sections
- Gestion centralisée de gitlab-ci.yml (un fichier et push automatique vers d'autres référentiels)
Le travail conjoint des administrateurs et des développeurs passe à un nouveau niveau: l'administrateur écrit le modèle de CI et les développeurs le corrigent en construisant leur CI indépendamment de l'administrateur.
La dépendance des développeurs vis-à-vis des administrateurs est réduite, la quantité de travail manuel est réduite, le problème de "la seule personne qui sait travailler avec le fichier de maquillage" est éliminé. Les déploiements se produisent de manière fiable et rapide.
IaC
Le sujet d'Infrastructure as Code sur l'exemple de Terraform le dira à l'administrateur du cloud Selectel Alexei Stepanenko. Il montrera comment déployer et mettre à l'échelle des serveurs rapidement et automatiquement, comment emballer automatiquement des images, comment utiliser des modèles de configuration pour recevoir immédiatement des machines personnalisées.
La personne qui a créé des milliers de solutions IaC vous dira comment bien faire et comment le faire.
La solution Cloud Selectel Minimal Edit est adaptée aux clouds Google et Amazon.
Un employé de Southbridge, Nikolai Mesropyan, utilisera Ansible comme exemple pour montrer comment déployer une application fonctionnelle sans interruption et tester ses fonctionnalités.
Si vous gérez l'infrastructure à la main (configurez les serveurs, installez les bibliothèques, les packages selon les besoins), lorsque vous essayez de générer une copie de l'environnement, vous devrez vous souvenir et reproduire toutes vos actions. Cette tâche prend facilement 3-5 jours. Travailler avec l'infrastructure en tant que code garantit que vous disposez d'une description à jour de l'environnement qui peut être déployé en quelques minutes.
Nikolay vous dira comment écrire des playbooks, quelles erreurs se produisent, pourquoi parfois les playbooks fonctionnent lentement ou pas comme prévu. C'est l'expérience de nombreuses années d'utilisation d'IaC à Southbridge.
Sujet n ° 7: Infrastructure en tant que code
- IaC: une approche de l'infrastructure en tant que code
- Fournisseurs de cloud en tant que fournisseurs d'infrastructure
- Outils d'initialisation du système, assemblage d'images (packer)
- IaC sur l'exemple de Terraform
- Stockage de configuration, collaboration, automatisation des applications
- Entraînez-vous à créer des livres de jeu ansibles
- Idempotence, déclarativité
- IaC Ansible
- Base de données en tant que basculement Code / PostgreSQL
L'infrastructure devient déclarative et idempotente.
L'administrateur apprend à gérer une infrastructure complexe: créer rapidement de nouveaux environnements, maintenir l'unité de tous les environnements, voir l'historique des changements, ce qui est critique lorsque plusieurs équipes travaillent sur un projet.
Le développeur peut étudier l'infrastructure, déployer indépendamment son environnement.
Bonus de section - création et configuration d'un cluster de bases de données PostgreSQL tolérant aux pannes. Nous donnerons le playbook fini que nous utilisons à Southbridge, vous déploierez un cluster sur le stand de formation et vous pourrez utiliser cette solution dans votre entreprise.
Tests et surveillance des infrastructures
L'automatisation vous permet de déployer l'erreur immédiatement sur un millier de serveurs. Chaque changement nécessite des tests. D'un autre côté, le test manuel prend tellement de temps qu'il annule les avantages de l'automatisation.
Nous montrerons en pratique comment écrire des tests de rôle. En conséquence, vous pouvez écrire des tests pour votre entreprise. Vous n'avez plus besoin de vous souvenir des réglages effectués, de les décrire dans des tests et de vérifier automatiquement que toutes les décisions et béquilles passées sont en place.
Nous apprendrons ensuite à ajouter automatiquement tous les nouveaux serveurs à la surveillance. Envisagez de surveiller séparément l'infrastructure et les applications. Nous montrons de mauvaises et bonnes pratiques.
Sujet n ° 8: tester l'infrastructure
- Test et intégration continue avec Molecule et Gitlab CI
- Application vagabonde
Sujet n ° 9: Surveillance de l'infrastructure avec Prometheus
- Pourquoi la surveillance est nécessaire
- Types de surveillance
- Notifications dans le système de surveillance
- Comment construire un système de surveillance sain
- Des avis lisibles par l'homme, pour tous
- Bilan de santé: que rechercher
- Automatisation basée sur les données de surveillance
Une mauvaise surveillance est le manque de surveillance. Peu importe pour les entreprises que la page principale d'une boutique en ligne soit disponible si le mode de paiement donne une erreur.
Les développeurs et les administrateurs sont également impliqués dans la configuration de la surveillance et du dépannage. De plus, traditionnellement, les tâches de surveillance incombent aux administrateurs. Notre cours montrera aux développeurs le rôle qu'ils jouent dans la création d'une surveillance efficace. Les administrateurs recevront les meilleures pratiques de Southbridge. En conséquence, le nombre de pertes causées par des plantages et des freins du site ou de l'application diminuera rapidement.
Bonus de section: automatisation basée sur la surveillance. Par exemple, la surveillance signale qu'une charge est arrivée sur le site et la mise à l'échelle des serveurs Web démarre automatiquement.
Journalisation
La principale erreur en travaillant avec les journaux est que les administrateurs et les développeurs les regardent directement sur les serveurs. Si vous avez plus d'un serveur, c'est long. Ce n'est pas laïque: le développeur entre sur le serveur où il ne devrait pas être.
DevOps nécessite une collecte, un traitement et une analyse centralisés des journaux.
Sujet n ° 10: Journalisation des applications avec ELK
- Les principales applications et fonctionnalités d'Elastic (recherche, stockage, fonctionnalités de mise à l'échelle, flexibilité de configuration)
- Présentation de kibana (fonctionnalités principales, langage de requête, gestion de tableau de bord, cartographie)
- Aperçu des produits élastiques et de leur application
- Collecte de métriques dans APM (traçage d'application)
- Extras: Nouvelle revue de produit - SIEM
La mise en œuvre de cette approche fera des journaux un outil simple et compréhensible pour l'analyse, la configuration et l'ajustement des applications et de l'infrastructure.
SRE
Et nous arrivons au sujet que Southbridge est en train de regarder et pour lequel d'autres orateurs veulent rester le dernier jour de Slurm. Nous sommes ravis qu'Ivan Kruglov de Booking.com ait accepté de le lire.
Un projet vit dans le monde réel, où la fiabilité n'est jamais absolue, et chaque solution coûte de l'argent.
Qu'est-ce qu'un SLA pour un projet complexe? Disons comment évaluer que le site est disponible, mais les images sont chargées avec un retard. Quelles sont les métriques SLA, où les filmer, comment les filmer?
Comment installer SLA? Comment leur résister?
Thème # 11: SRE
Définition de SLA, SLO, Error Budget et autres termes effrayants du monde SRE
SRE: S'entraîner à surveiller SLI et SLO
SRE: erreur de pratique budgétaire
SRE: Gestion des interruptions et de la charge opérationnelle (apigateway, service mesh, bracket brackets)
Les entreprises veulent le SRE. Au moins au niveau le plus simple: prendre un serveur de sauvegarde ou augmenter à partir de la sauvegarde? Une base de données ou un cluster? La protection DDoS est-elle proactive ou uniquement au moment de l'attaque?
Les administrateurs ne sont pas satisfaits de l'histoire selon laquelle le «site fonctionne» lorsqu'un client l'appelle et informe que le bon de commande ne s'ouvre pas.
Par conséquent, il est important pour un ingénieur DevOps de comprendre au moins superficiellement le SRE afin de parler adéquatement avec l'entreprise de ses besoins.
Résumé
Pendant Slurm DevOps, les administrateurs et les développeurs apprendront:
- fonctionner correctement avec Git;
- organiser le développement local;
- configurer (administrateurs) et utiliser (développeurs) CI / CD;
- travailler avec l'infrastructure comme un code;
- tester l'infrastructure;
- surveiller l'infrastructure et l'application;
- configurer la journalisation;
- comprendre, et idéalement - utiliser SRE.
Pour les lecteurs attentifs - avec le code promo habrapost, une remise de 15%.
Pour tous les points, nous préparons des pratiques et des outils. Ainsi, chaque participant à son retour de Slurm pourra amener son entreprise au niveau supérieur de DevOps.
Pour les entreprises, cela signifie une administration et un développement moins chers, des temps d'arrêt réduits, une fiabilité accrue, une livraison plus rapide des fonctionnalités et l'élimination des bogues.