"Développer un système et non un logiciel"

DevOps est l'un des plus grands mots à la mode dans le monde de la technologie ces derniers temps car il offre une quantité énorme d'avantages à l'organisation pour raccourcir son cycle de vie de développement logiciel.

What is DevOps?

Il n'y a pas de définition unique ou de bonne réponse à la question «Qu'est-ce que DevOps»?

DevOps n'est pas un outil, une technologie ou un framework; c'est plus une philosophie et un concept. Il s'agit d'un ensemble de pratiques combinant le développement logiciel (Dev) et les opérations informatiques (Ops), ce qui contribue à raccourcir le cycle de vie du développement des systèmes et à fournir une intégration et une livraison continues avec une qualité logicielle élevée.

Si vous êtes un débutant, regardez ceci post d'introduction ou suivez ce cours en ligne - Docker pour un débutant absolu.

DevOps Benefits

  • Amélioration de la collaboration et de la communication
  • Livraison plus rapide des logiciels ou des produits
  • Réduction continue des coûts
  • Processus amélioré
  • Résolution plus rapide des problèmes

Dans le monde DevOps, il n'y a pas d'outil magique unique qui réponde à tous les besoins. Il s'agit de choisir le bon outil qui répond aux besoins d'une organisation. Découvrons-les.

Continuous Integration

Jenkins

Jenkins est l'un des outils DevOps open source les plus populaires pour prendre en charge l'intégration continue et la livraison via DevOps. Il permet une intégration continue et une livraison continue des projets, quelle que soit la plateforme sur laquelle les utilisateurs travaillent, à l'aide de divers pipelines de construction et de déploiement. Jenkins peut être intégré à plusieurs outils de test et de déploiement.

Travis CI

Travis CI est une plate-forme d'intégration continue distribuée et hébergée dans le Cloud, utilisée pour créer et tester des projets hébergés sur GitHub et Bitbucket. Il est configuré en ajoutant un fichier YAML.

Il peut être testé gratuitement pour des projets open source et moyennant des frais pour un projet privé.

Bambou

Bambou est l'un des produits populaires développés par Atlassian pour prendre en charge une intégration continue transparente. La plupart de ses fonctionnalités sont prédéfinies, ce qui signifie que nous n'avons pas besoin de télécharger différents plugins comme Jenkins. Il prend également en charge une intégration transparente avec d'autres produits Atlassian tels que JIRA et Bitbucket.

Hudson

Hudson est un logiciel libre écrit en JAVA et s'exécute dans un conteneur de servlets comme GlassFish et Apache Tomcat. Il offre la possibilité de déclencher votre suite d'automatisation avec tout changement dans le système de gestion source correspondant comme GIT, SVN, etc. Il prend également en charge tous les projets de base maven et Java.

TeamCity

TeamCity est une intégration continue basée sur un serveur et construit un outil de gestion développé par JetBrains.Il dispose d'une interface utilisateur (UI) simple et facile à utiliser et fournit la progression de la construction, des informations de construction détaillées et des informations d'historique pour toutes les configurations et projets.

CircleCI

CircleCI est disponible sous la forme de solutions basées sur le cloud et sur site pour une intégration continue. Il est facile et rapide de démarrer et de prendre en charge des configurations YAML légères et facilement lisibles.

Il existe d'autres outils CI que vous pouvez explorer ici.

Planning & Collaboration

JIRA

JIRA est l'un des outils de gestion de projet populaires développés par Atlassian, utilisé pour le suivi des problèmes, des bogues et des projets. Il permet à l'utilisateur de suivre l'état du projet et du problème. Il peut facilement être intégré avec d'autres produits Atlassian comme Bitbucket en plus d'autres outils DevOps comme Jenkins.

Slack

Slack est un outil de collaboration freemium basé sur le Cloud qui permet la communication et la collaboration d'équipe en un seul endroit. Cet outil peut également être utilisé pour partager des documents et d'autres informations entre les membres de l'équipe. Cela peut également être facilement intégré à d'autres outils tels que GIT, Jenkins, JIRA, etc.

Zoom

Zoom est une plateforme de conférence Web et de partage d'écran instantané. Vous pouvez demander à votre équipe de se joindre par audio ou vidéo.

Peu importe la taille de votre équipe, Zoom est capable d'accueillir jusqu'à 1000 destinataires dans une réunion en ligne.

Clarizen

Clarizen est un logiciel collaboratif et de gestion de projet qui facilite le suivi des problèmes, la gestion des tâches et la gestion du portefeuille de projets. Il est facile à personnaliser et dispose d'une interface utilisateur interactive conviviale.

Asanas

Asanas est une application mobile et Web conçue pour aider les équipes à organiser, suivre et gérer leur travail de manière efficace et efficiente. Il est utilisé pour suivre les tâches quotidiennes de l'équipe et prendre en charge la messagerie et la communication dans toute l'organisation.

Source Code Management

SVN

SVN est une version centralisée et un outil de contrôle de source développé par Apache. Il aide les développeurs à maintenir différentes versions du code source et à maintenir un historique complet de toutes les modifications.

Git

Git est un système de contrôle de version distribué qui vise la vitesse, l'intégrité des données, la prise en charge de distributions non linéaires workflows. Outre la gestion du code source, il peut également être utilisé pour suivre les modifications apportées à n'importe quel ensemble de fichiers.

bitbucket

bitbucket est une plate-forme d'hébergement Web développée par Atlassian. Bitbucket propose également un système de révision de code efficace et garde une trace de chaque changement dans le code. Il peut facilement être intégré à d'autres outils DevOps comme Jenkins, Bamboo.

GitHub

GitHub est une plateforme d'hébergement de code conçue pour le contrôle de version et la collaboration. Il offre toutes les fonctionnalités de contrôle de version distribué et de gestion du code source (SCM) de Git en plus de ses fonctionnalités.

Il offre des fonctionnalités de contrôle d'accès et de collaboration telles que le suivi des bogues, la création et la demande de fonctionnalités, la gestion des tâches, etc. pour le projet.

Build

fourmi

Fourmi Apache est un outil de compilation et de déploiement open-source basé sur Java. Il prend en charge le format de fichier XML. Il a plusieurs tâches intégrées nous permettant de compiler, assembler, tester et exécuter des applications Java.

Maven

Maven est un outil d'automatisation de construction principalement utilisé pour les projets java. Il contient un fichier XML qui décrit le projet logiciel en cours de construction, ses dépendances avec d'autres composants et modules externes, la séquence de construction, les répertoires et les autres plug-ins requis.

Grognement

Grognement est un outil de ligne de commande javascript qui permet de créer des applications et d'aider les développeurs à automatiser des tâches répétitives telles que la compilation, les tests unitaires, le linting de code et la validation, etc. C'est une bonne alternative pour des outils comme Make ou Ant.

gradle

gradle est un système d'automatisation de construction open source qui s'appuie sur les concepts d'Apache Maven et d'Apache Ant. Il prend en charge le langage de programmation Groovy approprié au lieu du fichier de configuration XML. Il prend en charge les builds incrémentiels en déterminant automatiquement les parties de la build à jour.

Configuration Management

Fantoche

Fantoche est un outil de gestion de configuration open source utilisé pour configurer, déployer et gérer de nombreux serveurs. Cet outil prend en charge le concept d'infrastructure sous forme de code et est écrit en Ruby DSL. Il prend également en charge la montée et la descente dynamiques des machines en fonction des besoins.

Chef

Chef est un outil de gestion de configuration open source développé par Opscode à l'aide de Ruby pour gérer l'infrastructure sur des machines virtuelles ou physiques. Il aide également à gérer une infrastructure complexe à la volée sur des machines virtuelles, physiques et cloud.

Ansible

Ansible est un outil open-source de gestion de configuration informatique, de fourniture de logiciels, d'orchestration et de déploiement d'applications. Il s'agit d'un outil simple mais puissant pour automatiser des applications informatiques à plusieurs niveaux simples et complexes.

SaltStack

SaltStack est un logiciel open source écrit en python et utilise le modèle push pour exécuter les commandes via le protocole SSH. Il prend en charge la mise à l'échelle horizontale et verticale. Il prend en charge les modèles YAML pour écrire tous les scripts.

Terraform

Terraform est un outil open-source pour la création, la modification, le déploiement et la gestion des versions d'une infrastructure de manière sûre et efficace. Il est utilisé pour gérer les fournisseurs de services existants et populaires ainsi que les solutions internes personnalisées. Il aide à définir l'infrastructure dans la configuration / le code et permettra à un utilisateur de reconstruire / modifier et de suivre les modifications de l'infrastructure de manière simple.

Vagabond

Vagabond est l'un des outils populaires pour la création et la gestion de machines virtuelles (VM). Il dispose d'un flux de travail facile à utiliser et configurable qui se concentre sur l'automatisation. Il aide à réduire le temps de configuration de l'environnement de développement, augmente la parité de production.

Continuous Security

Snyk

Intégrer Snyk dans le cycle de vie du développement pour trouver et corriger automatiquement les vulnérabilités de sécurité open source. Il prend en charge JS, .Net, PHP, NPM, jQuery, Python, Java, etc. et peut être intégré au codage, à la gestion du code, au CI / CI, au conteneur et au déploiement.

Snyk a la plus grande base de données de vulnérabilités open source.

invicti

Envoyercti analyse automatiquement votre application à la recherche de failles de sécurité et fournit des rapports classifiés exploitables afin que vous puissiez prendre des mesures en fonction de la priorité. Un scénario de sécurité DevOps consisterait à examiner le nouveau commit et à signaler le bogue directement dans le système de suivi comme Jira ou GitHub et à réanalyser une fois corrigé par le développeur. Vous le voyez s'intégrer à chaque étape du SDLC.

Testing

Sélénium

Sélénium est l'outil de test open source le plus populaire. Il prend en charge l'automatisation des tests sur divers navigateurs et machines d'exploitation. Il peut facilement être intégré avec des outils de gestion de test comme ALM, JIRA et aussi avec d'autres outils DevOps comme Jenkins, Teamcity, Bamboo, etc.

JUnit

JUnit est un framework de tests unitaires open source utilisé par les développeurs pour écrire et exécuter des cas de test répétables. Il prend en charge différentes annotations de test à l'aide desquelles tout développeur peut écrire un cas de test unitaire transparent. Il peut facilement être intégré à d'autres outils DevOps comme Jenkins, GIT, etc.

TestNG

TestNG est un framework de test Open source conçu et inspiré de Junit et Nunit. Il peut facilement être intégré avec le pilote Web sélénium pour configurer et exécuter des scripts de test d'automatisation. Il génère également différents rapports de test comme HTML ou XSLT.

Monitoring

Nagios

Nagios est un outil open source et l'un des outils les plus populaires pour la surveillance continue. Nagios aide à surveiller les systèmes, les applications, les services et les processus métier dans une culture DevOps. Il alerte les utilisateurs en cas de problème avec l'infrastructure et les alerte également lorsque le problème a été résolu.

Sensu

Sensu est un outil de surveillance open-source écrit en Ruby qui aide à surveiller les serveurs, les services, les applications et l'infrastructure cloud de manière simple et efficace. Il est facile à mettre à l'échelle afin que nous puissions facilement surveiller des milliers de serveurs.

Datadog

Datadog est un outil de mesure de serveur basé sur un agent. Il prend en charge l'intégration avec différents serveurs Web, applications et serveurs cloud. Son service de tableau de bord fournit divers graphiques sur la surveillance en temps réel de l'infrastructure.

WAPITI

WAPITI est une collection de trois produits open source - Elasticsearch, Logstash et Kibana qui sont tous développés, gérés et maintenus par la société Elastic. Il permet aux utilisateurs d'accéder aux données de n'importe quelle source, dans n'importe quel format, puis de rechercher, d'analyser et de visualiser ces données en temps réel.

Sematexte

Sematexte est une solution de surveillance complète qui vous offre une visibilité approfondie de votre infrastructure informatique. Il fournit une surveillance des performances frontales et back-end, une surveillance des journaux, une surveillance de la disponibilité et des performances des API et des sites Web, une surveillance de l'expérience utilisateur, etc.

Bien qu'il soit livré avec des tableaux de bord prêts à l'emploi et des règles d'alerte pour les applications et infrastructures populaires telles que les bases de données courantes et les magasins NoSQL, les serveurs cloud, le réseau, les conteneurs, etc., vous pouvez facilement personnaliser les tableaux de bord et les alertes en fonction de vos besoins de surveillance. Sematext propose des alertes puissantes avec détection des anomalies, détection des échecs de pulsation, planification et de nombreuses intégrations pour l'envoi de notifications d'alerte.

Grafana

Grafana est une plate-forme d'analyse open-source pour surveiller toutes les métriques de l'infrastructure, des applications et des périphériques matériels. Vous pouvez visualiser les données, créez et partagez un tableau de bord, configurez des alertes et collaborez. Vous pouvez extraire des données de plus de 30 sources, notamment Prometheus, InfluxDB, Elasticsearch, AWS CloudWatch, etc.

New Relic

New Relic est un produit d'analyse logicielle pour la surveillance des performances des applications (APM) qui fournit des données en temps réel et des tendances sur les performances des applications Web et le niveau de satisfaction que les utilisateurs finaux en ressentent. Il prend en charge le traçage des transactions de bout en bout et les affiche avec une variété de graphiques, de graphiques et de rapports à code couleur

Cloud Hosting

AWS

AWS est une plateforme d'hébergement Web créée par Amazon qui offre des solutions flexibles, fiables, évolutives, faciles à utiliser, évolutives et rentables. En utilisant cette plate-forme cloud, nous n'avons pas à nous soucier de la configuration de l'infrastructure informatique, qui prend généralement un temps raisonnable.

GCP

Google Cloud est un ensemble complet de services d'hébergement et de calcul dans le cloud public proposés par Google.it prend en charge une large gamme de services pour l'informatique, le stockage et le développement d'applications utilisant le matériel Google.

Azure

Azure est une plate-forme de cloud computing, conçue par Microsoft pour créer, déployer, tester et gérer des applications et des services via un réseau mondial de ses centres de données. Les services fournis par Microsoft Azure se présentent sous la forme de PaaS (Platform as a service) et IaaS (Infrastructure as a service).

Containerization/Orchestration

Docker

Docker est un outil pour créer, déployer et exécuter des applications à l'aide de conteneurs. Ce conteneur permet au développeur de conditionner une application avec tous les composants et sous-composants dont elle a besoin, tels que des bibliothèques et d'autres dépendances, et de tout expédier sous la forme d'un package unique. Ce travail sur le concept du navire et courir n'importe où.

Kubernetes

Kubernetes est un système d'orchestration de conteneurs open source conçu à l'origine par Google et qui est maintenant géré par la Cloud Native Computing Foundation. Il est utilisé pour automatiser le déploiement, la mise à l'échelle et la gestion des applications. Il fonctionne avec d'autres outils de conteneur, y compris Docker.

Découvrez d'autres outils d'orchestration de conteneurs ici.

Conclusion

J'espère que les outils énumérés ci-dessus vous aideront dans votre parcours DevOps.