Projet DevOps : Gestion de projet agile avec CI/CD

Projet Capstone :

Microservice de gestion des comptes clients avec DevOps

Ce projet Capstone a impliqué la gestion agile de projet, le développement et le déploiement d'un microservice de gestion des comptes clients en appliquant les meilleures pratiques DevOps. En suivant une approche Agile, j'ai créé et exécuté des plans de sprint pour structurer le développement. J'ai mis en œuvre le développement piloté par les tests (TDD) pour construire une API RESTful avec Flask et PostgreSQL, assurant ainsi une couverture de test élevée. L'intégration continue (CI) a été réalisée via GitHub Actions et j'ai renforcé les pratiques de codage sécurisé. Le microservice a été conteneurisé avec Docker et déployé sur un cluster Kubernetes/OpenShift, en tirant parti des services IBM Cloud. Enfin, l'automatisation du déploiement continu (CD) a été réalisée à l'aide d'un pipeline Tekton, permettant des déploiements sans faille avec une intervention manuelle minimale. Ce projet a été réalisé dans un environnement IDE Cloud Docker éphémère, donc l'application déployée n'est pas disponible en ligne.

Modules Principaux :

Module 1 : Création et exécution des plans de sprint
J'ai commencé par planifier les sprints dans un cadre Agile pour structurer le développement du microservice. J'ai configuré un dépôt GitHub et un tableau Kanban pour gérer le flux de travail du projet. J'ai créé des user stories et un backlog de produit bien structuré, en hiérarchisant les tâches selon les méthodologies Agile.

Module 2 : Développement d'un service RESTful avec Test-Driven Development (TDD)
J'ai développé un microservice RESTful en utilisant Flask, en suivant les principes du développement piloté par les tests (TDD). J'ai mis en place des opérations CRUD (Créer, Lire, Mettre à jour, Supprimer, Lister) pour gérer les comptes clients, assurant ainsi une couverture de test supérieure à 95% avec nosetests.

Module 3 : Ajouter l'intégration continue (CI) et la sécurité au dépôt
J'ai ajouté l'intégration continue (CI) pour automatiser le processus de construction et de test, tout en renforçant la sécurité du microservice. J'ai utilisé GitHub Actions pour créer un pipeline CI déclenché par les pull requests et ajouté des en-têtes de sécurité et des politiques CORS pour sécuriser le service.

Module 4 : Déployer l'application sur Kubernetes
Ce module a consisté à conteneuriser le microservice et à le déployer sur un cluster Kubernetes/OpenShift. J'ai créé des manifests Kubernetes pour définir la configuration du déploiement et du service, puis automatisé le processus de déploiement avec Tekton, réduisant ainsi les erreurs manuelles.

Module 5 : Création d'un pipeline de déploiement continu (CD)
Le dernier module a porté sur la création d'un pipeline de déploiement continu pour automatiser le déploiement vers Kubernetes. J'ai utilisé Tekton pour automatiser l'ensemble du processus, de l'exécution des tests à la construction des images et au déploiement sur OpenShift.

Description

Contexte:

Ce projet de capstone a consisté à développer et déployer un microservice de gestion des comptes clients en suivant les meilleures pratiques DevOps. En utilisant une approche agile, j'ai structuré le développement à travers des sprints et mis en place une intégration continue (CI) ainsi qu'une automatisation du déploiement continu (CD) avec Tekton. Le microservice a été conteneurisé avec Docker et déployé sur un cluster Kubernetes/OpenShift, en utilisant les services IBM Cloud. Ce projet m'a permis d'appliquer des compétences en développement, déploiement, et automatisation dans un environnement cloud.

Langages de Programmation: Python, YAML, SQL, Shell Scripting (Bash)

Outils: GitHub, GitHub Actions, Flake8, PostgreSQL, Docker, Kubernetes, OpenShift, Tekton, oc CLI (OpenShift Command-Line Interface)

Technologies Utilisées:

  • Python 3.9
  • Flask
  • PostgreSQL
  • Docker
  • Kubernetes
  • OpenShift
  • Tekton
  • YAML
  • nosetests

Compétences Acquises :

  1.  Gestion de projet Agile : Planification de sprints, gestion du backlog, et suivi des tâches avec GitHub et Kanban.
  2. Développement d'API RESTful avec Flask : Création d'un microservice pour la gestion des comptes clients avec Flask, en appliquant les principes de TDD.
  3. Test-Driven Development (TDD) : Mise en œuvre de tests unitaires automatisés avec nosetests, assurant une couverture de test élevée.
  4. Intégration continue (CI) : Configuration de GitHub Actions pour l'automatisation des tests, du linting et de la validation du code.
  5. Sécurisation des services web : Application des headers de sécurité et gestion des CORS avec Flask-Talisman et Flask-CORS.
  6. Containerisation avec Docker : Création et déploiement d'images Docker pour le microservice et la base de données PostgreSQL.
  7. Déploiement sur Kubernetes et OpenShift : Déploiement de l'application sur un cluster OpenShift via des manifestes Kubernetes.
  8. Automatisation du déploiement avec Tekton : Création de pipelines CI/CD pour l'intégration et le déploiement continus.
  9. Gestion de version avec Git : Utilisation de Git pour le versionnage du code et la gestion des branches et pull requests.
  10. Pratiques DevOps : Automatisation du cycle de vie du développement avec des pipelines CI/CD pour des déploiements plus rapides et fiables.
Sierra Ripoche
Résumé de la politique de confidentialité

Ce site utilise des cookies afin que nous puissions vous fournir la meilleure expérience utilisateur possible. Les informations sur les cookies sont stockées dans votre navigateur et remplissent des fonctions telles que vous reconnaître lorsque vous revenez sur notre site Web et aider notre équipe à comprendre les sections du site que vous trouvez les plus intéressantes et utiles.