Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Notes diverses et variées #8

Closed
5 tasks done
sylvainmetayer opened this issue Nov 15, 2018 · 8 comments
Closed
5 tasks done

Notes diverses et variées #8

sylvainmetayer opened this issue Nov 15, 2018 · 8 comments

Comments

@sylvainmetayer
Copy link
Owner

sylvainmetayer commented Nov 15, 2018

Comment l'automatisation peut permettre de réduire les erreurs humaines dans la mise en oeuvre d'une application ?

Session2018_Referentiel_Memoire_Prof_5eAnnee.pdf

Description

Les projets informatique sont de plus en plus nombreux mais leur fiabilité n'est pas toujours optimale. Combien de projet sont encore déployé manuellement car aucune automatisation n'est présente sur le projet ? En plus d'une perte de temps, parfois importante, cela engendre un stress au niveau des équipes, qui à chaque livraison redoute les régressions qui pourraient survenir ou encore les bugs de déploiement.
L'automatisation peut également permettre d'améliorer l'onboarding d'un nouveau développeur sur un projet. Il n'est en effet par rare de voir des projets ou la configuration de l'environnement requiert à elle seule plusieurs jours, sans que le développeur puisse vraiment commencer à travailler.
Également, l'automatisation va permettre d'améliorer la fiabilité et la confiance des développeurs et des clients dans le projet, puisque des tests automatisés ainsi qu'une chaine d'industrialisation complètement automatisée permet ainsi de déployer avec confiance une application.

Mots clés

  • Déploiement continu
  • intégration continue
  • tests
  • qualité
  • automatisation

Bibliographie

Proposition de plan

  1. Introduction
    • Historique (mode opératoire suivi religieusement, script expect, ...)
    • Contexte
  2. Pourquoi automatiser
    a. erreur développeur
    b. fiabilité
    c. Preuve de qualité
  3. Etat de l’art
    a. Comment déployait-on avant ?
    b. Solutions existantes
    - Chef, puppet, ansible, jenkins, travis, ....
  4. Automatiser un projet
    a. Localement, en développement
    > Linter, docker, ...
    b. Intégration continue
    c. Déploiement continu
  5. Bénéfices constatés
    a. KPI
    b. Confiance dans la livraison
  6. Limites de la solution
    a. Sur qualité , trop d'optimisation
  7. Conclusion

Exemple à utiliser lors du mémoire provenant de projets réalisés en entreprise

  • Application sur Nouvelle Aquitaine
  • Application sur BV
@sylvainmetayer sylvainmetayer added the enhancement New feature or request label Nov 15, 2018
@sylvainmetayer sylvainmetayer self-assigned this Nov 15, 2018
@sylvainmetayer sylvainmetayer added question Further information is requested help wanted Extra attention is needed and removed enhancement New feature or request labels Dec 3, 2018
@sylvainmetayer sylvainmetayer changed the title Préparer un plan Préparation de la fiche synthèse Dec 13, 2018
@sylvainmetayer sylvainmetayer removed the help wanted Extra attention is needed label Dec 14, 2018
@sylvainmetayer sylvainmetayer removed question Further information is requested to do labels Jan 3, 2019
@sylvainmetayer sylvainmetayer pinned this issue Jan 3, 2019
@sylvainmetayer sylvainmetayer removed their assignment Jan 16, 2019
@sylvainmetayer
Copy link
Owner Author

Problématique

Comment l'automatisation peut permettre de réduire les erreurs humaines dans la mise en oeuvre d'une application ?

Notes diverses

scalabilité déploiemnt infra ... A la carte, je choisis un peu ce que je veux
Avec blabla du développement a l'intégration continue, le reporting de bug automatique, ....

Idée : comment l'automatisation peut permettre de réduire les erreurs humaines dans le processus de développement/dans la chaine d'instrialisation dans la mise en oeyvre d'une nouvelle solution en production ?

Idées selon le document national

  • 1.1 – Management des S.I

    • Identifier et analyser les besoins de l’entreprise au niveau organisationnel et système d’information
    • Elaborer un schéma directeur à partir d’orientations stratégiques

      L'automatisation peut permettre de relancer rapidement une activité défaillante (SLA / PRA / PCA)

    • Mettre en oeuvre des composants de management des processus (Business Process Management) en utilisant un
      logiciel de pilotage des gestions des flux
    • Modéliser et cartographier les processus métier en utilisant une méthode
    • Assurer la confidentialité et l’intégrité des échanges en utilisant les outils de cryptographie et les certificats tiers de confiance
    • Elaborer une politique de sécurité pour l’utilisation des outils nomades tels que les smartphones, tablettes
    • Mettre en oeuvre une politique de sécurité en utilisant des normes telles ISO27000
  • 1.2 – Management des Ressource

    • Superviser et piloter une équipe projet

      Je suis moi même une équipe, je suis mon propre chef, je travaille en autonomie et je détermine les tâches à prioriser, estimation des tâches, ...

    • Coordonner une équipe projet et intégrer la culture managériale de l’entreprise pour la faire partager
    • Identifier les leviers d’économie à actionner pour améliorer les processus Qualité
    • Elaborer des propositions d’amélioration de la Qualité en s’appuyant sur les principes du Lean Management
    • Utiliser de façon adéquate un contrat de services en relation avec un prestataire informatique
    • Identifier les tactiques et stratégies pour choisir un prestataire tout en évaluant les risques pour l’entreprise
  • 1.3 – Ethique & Evolution du S.I.

    • Déterminer les indicateurs green IT pour les utiliser dans la gestion informatique quotidienne
    • Evaluer les impacts des solutions informatiques en termes de responsabilités sociales et écologiques
    • Evaluer les impacts au sein du S.I. des solutions innovatrices proposées

      Métrique - KPI - temps de déploiement / nombre d'incident / uptime / Nombre de build KO / Nombre de build OK ... permettent de définir l'impact des services mis en place sur le S.I

    • Rechercher et proposer des solutions innovatrices pour anticiper les évolutions et attentes de son secteur d’activité
  • 1.4 – Stratégie financière :

    Le fait d'automatiser des processus permet de gagner du temps, et par conséquent de l'argent et de consacrer ses efforts à d'autres taches qui peuvent apporter de la valeur métier.

    Le coût horaire libéré, calculer à partir de combien de temps il est rentable.

    • Par exemple, une tache à 3000€ qu'on automatise et qui ne coute plus que 300€ est rentable en 10 semaines.
    • Lire et interpréter les indicateurs financiers d’un tableau de bord pour piloter son activité
    • Analyser un bilan et un compte de résultats pour mettre en place des indicateurs financiers
  • 2.1 – Management de Projet

    • Participer à la rédaction du cahier des charges d’un service à produire
    • Mettre en place une structure projet adéquate en analysant les besoins utilisateurs
    • Conduire un projet dans un contexte de forte contrainte de temps et produire les documents de suivi de son avancement
    • Planifier un portefeuille de projets pour en assurer la coordination et les interdépendances
    • Participer à la présentation du cahier des charges d’un service à produire
    • Extraire et traiter l'information pertinente vers les publics ciblés
  • 2.2 – Méthode de Gestion de Projet

    • Gérer un projet en utilisant les principes de l’agilité de la méthode SCRUM
    • Mettre en place des indicateurs de mesure propres aux méthodes agiles
  • 3.1 – Gestion des données

    • Concevoir et utiliser la rétro-conception des bases de données

      Développement avec des CMS qui utilisent des bases de données (MySQL) / Projet Symfony + MySQL.

    • Interroger une base de données au sein d’un système de gestion de bases de données client-serveur en utilisant le langage SQL
    • Maintenir et réutiliser du code au sein d’une base de données en développant des procédures stockées
    • Déployer et administrer une base de données

      Automatisation de la création de la base de données (projet club sportif) et de la restauration des données

    • Utiliser une méthode de sauvegarde et de restauration d’une base de données appropriée

      mysqldump + import lors de la restauration

    • Sécuriser une base de données en utilisant le langage SQL du Système de Gestion de Bases de données

      injection sql, reqûetes préparée / pdo

  • 3.2 – Business Intelligence

    • Définir une architecture Business Intelligence
    • Modéliser un entrepôt de données en structurant différentes sources hétérogènes pour en faire une source homogène
    • Modéliser un datamart
    • Extraire des connaissances (Data Mining)
    • Assurer la qualité des données en utilisant les outils de gestion de la Qualité de données (Data Quality Management)
  • Bloc 4 – Etudes & Développement

    • Développer des composants logiciels en environnement objet

      Drupal 8 / Symfony

    • Développer et déployer des solutions applicatives mobiles
    • Développer des solutions applicatives pour systèmes embarqués
    • Réaliser des tests unitaires en utilisant des règles d’erreur et exceptions

      Tests automatisés unitaires (phpunit) permettant à la plateforme d'intégration continue de vérifier la conformité du code par rapport aux attentes métier.

    • Concevoir et exécuter des procédures de tests systématiques

      Intégration dans gitlab-ci / jenkins

    • Gérer l'Intégration continue en utilisant des outils d’intégration

      Intégration dans gitlab-ci / jenkins

    • Elaborer des documents techniques décrivant un produit, un service ou une application

      Rédaction de SFD

    • Elaborer des modèles pour des publications techniques partagées
  • Bloc 5 – Infrastructure Systèmes & Réseaux

    • Mettre à disposition une architecture système utilisant un environnement Unix ou Windows
    • Concevoir l’infrastructure d’une plateforme de virtualisation en utilisant des technologies d’hyper virtualisation

      Docker

    • Mettre en oeuvre une architecture réseaux utilisant les techniques de redondances et d’interconnexion réseaux
    • Maintenir en Conditions Opérationnelles en utilisant un logiciel de gestion de la haute disponibilité
    • Mettre en oeuvre et suivre un projet de gestion des identités et des accès (Identity Access Management – IAM)
    • Mettre en oeuvre des dispositifs de surveillance et d’analyse de données en temps réel

      Monitoring : monit pour monitorer l'état d'application ? (perso)

    • Définir une politique de qualité de services informatiques en utilisant les normes et référentiels
  • Bloc 6 – Management & Conseil ERP

    Facteur humaiin : Le temps libéré par l'automatisation des tâches peut permettre de souder les liens d'une équipe et d'améliorer les relations de cette dernière. Cela libère du temps pour du team building par exemple.

    • Un sujet technique qui rapproche en terme d'humain
    • Mettre en place une structure projet adéquate comprenant la maitrise d’ouvrage (MOA), la maitrise d’œuvre (MOE) tout en analysant les besoins utilisateurs
    • Conduire un projet dans un contexte de forte contrainte de temps et produire les documents de suivi de son avancement
    • Analyser et déterminer les besoins métier utilisateurs pour mettre en place une solution ERP
    • Piloter le changement lors du déploiement d’une solution ERP
    • Identifier, évaluer et gérer les risques liés à l’implémentation d’un ERP
    • Développer une solution ERP via le paramétrage en utilisant un progiciel

Autres

Technique

  • Parler de l'automatisation technique et de comment l'organisation projet doit évoluer lorsqu'elle est mise en oeuvre ?

Comment faire en sorte que ça marche dans la durée ? Des controles / supervisons périodique afin de checker que tout va bien.

  • Workflow : savoir ce qui est automatisé, comment c'est mis en oeuvre ,documentation des outils, ...

Faire en sorte que l'automatisation ne casse pas et que l'on en tire quelques chose, que l'on soit nouvel arrivant sur le projet, ou développeur déjà présent sur le projet.

  • Scalabilité : Docker / provisionner de nouveaux serveurs rapidement avec Ansible par exemple.

  • Déploiement : chaine de déploiement (dev/test/inte/preprod/prod) avec chacune ses spécificités

    Exemple :

    • en dev, on souhaite des logs direct dans la console, en prod on les mets dans un fichier de log.
    • en dev, on veut le mode debug, en prod on le désactive.
  • Reporting de bug

  • chaine d'erreur au plus court (retrouver image xdcd sur le temps pour automatiser une tache)

  • différence entre intégration continue et tests unitaire (image du lavabo + séchoir à mains côte à côte). Les test unitaires vont tester la cohérence d'une partie du système tandis que l'intégration va tester la cohérence de l'échange entre divers systèmes / fonctions.

  • historique (déploiement manuel, script expect, outil de déploiement, ...)

Sécurité

  • Gestion des tokens, gestion des comptes.
  • Un compte admin ou plusieurs sous compte avec des droits limités ? En cas d'intrusion, un attaquant a moins de chance de corrompre tout le système.
  • Infra : restricition d'accès (htaccess / firewall / ..?)

@sylvainmetayer
Copy link
Owner Author

@sylvainmetayer
Copy link
Owner Author

sylvainmetayer commented Mar 19, 2019

  • Dette techniques
  • coomunication dev / operation
  • notion de cout
  • notion d'empilement, de "unplanned work" qui prends le temps de travail,
  • monde idéal : plusieurs déploiement par jour, de façon transparente, ...
  • rapidité des tests à une importance pour un retour rapide aux dev
  • automatisation => déploiement de features pohr une portion des users, interne, puis petit à petit, on aggrandit et on corrige selno les retours (test A/B)
  • => moins de stress
  • amélioration continue
  • page32 DevopsHandbook : idées de KPI
  • 3 ways : Flow, Feed back , continuous learning and experimentation
  • continuois deploiement => Infra as Code
  • Lead Time vs Processing time : temps de traitement total vs temps de travail, => KPI
  • lead time long => monolithe, bnombreuse validation, ...
  • Réduire le lead time d'un sprint => moins d'items dans le backlog
  • Page 12 Premiere partie DevOps Handbook, image intéressante.

@sylvainmetayer
Copy link
Owner Author

sylvainmetayer commented Mar 20, 2019

  • Figure 7
  • Page 22, très intéressante sur les Pré-requis. Avec liberté donnée pour pouvoir atteindre objectifs et pré-requis à l'automatisation.
  • code review , rejoins détecter au plus tôt.
  • Image page 39 => entreprise avec lesquelles ils eset possible de mettre devops vs celle compliquée

@sylvainmetayer sylvainmetayer changed the title Préparation de la fiche synthèse Notes diverses et variées Mar 21, 2019
@sylvainmetayer
Copy link
Owner Author

BV entrerpise de certification, dans l'industrie

@sylvainmetayer
Copy link
Owner Author

sylvainmetayer commented Apr 10, 2019

  • DevOps Handbook :

  • p52 : choix du flux de la valeur sur laquelle travailler

  • => réduire cycle livraison

  • p59 permet de voir les différents réactions face à la mise en place d'un mouvement devops / agile.

  • - Ceux qui vont le vouloir

  • - Ceux qui vont suivre une fois mise en place

  • - Ceux qui sont réfractaire

  • Conway Law

  • Idée de transformation d'entreprise : Etsy ? (p80)

@sylvainmetayer
Copy link
Owner Author

sylvainmetayer commented Jun 4, 2019

Bibliographie

Exemples à utiliser lors du mémoire provenant de projets réalisés en entreprise

  • Application sur Nouvelle Aquitaine

  • Application sur BV

  • scalabilité, déploiement, infra ... Du développement a l'intégration continue, le reporting de bug automatique, ....

  • L'automatisation peut permettre de relancer rapidement une activité défaillante (SLA / PRA / PCA)

  • Je suis moi même une équipe, je suis mon propre chef, je travaille en autonomie et je détermine les tâches à prioriser, estimation des tâches, ...

  • Métrique - KPI - temps de déploiement / nombre d'incident / uptime / Nombre de build KO / Nombre de build OK ... permettent de définir l'impact des services mis en place sur le S.I

  • Le fait d'automatiser des processus permet de gagner du temps, et par conséquent de l'argent et de consacrer ses efforts à d'autres taches qui peuvent apporter de la valeur métier.

  • Le coût horaire libéré, calculer à partir de combien de temps il est rentable. - Par exemple, une tache à 3000€ qu'on automatise et qui ne coute plus que 300€ est rentable en 10 semaines.

  • Développement avec des CMS qui utilisent des bases de données (MySQL) / Projet Symfony + MySQL.

  • > Automatisation de la création de la base de données (projet club sportif) et de la restauration des données

  • Utiliser une méthode de sauvegarde et de restauration d’une base de données appropriée > mysqldump + import lors de la restauration

  • Sécuriser une base de données en utilisant le langage SQL du Système de Gestion de Bases de données > injection sql, reqûetes préparée / pdo

  • Développer des composants logiciels en environnement objet> Drupal 8 Symfony

  • Réaliser des tests unitaires en utilisant des règles d’erreur et exceptions> Tests automatisés unitaires (phpunit) permettant à la plateforme d'intégration continue de vérifier la conformité du code par rapport aux attentes métier.

  • Concevoir et exécuter des procédures de tests systématiques/Gérer l'Intégration continue en utilisant des outils d’intégration > Intégration dans gitlab-ci / jenkins

  • Rédaction de SFD

  • Concevoir l’infrastructure d’une plateforme de virtualisation en utilisant des technologies d’hyper virtualisation > docker

  • Mettre en oeuvre des dispositifs de surveillance et d’analyse de données en temps réel > Monitoring : monit pour monitorer l'état d'application ? (perso)

  • Management> Facteur humain : Le temps libéré par l'automatisation des tâches peut permettre de souder les liens d'une équipe et d'améliorer les relations de cette dernière. Cela libère du temps pour du team building par exemple. Un sujet technique qui rapproche en terme d'humain

  • > Comment faire en sorte que l'automatisation marche dans la durée ? Des controles / supervisons périodique afin de checker que tout va bien.

  • - Workflow : savoir ce qui est automatisé, comment c'est mis en oeuvre ,documentation des outils, ... Faire en sorte que l'automatisation ne casse pas et que l'on en tire quelques chose, que l'on soit nouvel arrivant sur le projet, ou développeur déjà présent sur le projet.

  • Scalabilité : Docker / provisionner de nouveaux serveurs rapidement avec Ansible par exemple.

  • Déploiement : chaine de déploiement (dev/test/inte/preprod/prod) avec chacune ses spécificités

    Exemple :

    • en dev, on souhaite des logs direct dans la console, en prod on les mets dans un fichier de log.
    • en dev, on veut le mode debug, en prod on le désactive.
  • Reporting de bug

  • chaine d'erreur au plus court (retrouver image xdcd sur le temps pour automatiser une tache)

  • différence entre intégration continue et tests unitaire (image du lavabo + séchoir à mains côte à côte). Les test unitaires vont tester la cohérence d'une partie du système tandis que l'intégration va tester la cohérence de l'échange entre divers systèmes / fonctions.

  • Gestion des tokens, gestion des comptes.

  • Un compte admin ou plusieurs sous compte avec des droits limités ? En cas d'intrusion, un attaquant a moins de chance de corrompre tout le système.

  • Infra : restricition d'accès (htaccess / firewall / ..?)

  • https://dev.to/conw_y/towards-zero-bugs-1bop

  • https://github.com/x3rus/training/blob/master/devops/01-introduction.md

  • https://www.redhat.com/fr/topics/automation/whats-it-automation

  • https://dev.to/kylegalbraith/the-benefits-you-need-to-know-about-infrastructure-as-code-8c4

  • DevOps assessment - how to measure your maturity https://www.linkedin.com/pulse/devops-assessment-how-measure-your-maturity-r%C3%A9my-vannarien

  • https://www.linkedin.com/feed/update/urn:li:activity:6524306203999379456/

  • https://www.slideshare.net/geerlingguy/devops-for-humans-ansible-for-drupal-deployment-victory

  • https://blog.d2si.io/2014/04/09/au-dela-du-mode-projet/

  • https://twitter.com/CommitStrip_fr/status/1130506691617992704?s=09

  • https://blog.octo.com/le-bastion-ssh/

  • https://medium.com/@tdeniffel/tcr-test-commit-revert-a-test-alternative-to-tdd-6e6b03c22bec

  • [ ]

@sylvainmetayer sylvainmetayer mentioned this issue Jun 6, 2019
47 tasks
@sylvainmetayer
Copy link
Owner Author

cf #53

@sylvainmetayer sylvainmetayer unpinned this issue Jun 6, 2019
sylvainmetayer added a commit that referenced this issue Jun 6, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant