Upgrade to Pro — share decks privately, control downloads, hide ads and more …

La stratégie de l'échec

Stéphane PY
January 16, 2020

La stratégie de l'échec

par Quentin Schuler & Stéphane PY

Stéphane PY

January 16, 2020
Tweet

More Decks by Stéphane PY

Other Decks in Programming

Transcript

  1. SOMMAIRE VIE DU PROJET /** * L’architecture */ 01 03

    02 04 05 06 LE CODE INFRASTRUCTURE DATABASE CONCLUSIONS ARCHITECTURE /** * La vie du projet */ /** * Le code */ /** * L’infrastructure */ /** * La database */ /** * Les conclusions */
  2. PLANNING IDÉAL JAN 14 Conception et estimation de la charge

    FEB 02 APR 16 MAR 10 MAY 30 Rassurer le client sur l’avancement des développements Démarrage des développements Date de Livraison initialement prévue Signature du projet avec le client
  3. AMBIGUOUS LANGUAGE Parler le même langage que son client risque

    de créer des situations gênantes de compréhension totale.
  4. LE CLIENT “Le caissier cherche les sièges disponibles côte à

    côte et les réserve pour le couple de clients.” LUC MEETING CLIENT
  5. LE CLIENT “Le caissier cherche les sièges disponibles côte à

    côte et les réserve pour le couple de clients.” LUC “On va créer une AbstractFactory qui buildera une Reservation sur une Range donnée pour l’affecter à l’AppUser avant persistance.” MEETING CLIENT
  6. LE CLIENT “Nous souhaitons tester la solution sur le marché

    français avant d’aller à l’international. A terme, l’application sera maintenu par nos équipes.” LUC “C’est noté !” MEETING CLIENT
  7. LUC “Aucune idée ! Mais il ne souhaite ni solution

    d’i18n ni documentation.” LUC “De quoi à besoin le client ?” BRIEF INTERNE
  8. OVER-ANTICIPATION Si le client ne l’a pas demandé, c’est parce

    qu’il ne sait pas encore qu’il en a besoin.
  9. LUC Une API GraphQL, en DDD / CQRS / Event

    Sourcing. Des capacités d’i18n, un serveur OAuth2 et un frontend jQuery. LUC “De quoi à besoin le client ?” BRIEF INTERNE
  10. MICROSERVICES Une architecture en microservices mal maîtrisée introduit des problèmes

    de communication (async, réseau), infrastructure, distribution, performances, etc. Mais qu’est-ce que c’est fun !
  11. Modular monolith Monolithic big ball of mud Microservices Distributed big

    ball of mud Number of deployment units Modularity © Simon Brown
  12. Modular monolith Monolithic big ball of mud Microservices Distributed big

    ball of mud Number of deployment units Modularity © Simon Brown
  13. Modular monolith Monolithic big ball of mud Microservices Distributed big

    ball of mud Number of deployment units Modularity © Simon Brown
  14. EVENT STORMING User validate cart Seats were booked Send booking

    confirmation to an external system User select a movie Seats were booked for 10 minutes User select seats Send user a confirmation email
  15. MCD user id email_address plain_text_password booking seat booking_seat movie_room booking_id

    seat_id id reference id movie_room_id reference id user_id booking_date
  16. CHRONOLOGIE MCD Conception du MCD. Jeter tous les besoins métiers

    dans un schéma de base de donnée. FACTURATION Envoyer une bonne grosse facture au client. Après tout, le travail est terminé puisque le MCD est fait. DÉVELOPPEMENT Démarrer le développement (c.f. Planning Idéal) Il suffit de 5 min pour écrire les entités et le CRUD associé.
  17. DÉSINTÉGRATION CONTINUE La CI, permet d’avoir du feedback régulier sur

    les développements. De grandes sociétés ont prospéré grâce à ses méthodes. Ne le permettons plus. Ensemble, prions contre la CI.
  18. Commentez les tests Commenter les tests (oui même ceux qui

    fonctionnent… surtout ceux qui fonctionnent !) Random Success Rien de mieux qu’une CI qui échoue de temps en temps… “Relance-là“ dit Luc. CI failing Une CI qui échoue depuis des mois… ça permet de mettre à la poubelle tous les tests rapidement
  19. AMBITIOUS STACK Vous venez de rentrer un projet stratégique pour

    la survie de votre entreprise mais vous n’avez jamais fait de Kubernetes / Docker / DDD / CQRS / Event Sourcing / Microservices / GraphQL / RabbitMQ. C’est le moment d’échouer. Donnez tout ce que vous avez.
  20. Régressions Maintenabilité Introduire de nouveaux bugs est un fondement de

    l’échec. Il ne faut pas laisser la chance à vos successeurs de rattraper le coup. Il se devront d’être dignes de vous ! Stress Rien ne vaut le stress d’un déploiement un vendredi soir d’une nouvelle fonctionnalité développée par un nouveau dev junior sur une app sans tests Abandon Le manque de test peut mener à l’abandon du projet ou à la naissance d’une nouvelle architecture. Soyez très vigilant, l’échec doit vous survivre !
  21. CODING STANDARDS Nous sommes tous différents, cultivons cette différence !

    Mélangez tabulations et espaces. CamelCase, snake_case, et sHiT_cAse. T’as baisé mon code, j’ai baisé mon code. On est quitte.
  22. Une branche Pas de fork Cela permettra de multiplier les

    conflits par le nombre de personnes travaillant sur le projet * 42. Des messages pas clairs Je que l'homme de la situation Luc. Je que dossier bleu et vous sur une centaine de tableaux très clairs, vous semaine prochaine et sans faute ! Commitez-tous ! Mots de pases, clefs SSH, vendors, logs… Ainsi que les node_modules si vous en avez rien à foutre de la planète.
  23. PRODUCTION Un environnement pour les gouverner tous ! Staging, PreProd

    & co sont clairement des buzzwords inutiles.
  24. NO-LOG, NO-CRY Je ne logue jamais rien. Je suis dans

    un escape game quand ça plante. Et en plus c’est gratuit.
  25. Avec des handlers bien pensés de monolog, une personne pourrait

    être informé par slack / mail / sms / … et pourrait endiguer l’échec. A éviter.
  26. Ne le configurez pas ! Comme ça il y aura

    des problèmes, mais personne ne les verra.
  27. Archi parfaite pour mon site web quasi-statique Varnish Kong (api

    gateway) apache fpm Redis Master Slave Slave x100 SGBD Haproxy apache fpm apache fpm apache fpm
  28. MySQL Meilleure base de donnée open-source of the entire universe

    and beyond. https://www.youtube.com/watch?v=emgJtr9tIME
  29. N+(0.01-1 - 10 ✕ 10 + 1) for each items

    in collection of each collection items of each each. Je clair Luc, ne pas ?
  30. CREDITS: This presentation template was created by Slidesgo, including icons

    by Flaticon, and infographics & images by Freepik. Please keep this slide for attribution. Posez-nous deux questions ! MERCI [email protected] +33 6 31 86 95 84 Freelance [email protected] +33 6 74 80 51 06 Neosyne - Freelance