SlideShare uma empresa Scribd logo
1 de 102
Baixar para ler offline
DESIGN APPLICATIF AVEC
SYMFONY2
Zoom sur la Clean Architecture
Romain Kuzniak
Responsable Technique OpenClassrooms
@TurnItUpMethod (je débute !)
romain.kuzniak@turn-it-up.org
QU’EST-CE QU’UNE BONNE
APPLICATION ?
(Pour moi)
Présentation complète
GLOBAL
Projet
Changer le monde
Améliorer la vie des utilisateurs
Etre rentable
Etre fonctionnel
TECHNIQUE
Dernier langage ?	

Dernier Framework ?	

Code parfait ?	

Qu’est ce que du bon
code ?
Agilité ?	

Tests ?	

Continuous Integration ?	

Continuous Delivery ?



TECHNIQUE
YAGNI (You Ain’t Gonna Need It)
KISS (Keep It Simple, Stupid)
DRY (Don’t Repeat Yourself)
S.O.L.I.D (SRP, OCP, LS, IS, DI)
TDD (Test Driven Development)
BDD (Behavior Driven Development)
DDD (Domain Driven Design) …
CE SONT DES MOYENS PAS UNE FIN
LA FIN C’EST
FAVORISER LE CHANGEMENT
FAVORISER LE CHANGEMENT
QU’EST-CE QU’UN BON
DESIGN ?
UN DESIGN QUI FAVORISE
LE CHANGEMENT
CAS D’ÉTUDE
CAS D’ÉTUDE
Application de gestion d’un tableau agile
Cas d’étude : fermeture d’un sprint
Manuelle par l’utilisateur via l’interface web ou
une API
Automatique via un cron
CAS D’UTILISATION
FERMER LE SPRINT - UTILISATEUR
Input :
Opération explicite de l’utilisateur (web ou api)
Scénario :
1. Pour toutes les tâches dont le status est « Done » :
Fermer la tâche :
Passer le statut à « Close »
Ajouter la date de fermeture de la tâche
2. Ajouter la date de fermeture du sprint
3. Sortir toutes les autres tâches du sprint
4. Générer le rapport de sprint
Nombre de tâches fermées au cours du sprint
Nombre de tâches moyennes fermées au cours de tous les sprints
Output :
Rapport de sprint
FERMER LE SPRINT - SYSTÈME
Input :
Opération automatique du système à la date de fin de sprint
Scénario :
1. Pour toutes les tâches dont le status est « Done » :
Fermer la tâche :
Passer le statut à « Close »
Ajouter la date de fermeture de la tâche
2. Ajouter la date de fermeture du sprint
3. Sortir toutes les autres tâches du sprint
Output :
Identifiant du sprint
DOMAINE
VOCABULAIRE
Règles métier : comportement lié à une entité à
travers toute l’application
Règles applicatives : fonctionnalités du
domaine, liées à une ou plusieurs entités, dans
un contexte donné
RÈGLES MÉTIER
Pour toutes les tâches du sprint dont le statut est « Done » :
Fermer la tâche :
Passer le status à « Close »
Ajouter la date de fermeture de la tâche
Ajouter la date de fermeture du sprint
Sortir toutes les autres tâches du sprint
RÈGLES APPLICATIVES
Récupérer le sprint
Fermer le sprint
Récupérer les données nécessaires au rapport
DESIGNS
LES PRINCIPAUX TYPES DE DESIGN
MVC
Architecture 3-tiers
Domain Driven Design
Clean Architecture
MVC
https://github.com/romainkuzniak/symfony-mvc
Trygve Reenskaug, Xerox Parc, 70’s
GUI pattern à l’origine
Etablir une séparation entre les éléments
du domaine et les éléments de présentation
Principes :
Séparer les données, du traitement de la
présentation
Controller
Vue
Model
Pattern Original (UI)
Model :
Contient les données (Entity)
Permet l’accès aux données (Repository)
Vue
Affiche les données
Gère l’interaction utilisateur
Controller :
Met à jour le model
Envoi les données du model à la vue
Effectue le traitement métier
MODEL
Entité = POPO
Sprint
Sprint Repository
WEB CONTROLLER
Règles applicatives
Règles métier
Présentation
Accès aux données
Accès aux données
Règles métier
Règles applicatives
API CONTROLLER
Règles applicatives
Règles métier
Présentation
Accès aux données
COMMAND
Règles applicatives
Règles métier
Présentation
Accès aux données
MVC
• A l’origine, design pour GUI	

• Ne propose pas de gestion du
domaine	

• Gestion des règles métier	

• Gestion des règles applicatives	

• => pas de réutilisabilité	

• Pas de séparation de l’infrastructure	

• Difficile à tester	

• Indice de changement : BAD
• Simple	

• Séparation Domaine /
Présentation	

• Out OfThe Box avec
Symfony2 Full Stack
Avantages Inconvénients
ARCHITECTURE 3-TIERS
https://github.com/romainkuzniak/symfony-n-tiers
John J. Donovan, Open Environment Corporation, 90’s
Grande popularité dans les applications de gestion
Objectifs :
Créer une application flexible
Indépendance entre la présentation, la logique du domaine et l’accès
aux données
Principe :
Séparation en couches
Couche de présentation (Presentation Layer)
Couche de logique du domaine (Business Layer)
Couche d’accès aux données (Data Layer)
Presentation
Controller VueData Business Service
Data Layer (Accès aux données)
Contient les données (Entity)
Permet l’accès aux données (Repository)
Business Layer (métier)
Effectue le traitement
Règles métier
Règles applicatives
Presentation Layer
Controller
Vue
DATA LAYER
Entité = POPO
Sprint
Sprint Repository
BUSINESS LAYER
Règles applicatives
Règles métier Sprint
Accès aux données
Règles métier Issue
Règles métier Sprint
Close Sprint
Règles applicatives
Règles métier Sprint
Accès aux données
Règles métier Issue
Règles métier Sprint
Close Expected Sprint
PRESENTATION LAYER
Web Controller
API Controller
Command
3-TIERS
• Ne propose pas de gestion
séparée des règles métier et
des règles applicatives	

• => pas de réutilisabilité
indépendante	

• Pas de séparation de
l’infrastructure	

• Indice de changement :
MEDIUM
• Séparation Data /
Domaine /
Présentation	

• Out OfThe Box avec
Symfony2 Full Stack
Avantages Inconvénients
DOMAIN DRIVEN DESIGN
https://github.com/romainkuzniak/symfony-ddd
Eric Evans, 2004
Objectifs :
Gérer des architectures complexes
Indépendance avec le framework
Indépendance avec l’UI
Indépendance avec la base de données
Testable
Principe :
Placer le domaine au centre de l’application
Domain Layer
Application Layer
Presentation
Infrastructure
Entity Repository
Controller
Service
Repository Impl
View
Value Object Service
Service …
Presentation Layer
Controller
Vue
Application Layer
Règles applicatives
Services
Domain Layer
Règles métiers :
Entity
Repository (Interface)
Infrastructure Layer
Service « technique »
Repository (Implémentation)
…
CONCEPTS
Ubiquitous Language
Model Driven Design
Entities
Value Object
Aggregates
Services
Repositories
Cohabitation avec :
AOP
CQRS
Les entités représentent les objets métiers
et encapsulent les règles métiers
Les services (Application Layer)
contiennent les règles applicatives (use
cases …)
DOMAIN LAYER
Issue
Sprint
Repository
APPLICATION LAYER
Close Sprint
Injection de dépendances	

AOP pour la gestion des transactions
Close Expected Sprint
PRESENTATION LAYER
Web Controller
Api Controller
Command
INFRASTRUCTURE LAYER
Repository (Implémentation)
DOMAIN DRIVEN DESIGN
• Beaucoup de classes	

• Coût de développement	

• Pas de SRP dans la
couche application	

• Indice de changement :
GOOD
• Grande réutilisabilité	

• Séparation métier /
applicatif /présentation	

• Séparation de
l’infrastructure
(Framework, DB …)
Avantages Inconvénients
CLEAN ARCHITECTURE
USE CASE DRIVEN DESIGN / HEXAGONAL ARCHITECTURE /
PORTS AND ADAPTERS
https://github.com/romainkuzniak/symfony-clean-
architecture
Robert C. Martin, 2008
Aggregation des travaux d’Ivar Jacobson (UseCase Driven Design, 1992) ou d’Alistair Cockburn
(Hexagonal Architecture, Ports and Adapters, 2005)
Objectifs :
Gérer des architectures complexes
Indépendance avec le framework
Indépendance avec l’UI
Indépendance avec la base de données
Testable
Principes :
Placer le domaine au centre de l’application
Communication entre les couches à travers des abstractions
Application des principes S.O.L.I.D
Architecture révélant son intention
Use Case
Controller
Presenter
View Model
View
Request
Model
<I>Boundary
Response
Model
<I>Boundary
<I>Entity
Gateway
<A>Entity
Entity
Implementation
Gateway
Implementation
PRINCIPES
Les entités représentent les objets métiers et encapsulent les
règles métiers
Les Use Case contiennent les règles spécifiques à l’application
Les dépendances sont dans le sens opposé au flux de contrôle
Grande utilisation des abstractions et des mécanismes associés
(Classes abstraites, Interfaces, Factories, Builder, DI …)
Seules des structures simples traversent les frontières
ENTITÉ
Sprint (Abstract)
Sprint (Implémentation)
GATEWAY
Sprint Gateway
Sprint Repository
USE CASE
Close Sprint
Close Sprint Response
Close Sprint Response DTO
Close Expected Sprint
CONTROLLER
Web Controller
Api Controller
Command
CLEAN ARCHITECTURE
• Encore plus de classes	

• Coût de
développement	

• Peu de littérature	

• Indice de changement :
EXCELLENT
• Grande réutilisabilité	

• Séparation data / métier /
applicatif /présentation	

• Séparation de l’infrastructure
(Framework, DB …)	

• Principes S.O.L.I.D	

• Architecture montrant son
intention
Avantages Inconvénients
RETOUR D’EXPÉRIENCE SUR
OPENCLASSROOMS
CONTEXTE
Grosse application web
Grande complexité fonctionnelle
Agilité dans l’essence de l’entreprise
Mauvais design de base (hybride entre MVC et 3-tiers)
Tests très lents
Baisse constante de la qualité et de la productivité
MISE EN OEUVRE
Mise en place progressive depuis un an
Passage du MVC, au 3-tiers, au DDD puis à la
Clean Architecture
Difficultés suite à l’absence de documentation
Grande exigence demandée aux développeurs
BILAN
Amélioration dans la confiance en l’application
Réussite dans la désormais constance de la
productivité
Correspond à notre besoin
DOIS-JE MIGRER VERS LA CLEAN
ARCHITECTURE ?
Il faut être pragmatique :
Quelle taille d’application ?
Quelle durée de développement ?
Utiliser les principes du refactoring et la
BoyScout Rule
Evolution de la productivité
MVC n-tiers DDD Clean Architecture
BIBLIOGRAPHIE
Design :
Design Patterns:Elements of Reusable Object-Oriented Software. Erich Gamma, Richard Helm,
Ralph Johnson, and John Vlissides. Addison-Wesley. 1994.
http://www.objectmentor.com/resources/articles/Principles_and_Patterns.pdf
Domain Driven Design
Domain-Driven Design: Tackling Complexity in the Heart of Software. Eric Evans. Addison-Wesley.
2004.
http://dddcommunity.org/
Clean Architecture
Object-Oriented software engineering: A use case driven approach. Ivar Jacobson Addison Wesley
Professional (1992)
http://alistair.cockburn.us/Hexagonal+architecture
http://blog.8thlight.com/uncle-bob/2012/08/13/the-clean-architecture.html
https://www.youtube.com/watch?v=WpkDN78P884
Clean Code: A Handbook of Agile Software Craftsmanship. Robert C. Martin. Prentice Hall PTR. 2008.
MERCI

Mais conteúdo relacionado

Mais procurados

The New JavaScript: ES6
The New JavaScript: ES6The New JavaScript: ES6
The New JavaScript: ES6Rob Eisenberg
 
Spring Boot Interview Questions | Edureka
Spring Boot Interview Questions | EdurekaSpring Boot Interview Questions | Edureka
Spring Boot Interview Questions | EdurekaEdureka!
 
Decomposing Applications for Scalability and Deployability (April 2012)
Decomposing Applications for Scalability and Deployability (April 2012)Decomposing Applications for Scalability and Deployability (April 2012)
Decomposing Applications for Scalability and Deployability (April 2012)Chris Richardson
 
The Benefits of Using React JS for Web Development!
The Benefits of Using React JS for Web Development!The Benefits of Using React JS for Web Development!
The Benefits of Using React JS for Web Development!Baharika Sopori
 
An introduction to React.js
An introduction to React.jsAn introduction to React.js
An introduction to React.jsEmanuele DelBono
 
Node.Js: Basics Concepts and Introduction
Node.Js: Basics Concepts and Introduction Node.Js: Basics Concepts and Introduction
Node.Js: Basics Concepts and Introduction Kanika Gera
 
[Final] ReactJS presentation
[Final] ReactJS presentation[Final] ReactJS presentation
[Final] ReactJS presentation洪 鹏发
 
What is Node.js | Node.js Tutorial for Beginners | Node.js Modules | Node.js ...
What is Node.js | Node.js Tutorial for Beginners | Node.js Modules | Node.js ...What is Node.js | Node.js Tutorial for Beginners | Node.js Modules | Node.js ...
What is Node.js | Node.js Tutorial for Beginners | Node.js Modules | Node.js ...Edureka!
 
Building a Microservices-based ERP System
Building a Microservices-based ERP SystemBuilding a Microservices-based ERP System
Building a Microservices-based ERP SystemMongoDB
 
Introduction to React
Introduction to ReactIntroduction to React
Introduction to ReactRob Quick
 
Architecting for the Cloud using NetflixOSS - Codemash Workshop
Architecting for the Cloud using NetflixOSS - Codemash WorkshopArchitecting for the Cloud using NetflixOSS - Codemash Workshop
Architecting for the Cloud using NetflixOSS - Codemash WorkshopSudhir Tonse
 
Introduction to React JS
Introduction to React JSIntroduction to React JS
Introduction to React JSArno Lordkronos
 

Mais procurados (20)

The New JavaScript: ES6
The New JavaScript: ES6The New JavaScript: ES6
The New JavaScript: ES6
 
DDD Introduction
DDD IntroductionDDD Introduction
DDD Introduction
 
Spring Boot Interview Questions | Edureka
Spring Boot Interview Questions | EdurekaSpring Boot Interview Questions | Edureka
Spring Boot Interview Questions | Edureka
 
Decomposing Applications for Scalability and Deployability (April 2012)
Decomposing Applications for Scalability and Deployability (April 2012)Decomposing Applications for Scalability and Deployability (April 2012)
Decomposing Applications for Scalability and Deployability (April 2012)
 
The Benefits of Using React JS for Web Development!
The Benefits of Using React JS for Web Development!The Benefits of Using React JS for Web Development!
The Benefits of Using React JS for Web Development!
 
An introduction to React.js
An introduction to React.jsAn introduction to React.js
An introduction to React.js
 
Node.Js: Basics Concepts and Introduction
Node.Js: Basics Concepts and Introduction Node.Js: Basics Concepts and Introduction
Node.Js: Basics Concepts and Introduction
 
[Final] ReactJS presentation
[Final] ReactJS presentation[Final] ReactJS presentation
[Final] ReactJS presentation
 
Introduction to Redux
Introduction to ReduxIntroduction to Redux
Introduction to Redux
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven Design
 
REST API
REST APIREST API
REST API
 
ReactJS presentation.pptx
ReactJS presentation.pptxReactJS presentation.pptx
ReactJS presentation.pptx
 
What is Node.js | Node.js Tutorial for Beginners | Node.js Modules | Node.js ...
What is Node.js | Node.js Tutorial for Beginners | Node.js Modules | Node.js ...What is Node.js | Node.js Tutorial for Beginners | Node.js Modules | Node.js ...
What is Node.js | Node.js Tutorial for Beginners | Node.js Modules | Node.js ...
 
An Introduction to Redux
An Introduction to ReduxAn Introduction to Redux
An Introduction to Redux
 
Building a Microservices-based ERP System
Building a Microservices-based ERP SystemBuilding a Microservices-based ERP System
Building a Microservices-based ERP System
 
An Introduction To REST API
An Introduction To REST APIAn Introduction To REST API
An Introduction To REST API
 
Introduction to React
Introduction to ReactIntroduction to React
Introduction to React
 
Solid principles
Solid principlesSolid principles
Solid principles
 
Architecting for the Cloud using NetflixOSS - Codemash Workshop
Architecting for the Cloud using NetflixOSS - Codemash WorkshopArchitecting for the Cloud using NetflixOSS - Codemash Workshop
Architecting for the Cloud using NetflixOSS - Codemash Workshop
 
Introduction to React JS
Introduction to React JSIntroduction to React JS
Introduction to React JS
 

Destaque

Le pattern View Model avec Symfony2
Le pattern View Model avec Symfony2Le pattern View Model avec Symfony2
Le pattern View Model avec Symfony2RomainKuzniak
 
Méthodologie de gestion des tâches dans les projets web
Méthodologie de gestion des tâches dans les projets webMéthodologie de gestion des tâches dans les projets web
Méthodologie de gestion des tâches dans les projets webRomainKuzniak
 
Une migration sur AWS, une migration orientée produit
Une migration sur AWS, une migration orientée produitUne migration sur AWS, une migration orientée produit
Une migration sur AWS, une migration orientée produitRomainKuzniak
 
Architectures 3-tiers (Web)
Architectures 3-tiers (Web)Architectures 3-tiers (Web)
Architectures 3-tiers (Web)Heithem Abbes
 
Qu'est ce qu'une bonne application
Qu'est ce qu'une bonne applicationQu'est ce qu'une bonne application
Qu'est ce qu'une bonne applicationRomainKuzniak
 
Anatomy of a Modern PHP Application Architecture
Anatomy of a Modern PHP Application Architecture Anatomy of a Modern PHP Application Architecture
Anatomy of a Modern PHP Application Architecture AppDynamics
 
Architectures n-tiers
Architectures n-tiersArchitectures n-tiers
Architectures n-tiersHeithem Abbes
 
PHP 7 et Symfony 3
PHP 7 et Symfony 3PHP 7 et Symfony 3
PHP 7 et Symfony 3Eddy RICHARD
 
Gestion intégrée des documents papiers et électroniques
Gestion intégrée des documents papiers et électroniquesGestion intégrée des documents papiers et électroniques
Gestion intégrée des documents papiers et électroniquesSEGIC
 
Angularjs101-les_SPA:support de la video
Angularjs101-les_SPA:support de la videoAngularjs101-les_SPA:support de la video
Angularjs101-les_SPA:support de la videoeric German
 
Software Architecture for Innovation
Software Architecture for InnovationSoftware Architecture for Innovation
Software Architecture for InnovationEberhard Wolff
 
Cleancode / Tocea / Introduction
Cleancode / Tocea / IntroductionCleancode / Tocea / Introduction
Cleancode / Tocea / IntroductionSylvain Leroy
 
Design pattern in Symfony2 - Nanos gigantium humeris insidentes
Design pattern in Symfony2 - Nanos gigantium humeris insidentesDesign pattern in Symfony2 - Nanos gigantium humeris insidentes
Design pattern in Symfony2 - Nanos gigantium humeris insidentesGiulio De Donato
 
Asynchronous processing with PHP and Symfony2. Do it simple
Asynchronous processing with PHP and Symfony2. Do it simpleAsynchronous processing with PHP and Symfony2. Do it simple
Asynchronous processing with PHP and Symfony2. Do it simpleKirill Chebunin
 
Symfony in microservice architecture
Symfony in microservice architectureSymfony in microservice architecture
Symfony in microservice architectureDaniele D'Angeli
 

Destaque (20)

Le pattern View Model avec Symfony2
Le pattern View Model avec Symfony2Le pattern View Model avec Symfony2
Le pattern View Model avec Symfony2
 
Méthodologie de gestion des tâches dans les projets web
Méthodologie de gestion des tâches dans les projets webMéthodologie de gestion des tâches dans les projets web
Méthodologie de gestion des tâches dans les projets web
 
Une migration sur AWS, une migration orientée produit
Une migration sur AWS, une migration orientée produitUne migration sur AWS, une migration orientée produit
Une migration sur AWS, une migration orientée produit
 
Architectures 3-tiers (Web)
Architectures 3-tiers (Web)Architectures 3-tiers (Web)
Architectures 3-tiers (Web)
 
Qu'est ce qu'une bonne application
Qu'est ce qu'une bonne applicationQu'est ce qu'une bonne application
Qu'est ce qu'une bonne application
 
Anatomy of a Modern PHP Application Architecture
Anatomy of a Modern PHP Application Architecture Anatomy of a Modern PHP Application Architecture
Anatomy of a Modern PHP Application Architecture
 
Architectures n-tiers
Architectures n-tiersArchitectures n-tiers
Architectures n-tiers
 
PHP 7 et Symfony 3
PHP 7 et Symfony 3PHP 7 et Symfony 3
PHP 7 et Symfony 3
 
Gestion intégrée des documents papiers et électroniques
Gestion intégrée des documents papiers et électroniquesGestion intégrée des documents papiers et électroniques
Gestion intégrée des documents papiers et électroniques
 
Clean architecture - PHP
Clean architecture - PHPClean architecture - PHP
Clean architecture - PHP
 
Angularjs101-les_SPA:support de la video
Angularjs101-les_SPA:support de la videoAngularjs101-les_SPA:support de la video
Angularjs101-les_SPA:support de la video
 
Clean code
Clean codeClean code
Clean code
 
Software Architecture for Innovation
Software Architecture for InnovationSoftware Architecture for Innovation
Software Architecture for Innovation
 
Cleancode / Tocea / Introduction
Cleancode / Tocea / IntroductionCleancode / Tocea / Introduction
Cleancode / Tocea / Introduction
 
Clean architectures
Clean architecturesClean architectures
Clean architectures
 
DDD in PHP
DDD in PHPDDD in PHP
DDD in PHP
 
Design pattern in Symfony2 - Nanos gigantium humeris insidentes
Design pattern in Symfony2 - Nanos gigantium humeris insidentesDesign pattern in Symfony2 - Nanos gigantium humeris insidentes
Design pattern in Symfony2 - Nanos gigantium humeris insidentes
 
Asynchronous processing with PHP and Symfony2. Do it simple
Asynchronous processing with PHP and Symfony2. Do it simpleAsynchronous processing with PHP and Symfony2. Do it simple
Asynchronous processing with PHP and Symfony2. Do it simple
 
Laravel 5 and SOLID
Laravel 5 and SOLIDLaravel 5 and SOLID
Laravel 5 and SOLID
 
Symfony in microservice architecture
Symfony in microservice architectureSymfony in microservice architecture
Symfony in microservice architecture
 

Semelhante a Design applicatif avec symfony2

Design applicatif avec symfony - Zoom sur la clean architecture - Symfony Live
Design applicatif avec symfony - Zoom sur la clean architecture - Symfony LiveDesign applicatif avec symfony - Zoom sur la clean architecture - Symfony Live
Design applicatif avec symfony - Zoom sur la clean architecture - Symfony LiveRomainKuzniak
 
Introduction au Domain Driven Design
Introduction au Domain Driven DesignIntroduction au Domain Driven Design
Introduction au Domain Driven DesignDNG Consulting
 
Architecture microservices avec docker
Architecture microservices avec dockerArchitecture microservices avec docker
Architecture microservices avec dockergcatt
 
Architecture mvc
Architecture mvcArchitecture mvc
Architecture mvcMadridal
 
Présentation de la plateforme Cloud Simplicité
Présentation de la plateforme Cloud SimplicitéPrésentation de la plateforme Cloud Simplicité
Présentation de la plateforme Cloud SimplicitéSimplicité Software
 
MVVM de A à Z
MVVM de A à ZMVVM de A à Z
MVVM de A à ZMicrosoft
 
Java entreprise edition et industrialisation du génie logiciel par m.youssfi
Java entreprise edition et industrialisation du génie logiciel par m.youssfiJava entreprise edition et industrialisation du génie logiciel par m.youssfi
Java entreprise edition et industrialisation du génie logiciel par m.youssfiENSET, Université Hassan II Casablanca
 
Cours design pattern m youssfi partie 1 introduction et pattern strategy
Cours design pattern m youssfi partie 1 introduction et pattern strategyCours design pattern m youssfi partie 1 introduction et pattern strategy
Cours design pattern m youssfi partie 1 introduction et pattern strategyENSET, Université Hassan II Casablanca
 
Marzouk architecture encouches-jee-mvc
Marzouk architecture encouches-jee-mvcMarzouk architecture encouches-jee-mvc
Marzouk architecture encouches-jee-mvcabderrahim marzouk
 
SQL Server et les développeurs
SQL Server et les développeurs SQL Server et les développeurs
SQL Server et les développeurs Microsoft
 
Retour d'expérience : rendre votre IT agile grâce au cloud hybride
Retour d'expérience : rendre votre IT agile grâce au cloud hybrideRetour d'expérience : rendre votre IT agile grâce au cloud hybride
Retour d'expérience : rendre votre IT agile grâce au cloud hybrideMicrosoft Décideurs IT
 
Retour d'expérience : rendre votre IT agile grâce au cloud hybride
Retour d'expérience : rendre votre IT agile grâce au cloud hybrideRetour d'expérience : rendre votre IT agile grâce au cloud hybride
Retour d'expérience : rendre votre IT agile grâce au cloud hybrideMicrosoft Technet France
 
Cours Génie Logiciel 2016
Cours Génie Logiciel 2016Cours Génie Logiciel 2016
Cours Génie Logiciel 2016Erradi Mohamed
 
Patterns Windows Azure
Patterns Windows AzurePatterns Windows Azure
Patterns Windows AzureMicrosoft
 
Sql azure performance et montee en charge (1)
Sql azure   performance et montee en charge (1)Sql azure   performance et montee en charge (1)
Sql azure performance et montee en charge (1)Aymeric Weinbach
 
TechDays 2012 - Windows Azure
TechDays 2012 - Windows AzureTechDays 2012 - Windows Azure
TechDays 2012 - Windows AzureJason De Oliveira
 
Architecture, bonnes pratiques et recettes pour la réussite de vos projets av...
Architecture, bonnes pratiques et recettes pour la réussite de vos projets av...Architecture, bonnes pratiques et recettes pour la réussite de vos projets av...
Architecture, bonnes pratiques et recettes pour la réussite de vos projets av...Microsoft Technet France
 
Design Patterns Java
Design Patterns JavaDesign Patterns Java
Design Patterns JavaVINOT Bernard
 

Semelhante a Design applicatif avec symfony2 (20)

Design applicatif avec symfony - Zoom sur la clean architecture - Symfony Live
Design applicatif avec symfony - Zoom sur la clean architecture - Symfony LiveDesign applicatif avec symfony - Zoom sur la clean architecture - Symfony Live
Design applicatif avec symfony - Zoom sur la clean architecture - Symfony Live
 
Introduction au Domain Driven Design
Introduction au Domain Driven DesignIntroduction au Domain Driven Design
Introduction au Domain Driven Design
 
Architecture microservices avec docker
Architecture microservices avec dockerArchitecture microservices avec docker
Architecture microservices avec docker
 
Architecture mvc
Architecture mvcArchitecture mvc
Architecture mvc
 
Présentation de la plateforme Cloud Simplicité
Présentation de la plateforme Cloud SimplicitéPrésentation de la plateforme Cloud Simplicité
Présentation de la plateforme Cloud Simplicité
 
MVVM de A à Z
MVVM de A à ZMVVM de A à Z
MVVM de A à Z
 
Support de cours Spring M.youssfi
Support de cours Spring  M.youssfiSupport de cours Spring  M.youssfi
Support de cours Spring M.youssfi
 
Java entreprise edition et industrialisation du génie logiciel par m.youssfi
Java entreprise edition et industrialisation du génie logiciel par m.youssfiJava entreprise edition et industrialisation du génie logiciel par m.youssfi
Java entreprise edition et industrialisation du génie logiciel par m.youssfi
 
Cours design pattern m youssfi partie 1 introduction et pattern strategy
Cours design pattern m youssfi partie 1 introduction et pattern strategyCours design pattern m youssfi partie 1 introduction et pattern strategy
Cours design pattern m youssfi partie 1 introduction et pattern strategy
 
Marzouk architecture encouches-jee-mvc
Marzouk architecture encouches-jee-mvcMarzouk architecture encouches-jee-mvc
Marzouk architecture encouches-jee-mvc
 
SQL Server et les développeurs
SQL Server et les développeurs SQL Server et les développeurs
SQL Server et les développeurs
 
Cours spring
Cours springCours spring
Cours spring
 
Retour d'expérience : rendre votre IT agile grâce au cloud hybride
Retour d'expérience : rendre votre IT agile grâce au cloud hybrideRetour d'expérience : rendre votre IT agile grâce au cloud hybride
Retour d'expérience : rendre votre IT agile grâce au cloud hybride
 
Retour d'expérience : rendre votre IT agile grâce au cloud hybride
Retour d'expérience : rendre votre IT agile grâce au cloud hybrideRetour d'expérience : rendre votre IT agile grâce au cloud hybride
Retour d'expérience : rendre votre IT agile grâce au cloud hybride
 
Cours Génie Logiciel 2016
Cours Génie Logiciel 2016Cours Génie Logiciel 2016
Cours Génie Logiciel 2016
 
Patterns Windows Azure
Patterns Windows AzurePatterns Windows Azure
Patterns Windows Azure
 
Sql azure performance et montee en charge (1)
Sql azure   performance et montee en charge (1)Sql azure   performance et montee en charge (1)
Sql azure performance et montee en charge (1)
 
TechDays 2012 - Windows Azure
TechDays 2012 - Windows AzureTechDays 2012 - Windows Azure
TechDays 2012 - Windows Azure
 
Architecture, bonnes pratiques et recettes pour la réussite de vos projets av...
Architecture, bonnes pratiques et recettes pour la réussite de vos projets av...Architecture, bonnes pratiques et recettes pour la réussite de vos projets av...
Architecture, bonnes pratiques et recettes pour la réussite de vos projets av...
 
Design Patterns Java
Design Patterns JavaDesign Patterns Java
Design Patterns Java
 

Design applicatif avec symfony2