[{"data":1,"prerenderedAt":45},["ShallowReactive",2],{"course-patterns-d-architecture-logicielle":3,"highlight-java-public interface Ord":44},{"id":4,"name":5,"slug":6,"location":7,"targetAudienceFormatMarkdown":8,"prerequisitesFormatMarkdown":9,"objectivesFormatMarkdown":10,"descriptionFormatMarkdown":11,"teachingMethodsFormatMarkdown":12,"teachingResourcesFormatMarkdown":13,"evaluationMethodsFormatMarkdown":14,"accessibilityFormatMarkdown":15,"accessMethodsFormatMarkdown":16,"minimumParticipants":7,"maximumParticipants":7,"duration":17,"reference":18,"trainerType":7,"updated_at":19,"created_at":20,"price":21,"organizationMode":22,"theme":25,"code":29,"tags":34,"metadata":35},"/api/courses/0add43c8-b298-11f1-a993-d8ca06000363","Patterns d'architecture logicielle","patterns-d-architecture-logicielle",null,"Architectes logiciels, développeurs expérimentés, responsables techniques.","Solide expérience du développement logiciel et de la conception objet.","Choisir et combiner les patterns (hexagonal, CQRS, event sourcing, saga) selon les contraintes.","--day1--\n\n## Structurer l'application\n\n-   Architecture en couches et ses dérives ; architecture hexagonale et ports/adaptateurs ; architecture en oignon et clean architecture ; testabilité et indépendance du domaine.\n\n--break--\n\n## Patterns de domaine\n\n-   Modèle de domaine riche ; agrégats et invariants ; services de domaine ; anti-patterns (modèle anémique, logique dans la base).\n\n--day2--\n\n## Séparer lecture et écriture\n\n-   CQRS : principes, variantes et coût ; modèles de lecture dédiés ; event sourcing : promesses, rejeu et contraintes ; cas d'usage pertinents.\n\n--break--\n\n## Patterns d'intégration\n\n-   Messagerie, publication/abonnement, file de rebut ; saga et transactions longues ; passerelle et anticorruption ; contrats et compatibilité.\n\n--day3--\n\n## Résilience et performance\n\n-   Cache et invalidation ; disjoncteur, limitation de débit, cloisonnement ; traitement par lots et asynchrone ; dimensionnement et points de contention.\n\n--break--\n\n## Choisir et justifier\n\n-   Attributs de qualité et compromis ; évaluation d'une architecture candidate ; enregistrement des décisions ; atelier de conception argumentée.","Présentiel, distanciel, hybride","Les supports pédagogiques sont remis aux stagiaires sous format numérique et/ou papier selon les modalités de la formation.\n\nIls comprennent des supports de cours, des présentations, des fiches pratiques, des études de cas, des exercices applicatifs ainsi que des QCM d’entraînement selon la formation. (adapté au choix du formateur)\n\nLes formations s’appuient sur des moyens techniques adaptés : ordinateurs, logiciels professionnels, connexion internet, écran ou vidéoprojecteur, ainsi que des outils collaboratifs et de visioconférence pour les formations à distance.\n\nL’ensemble des supports pédagogiques est accessible pendant et après la formation afin de favoriser l’appropriation et la mise en pratique des compétences acquises.","En amont de la formation, un recueil des besoins permet de récolter des informations sur le stagiaire et ses attentes. L’évaluation se fait en cours de formation, par des études de cas ou des travaux pratiques. En fin de formation, par un questionnaire d’auto-évaluation et/ou un examen.\n\nUn suivi de qualité est effectué grâce à nos sessions en groupe restreint (entre 2 et 9 participants maximum). Le stagiaire émargera par demi-journée et recevra une attestation de formation.","Nous informons l’ensemble de nos clients et stagiaires que nous sommes dans la capacité d’adapter les sessions selon les handicaps et les situations spécifiques. Nous nous engageons à répondre à toutes vos demandes sous un délai de 48h ouvré.","Si l’une de nos formations vous intéresse, contactez-nous au +33 4 93 65 34 24 ou à l’adresse mail contact@m2g-intellect.fr. Selon votre besoin et vos attentes, nous organiserons un échange téléphonique avec le formateur pressenti afin d’adapter la formation et ses modules, puis nous vous adresserons un devis.\n\nLes dates de la formation seront à convenir sous 30 jours maximum.","21.00","L1-ARC-06","2026-09-18T09:45:10+00:00","2026-09-17T15:02:31+00:00","2510.00",{"id":23,"name":24},"/api/organization_mode_types/6","HYBRID",{"id":26,"name":27,"slug":28},"/api/themes/0ac088b7-b298-11f1-a993-d8ca06000363","Architecture et urbanisation des SI","architecture-et-urbanisation-des-si",{"id":30,"label":31,"domain":32},"/api/training_specialities/163","326 - Informatique, traitement de l’information, réseaux de transmission des données",{"label":33},"32 - Communication et information",[],{"desc-accroche":36,"Description":37,"icon-color":38,"icon-name":39,"code-langage":40,"code-snippet":41,"courte-description":42,"titre-accroche":43},"Comparez les patterns d'architecture applicative (architecture hexagonale, CQRS, event sourcing, saga) à partir des contraintes qui les justifient, et mesurez ce que chacun simplifie, complique et coûte en exploitation.","Un pattern d'architecture n'a de valeur que rapporté au problème qu'il résout. Cette formation experte déroule les principaux patterns d'architecture applicative — architecture hexagonale (ports et adaptateurs), CQRS, event sourcing et pattern saga pour les transactions distribuées — en partant systématiquement de la contrainte métier ou technique qui les justifie. Chaque pattern est ensuite mis en tension avec les alternatives : ce qu'il simplifie dans le code, ce qu'il complique dans l'exploitation, et ce qu'il exige comme montée en compétence des équipes. Les participants s'exercent à combiner plusieurs patterns sur un cas représentatif et apprennent à documenter les choix pour les rendre défendables devant un comité d'architecture. Elle s'adresse aux architectes logiciels, développeurs expérimentés et responsables techniques disposant d'une solide expérience de la conception objet.","#6C4FC4","mdi:puzzle-outline","java","public interface OrderRepository {\n    void save(Order order);\n    Optional\u003COrder> findById(OrderId id);\n}\n\npublic class PlaceOrderHandler {\n    private final OrderRepository repository;\n    private final EventPublisher events;\n\n    public void handle(PlaceOrderCommand cmd) {\n        Order order = Order.create(cmd);\n        repository.save(order);\n        events.publish(new OrderPlaced(order.getId()));\n    }\n}","Formation experte aux patterns d'architecture logicielle : hexagonal, CQRS, event sourcing et saga, choisis selon les contraintes réelles du système.","Choisissez et combinez les patterns d'architecture — hexagonal, CQRS, event sourcing, saga — selon les contraintes réelles de vos systèmes.","\u003Cpre class=\"hljs\">\u003Ccode class=\"language-java\">\u003Cspan class=\"hljs-keyword\">public\u003C/span> \u003Cspan class=\"hljs-keyword\">interface\u003C/span> \u003Cspan class=\"hljs-title class_\">OrderRepository\u003C/span> {\n    \u003Cspan class=\"hljs-keyword\">void\u003C/span> \u003Cspan class=\"hljs-title function_\">save\u003C/span>\u003Cspan class=\"hljs-params\">(Order order)\u003C/span>;\n    Optional&lt;Order&gt; \u003Cspan class=\"hljs-title function_\">findById\u003C/span>\u003Cspan class=\"hljs-params\">(OrderId id)\u003C/span>;\n}\n\n\u003Cspan class=\"hljs-keyword\">public\u003C/span> \u003Cspan class=\"hljs-keyword\">class\u003C/span> \u003Cspan class=\"hljs-title class_\">PlaceOrderHandler\u003C/span> {\n    \u003Cspan class=\"hljs-keyword\">private\u003C/span> \u003Cspan class=\"hljs-keyword\">final\u003C/span> OrderRepository repository;\n    \u003Cspan class=\"hljs-keyword\">private\u003C/span> \u003Cspan class=\"hljs-keyword\">final\u003C/span> EventPublisher events;\n\n    \u003Cspan class=\"hljs-keyword\">public\u003C/span> \u003Cspan class=\"hljs-keyword\">void\u003C/span> \u003Cspan class=\"hljs-title function_\">handle\u003C/span>\u003Cspan class=\"hljs-params\">(PlaceOrderCommand cmd)\u003C/span> {\n        \u003Cspan class=\"hljs-type\">Order\u003C/span> \u003Cspan class=\"hljs-variable\">order\u003C/span> \u003Cspan class=\"hljs-operator\">=\u003C/span> Order.create(cmd);\n        repository.save(order);\n        events.publish(\u003Cspan class=\"hljs-keyword\">new\u003C/span> \u003Cspan class=\"hljs-title class_\">OrderPlaced\u003C/span>(order.getId()));\n    }\n}\u003C/code>\u003C/pre>",1789717724325]