Portfolio de Dasek Joiakim - Semestre 4
Semestre 3
M7

Compétence M7

En fonction des projets déterminés autour de la « Conception et implémentation des services numériques », connaître, appliquer et mettre en œuvre les méthodologies et les outils adaptés

Projet Koloka

Lors du projet Koloka j'ai pu apprendre et mettre en pratique la méthodologie Scrum. J'ai utilisé Jira comme outil de gestion de projet. J'ai profité de ce projet pour apprendre à utiliser GIT et GitHub qui sont des outils essentiels pour le développement logiciel. Cela m'a permis de découvrir les bonnes pratiques de développement logiciel et de travailler en équipe sur un projet de grande envergure.

Jira

Voyage apprenant

Lors du voyage apprenant, j'ai pris plusieurs décisions concernant les outils et méthodologies à utiliser. J'ai choisi de faire du pair programming avec mon binôme pour que nous puissions apprendre ensemble et surtout partager les connaissances et la manière dont nous avons résolu les problèmes.

J'ai pu comprendre que la communication est un élément crucial au sein d'un projet. Les responsabilité de Scrum Master sont diverses et variées. Il est important de savoir communiquer avec les membres de l'équipe et de savoir les motiver. La motivation a été un élément de mon article réflexif sur stimuler la motivation au sein d'une équipe.

Article réflexif

Une méthodolgie que j'ai appris lors de la rédaction de mon article réflexif sur intégrer les tests et l'assurance qualité dans le développement d'application m'a permis de comprendre l'importance des test unitaire, en l'occurence la méthodolgie TDD (Test Driven Development). Le principe est de commencer par écrire les tests unitaire avant même d'écrire le code. Cela permet de se concentrer sur les fonctionnalités et de s'assurer que le code écrit est fonctionnel.

Cet article réflexif comprend un plan d'action pour une assurance qualité dans le cadre d'un projet de développement.

Voici un résumé de mon plan d'action :

Réunion initiale avec l'équipe de développeurs

  • Organiser réunion sur les risques de négliger les tests.
  • Présenter exemples de problèmes liés à l'absence de tests.
  • Souligner les bénéfices à court et long terme de la qualité du code.

Formation et sensibilisation

  • Programmer des sessions sur TDD, revues de code, et analyse statique.
  • Encourager le partage de connaissances à travers des ateliers pratiques.

Implémentation du Test Driven Development (TDD)

  • Définir des tests au début de chaque sprint.
  • Écrire le code pour passer les tests avant d'ajouter de nouvelles fonctionnalités.
  • Séances de refactoring régulières.

Intégration Continue et Livraison Continue (CI/CD)

  • Configurer un serveur CI pour automatiser les tests et les déploiements.
  • Tests automatisés obligatoires avant la fusion.
  • Lecture individuelle avec participation de tous à l'intégration sur un projet prototype.

Adoption du pair programming pour les cas de test complexes

  • Identifier les fonctionnalités critiques assignées à des paires.
  • Sessions régulières de pair programming avec alternance des rôles.

Établir une routine de revues de code et d'analyses statiques

  • Intégrer ESLint et Prettier pour des vérifications automatiques.
  • Planifier des revues de code régulières.

Cultiver une Psychologie de la Qualité au sein de l’équipe

  • Créer des incitations et reconnaître les contributions à la qualité.
  • Encourager une attitude positive envers la découverte et la correction de bugs.

Évaluation et Adaptation Continues

  • Réunions régulières pour évaluer l'efficacité des pratiques.
  • Adaptation des méthodes en fonction des retours et des besoins de l'équipe.

Lecture individuelle

GraphQL

J'ai pu apprendre un nouvel outil pour communiquer avec une API, en tant normal, je récupère ou fais des mutations avec l'API REST. J'ai pu apprendre à utiliser GraphQL lors de ma lecture individuelle et j'ai compris les différences entre GraphQL et REST. J'ai pesé le pour et le contre de chaque technologie et j'ai pu comprendre que GraphQL est plus performant que REST dans certains cas. Il permet de récupérer uniquement les données dont on a besoin et de ne pas surcharger le réseau avec des données inutiles.

Le problème avec GraphQL est qu'il est plus difficile à mettre en place qu'une API REST. Il faut créer un serveur GraphQL et un client GraphQL. Il faut aussi créer un schéma pour définir les types de données et les requêtes possibles. Cela demande plus de travail qu'une API REST.

IaaS, PaaS, SaaS

Lors de la lecture individuelle sur les différents types de cloud, j'ai pu affirmer mes connaissances sur le sujet. J'ai compris que la solution que j'avais choisi au départ du projet Koloka était de déployer une application sur un serveur IaaS.

Gestion des risques

La lecture individuelle sur la gestion des risque m'a fait comprendre pour le projet Koloka, les différents risques que l'on pourrait rencontrer quand l'application sera en production. Cela m'a permis de lister les risques et de trouver des solutions pour les éviter. J'ai pu mettre en place des solutions pour éviter les risques de sécurité, de disponibilité et de performance.

Voici mon analyse des risque et les moyens d'atténuations :

Sécurité :

  • Risque : Vulnérabilités de sécurité, accès non autorisé, failles de confidentialité.
  • Atténuation :
    • Utilisation des services AWS Identity and Access Management (IAM) pour gérer les autorisations.
    • Activation du chiffrement pour les données sensibles à l'aide d'AWS Key Management Service (KMS).
    • Réalisation d'audits réguliers de sécurité.

Disponibilité :

  • Risque : Panne des serveurs, indisponibilité des services.
  • Atténuation :
    • Utilisation des services AWS tels que Amazon EC2 Auto Scaling pour garantir la disponibilité.
    • Répartition des instances sur plusieurs zones de disponibilité.
    • Mise en œuvre de sauvegardes régulières.

Performances :

  • Risque : Latence élevée, temps de réponse lent.
  • Atténuation :
    • Utilisation des services de mise en cache comme Amazon ElastiCache.
    • Optimisation de la base de données pour les performances.
    • Surveillance et ajustement des ressources en fonction des besoins.

Coûts :

  • Risque : Dépenses excessives, coûts imprévus.
  • Atténuation :
    • Mise en place d'alertes de coût avec AWS Budgets.
    • Utilisation d'AWS Cost Explorer pour analyser les dépenses.
    • Choix des types d'instances en fonction des besoins réels.

Maintenance :

  • Risque : Problèmes lors des mises à jour, erreurs de configuration.
  • Atténuation :
    • Automatisation des tâches de maintenance à l'aide d'AWS OpsWorks, AWS Systems Manager, ou d'autres outils.
    • Test des mises à jour dans un environnement de pré-production.

Sauvegarde et Récupération :

  • Risque : Perte de données, absence de plan de récupération.
  • Atténuation :
    • Mise en place de stratégies de sauvegarde régulières.
    • Test régulier des procédures de récupération.

Conformité :

  • Risque : Non-conformité aux réglementations.
  • Atténuation :
    • Article réflexif sur RGPD / nLPD.
    • Observer les concurrents et les meilleures pratiques de l'industrie.

Surveillance :

  • Risque : Absence de surveillance en temps réel.
  • Atténuation :
    • Utilisation d'Amazon CloudWatch pour surveiller les métriques et les journaux.
    • Configuration d'alertes pour être informé des problèmes avant qu'ils n'affectent les utilisateurs.

Évolutivité :

  • Risque : Incapacité à faire évoluer l'application en fonction de la demande.
  • Atténuation :
    • Utilisation de services évolutifs tels qu'Amazon Aurora (base de données), AWS Lambda (fonctions sans serveur), et Amazon S3 (stockage).

L'élément le plus critique que j'ai pu observer est le premier, la sécurité. Il est important de sécuriser les données des utilisateurs et de s'assurer que personne ne puisse accéder à des données sensibles. C'est la raison de mon article réflexif sur intégrer les tests et l'assurance qualité dans le développement d'application

Flutter

La lecture individuelle sur Flutter m'a permis de comprendre les avantages et les inconvénients de cette technologie. L'utilisation de ce SDK cross-platform permet de développer une application pour Android et iOS en même temps. Cela permet de réduire le temps de développement et de réduire les coûts. C'est la raison principale pour laquelle ce SDK est utilisé dans Flutter. Cependant, il y a des inconvénients à utiliser Flutter. Il est plus difficile de faire des fonctionnalités spécifiques à chaque plateforme. Il faut donc faire des compromis et utiliser des fonctionnalités.

D'autres choix auraient été possibles, comme React Native, qui est un SDK cross-platform également. Il y a aussi la possibilité de développer une application native pour chaque plateforme. Cela demande plus de temps et de ressources mais permet d'avoir une application plus performante et plus adaptée à chaque plateforme.

Adopter un regard critique sur ces méthodologies et outils

Adopter un regard critique sur ces méthodologies et outils permet de les adapter à la situation et de les faire évoluer.

Projet Koloka

Ci-dessus j'ai expliqué que j'utilise Scrum pour le projet Koloka. Cependant, j'ai pu remarquer que Scrum n'est pas adapté à tous les projets. Il est important de choisir la bonne méthodologie pour le bon projet. Si le projet est complexe et qu'il y a beaucoup de changements, Scrum est une bonne solution. Cependant, si le projet n'a pas réellement de facteurs externes qui peuvent changer le projet, il est préférable d'utiliser une méthodologie classique de gestion de projet.

Voyage apprenant

Bien que le pair programming soit une bonne solution pour apprendre et partager les connaissances, il n'est pas adapté à le pratiquer en tout temps. C'est un outil de travail pour le partage de connaissance et la résolution de problèmes. Cependant, il est important de laisser les membres de l'équipe travailler individuellement pour qu'ils puissent apprendre par eux-même et qu'ils puissent développer leurs compétences !

Article réflexif

Les articles reflètent d'une expérience vécue dont on peut tirer des conclusions, trouver des solutions. C'est donc un document qui permet d'avoir un regard critique sur soi-même et les actions que l'on a faites.

Sur cette page j'ai énumérer deux articles réflexifs que j'ai rédigé. Voici le troisième article réflexif :