SlideShare une entreprise Scribd logo
Janvier 2018, Romain Kuzniak
Retour Opérationnel sur la
Clean Architecture
ROMAIN KUZNIAK
• CTO
• Arrivée en 2012 chez OpenClassrooms (à
l’époque le Site Du Zéro)
• Passionné d’agilité et de design applicatif
• @romainkuzniak
OpenClassrooms
Nous délivrons des cours en ligne.



Nous délivrons des formations dont le diplôme est reconnu
par l’état entièrement en ligne
• 3 millions de membres
• 30 millions de pages vues / mois
• PHP, React, iOS
• PostgreSQL
• AWS
Contexte
2012
• Site legacy =>Refonte
• Rigidité (difficulté de faire les changements)
• Fragilité (bugs issus des changements)
• Immobilité (réutilisation)
• Viscosité (design, difficulté de faire les bonnes choses; environnement,
temps de compilation, déploiements, tests …)
• Baisse de productivité
• Inaptitude au changement
Qu’est ce que la 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
Retour d’experience 4 ans après
PROS
• Suppression de la rigidité, fragilité, immobilité, viscosité
• Infrastructure, Frameworks et librairie parfaitement découplés
• Périmètre des tests adapté
• Environnement (déploiements, temps execution des tests …)
• Compétences des développeurs /Rétention des développeurs
• Orientation fonctionnelle
• Productivité linéaire
• Aptitude au changement
CONS
• Courbe d’apprentissage longue et complexe
• Peu de documentation
• Peu de retours d’expérience
• Peu de développeurs formés
• Quantité de code
• Plomberie
• Beaucoup de code pour générer un Use Case
Avez vous besoin de la Clean Architecture ?
PROBABLEMENT
• Vous vous retrouvez dans ce que j’ai dit !
• Rigidité, fragilité, immobilité, viscosité
• Baisse de productivité
• Inaptitude au changement
Devez vous implémenter la Clean
Architecture ?
PROBABLEMENT PAS
• Langage (pas tous adaptés)
• Courbe d’apprentissage trop importante
pour le moment
Merci

Contenu connexe

Tendances

Clean architecture
Clean architectureClean architecture
Clean architecture
Lieven Doclo
 
2012 the clean architecture by Uncle bob
2012 the clean architecture by Uncle bob 2012 the clean architecture by Uncle bob
2012 the clean architecture by Uncle bob
GEORGE LEON
 
DDD Tactical Design with Clean Architecture - Ivan Paulovich
DDD Tactical Design with Clean Architecture - Ivan PaulovichDDD Tactical Design with Clean Architecture - Ivan Paulovich
DDD Tactical Design with Clean Architecture - Ivan Paulovich
Ivan Paulovich
 
Clean architecture
Clean architectureClean architecture
Clean architecture
andbed
 
Hexagonal architecture - message-oriented software design
Hexagonal architecture  - message-oriented software designHexagonal architecture  - message-oriented software design
Hexagonal architecture - message-oriented software design
Matthias Noback
 
Spring JDBCTemplate
Spring JDBCTemplateSpring JDBCTemplate
Spring JDBCTemplate
Guo Albert
 
What is REST API? REST API Concepts and Examples | Edureka
What is REST API? REST API Concepts and Examples | EdurekaWhat is REST API? REST API Concepts and Examples | Edureka
What is REST API? REST API Concepts and Examples | Edureka
Edureka!
 
Clean Architecture
Clean ArchitectureClean Architecture
Clean Architecture
NSCoder Mexico
 
Microservice Architecture
Microservice ArchitectureMicroservice Architecture
Microservice Architecture
tyrantbrian
 
Repository and Unit Of Work Design Patterns
Repository and Unit Of Work Design PatternsRepository and Unit Of Work Design Patterns
Repository and Unit Of Work Design Patterns
Hatim Hakeel
 
Domain driven design
Domain driven designDomain driven design
Domain driven design
Amit Mukherjee
 
ASP.NET Core MVC + Web API with Overview
ASP.NET Core MVC + Web API with OverviewASP.NET Core MVC + Web API with Overview
ASP.NET Core MVC + Web API with Overview
Shahed Chowdhuri
 
Real Life Clean Architecture
Real Life Clean ArchitectureReal Life Clean Architecture
Real Life Clean Architecture
Mattia Battiston
 
Asp.net MVC training session
Asp.net MVC training sessionAsp.net MVC training session
Asp.net MVC training session
Hrichi Mohamed
 
C# REST API
C# REST APIC# REST API
C# REST API
Simplilearn
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven Design
Araf Karsh Hamid
 
Introduction au Domain Driven Design
Introduction au Domain Driven DesignIntroduction au Domain Driven Design
Introduction au Domain Driven Design
DNG Consulting
 
Domain Driven Design (DDD)
Domain Driven Design (DDD)Domain Driven Design (DDD)
Domain Driven Design (DDD)
Tom Kocjan
 
Spring data jpa
Spring data jpaSpring data jpa
Spring data jpa
Jeevesh Pandey
 
Clean architecture with asp.net core by Ardalis
Clean architecture with asp.net core by ArdalisClean architecture with asp.net core by Ardalis
Clean architecture with asp.net core by Ardalis
Steven Smith
 

Tendances (20)

Clean architecture
Clean architectureClean architecture
Clean architecture
 
2012 the clean architecture by Uncle bob
2012 the clean architecture by Uncle bob 2012 the clean architecture by Uncle bob
2012 the clean architecture by Uncle bob
 
DDD Tactical Design with Clean Architecture - Ivan Paulovich
DDD Tactical Design with Clean Architecture - Ivan PaulovichDDD Tactical Design with Clean Architecture - Ivan Paulovich
DDD Tactical Design with Clean Architecture - Ivan Paulovich
 
Clean architecture
Clean architectureClean architecture
Clean architecture
 
Hexagonal architecture - message-oriented software design
Hexagonal architecture  - message-oriented software designHexagonal architecture  - message-oriented software design
Hexagonal architecture - message-oriented software design
 
Spring JDBCTemplate
Spring JDBCTemplateSpring JDBCTemplate
Spring JDBCTemplate
 
What is REST API? REST API Concepts and Examples | Edureka
What is REST API? REST API Concepts and Examples | EdurekaWhat is REST API? REST API Concepts and Examples | Edureka
What is REST API? REST API Concepts and Examples | Edureka
 
Clean Architecture
Clean ArchitectureClean Architecture
Clean Architecture
 
Microservice Architecture
Microservice ArchitectureMicroservice Architecture
Microservice Architecture
 
Repository and Unit Of Work Design Patterns
Repository and Unit Of Work Design PatternsRepository and Unit Of Work Design Patterns
Repository and Unit Of Work Design Patterns
 
Domain driven design
Domain driven designDomain driven design
Domain driven design
 
ASP.NET Core MVC + Web API with Overview
ASP.NET Core MVC + Web API with OverviewASP.NET Core MVC + Web API with Overview
ASP.NET Core MVC + Web API with Overview
 
Real Life Clean Architecture
Real Life Clean ArchitectureReal Life Clean Architecture
Real Life Clean Architecture
 
Asp.net MVC training session
Asp.net MVC training sessionAsp.net MVC training session
Asp.net MVC training session
 
C# REST API
C# REST APIC# REST API
C# REST API
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven Design
 
Introduction au Domain Driven Design
Introduction au Domain Driven DesignIntroduction au Domain Driven Design
Introduction au Domain Driven Design
 
Domain Driven Design (DDD)
Domain Driven Design (DDD)Domain Driven Design (DDD)
Domain Driven Design (DDD)
 
Spring data jpa
Spring data jpaSpring data jpa
Spring data jpa
 
Clean architecture with asp.net core by Ardalis
Clean architecture with asp.net core by ArdalisClean architecture with asp.net core by Ardalis
Clean architecture with asp.net core by Ardalis
 

Similaire à Retour opérationnel sur la clean architecture

Objectif fluid&lt;fab />
Objectif fluid&lt;fab />Objectif fluid&lt;fab />
Objectif fluid&lt;fab />
∞ François CHERPION ∞
 
BreizhCamp 2022
BreizhCamp 2022BreizhCamp 2022
BreizhCamp 2022
SpikeeLabs
 
Agile lille 2015 devops etapres
Agile lille 2015 devops etapresAgile lille 2015 devops etapres
Agile lille 2015 devops etapres
Laurent Tardif
 
Meetup Devops Geneve 06/17- EBU Feedbacks
Meetup Devops Geneve 06/17- EBU Feedbacks Meetup Devops Geneve 06/17- EBU Feedbacks
Meetup Devops Geneve 06/17- EBU Feedbacks
Hidora
 
Design applicatif avec symfony2
Design applicatif avec symfony2Design applicatif avec symfony2
Design applicatif avec symfony2
RomainKuzniak
 
Sw 100 fr docker conteneurisation des applications
Sw 100 fr docker conteneurisation des applicationsSw 100 fr docker conteneurisation des applications
Sw 100 fr docker conteneurisation des applications
Stephane Woillez
 
Nuxeo en mode cloud SWORD Group - Nuxeo Tour 2014
Nuxeo en mode cloud SWORD Group - Nuxeo Tour 2014Nuxeo en mode cloud SWORD Group - Nuxeo Tour 2014
Nuxeo en mode cloud SWORD Group - Nuxeo Tour 2014
Nuxeo
 
Cerberus Testing
Cerberus TestingCerberus Testing
Cerberus Testing
CIVEL Benoit
 
TechDays 2014 : retour d'expérience Kompass migration Java dans Azure
TechDays 2014 : retour d'expérience Kompass migration Java dans AzureTechDays 2014 : retour d'expérience Kompass migration Java dans Azure
TechDays 2014 : retour d'expérience Kompass migration Java dans Azure
Thomas Conté
 
Esiea - 5A - Archi 1/3
Esiea - 5A - Archi 1/3Esiea - 5A - Archi 1/3
Esiea - 5A - Archi 1/3
Gaëtan ELEOUET
 
"J'ai migré mon SI intégralement en Java dans Windows Azure et je me porte bi...
"J'ai migré mon SI intégralement en Java dans Windows Azure et je me porte bi..."J'ai migré mon SI intégralement en Java dans Windows Azure et je me porte bi...
"J'ai migré mon SI intégralement en Java dans Windows Azure et je me porte bi...
Microsoft
 
Low code, lean et agilité sur les projets SHarePoint - SPS Dakar
Low code, lean et agilité sur les projets SHarePoint - SPS DakarLow code, lean et agilité sur les projets SHarePoint - SPS Dakar
Low code, lean et agilité sur les projets SHarePoint - SPS Dakar
Sébastien Paulet
 
SPS Dakar 2018 - Low code, lean et agilité - Sébastien Paulet
SPS Dakar 2018 - Low code, lean et agilité - Sébastien PauletSPS Dakar 2018 - Low code, lean et agilité - Sébastien Paulet
SPS Dakar 2018 - Low code, lean et agilité - Sébastien Paulet
aOS Community
 
Enrichir Ses Méthodes Avec des Processus Unifiés Agiles
Enrichir Ses Méthodes Avec des Processus Unifiés AgilesEnrichir Ses Méthodes Avec des Processus Unifiés Agiles
Enrichir Ses Méthodes Avec des Processus Unifiés Agiles
Romain Couturier
 
Les métiers du web
Les métiers du webLes métiers du web
Les métiers du web
Théo Chamley
 
Des bancs de l’école à la réalité en entreprise, retour d’expérience sur...
Des bancs de l’école à la réalité en entreprise, retour d’expérience sur...Des bancs de l’école à la réalité en entreprise, retour d’expérience sur...
Des bancs de l’école à la réalité en entreprise, retour d’expérience sur...
Scaleway
 
Dev opsday case study
Dev opsday   case studyDev opsday   case study
Dev opsday case study
Radoine Douhou
 
Du JavaScript dans mon projet
Du JavaScript dans mon projetDu JavaScript dans mon projet
Du JavaScript dans mon projet
jollivetc
 
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et ...
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et  ...Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et  ...
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et ...
Jasmine Conseil
 
Introduction DevOps & containarization des applications
Introduction DevOps & containarization des applicationsIntroduction DevOps & containarization des applications
Introduction DevOps & containarization des applications
Julien Chable
 

Similaire à Retour opérationnel sur la clean architecture (20)

Objectif fluid&lt;fab />
Objectif fluid&lt;fab />Objectif fluid&lt;fab />
Objectif fluid&lt;fab />
 
BreizhCamp 2022
BreizhCamp 2022BreizhCamp 2022
BreizhCamp 2022
 
Agile lille 2015 devops etapres
Agile lille 2015 devops etapresAgile lille 2015 devops etapres
Agile lille 2015 devops etapres
 
Meetup Devops Geneve 06/17- EBU Feedbacks
Meetup Devops Geneve 06/17- EBU Feedbacks Meetup Devops Geneve 06/17- EBU Feedbacks
Meetup Devops Geneve 06/17- EBU Feedbacks
 
Design applicatif avec symfony2
Design applicatif avec symfony2Design applicatif avec symfony2
Design applicatif avec symfony2
 
Sw 100 fr docker conteneurisation des applications
Sw 100 fr docker conteneurisation des applicationsSw 100 fr docker conteneurisation des applications
Sw 100 fr docker conteneurisation des applications
 
Nuxeo en mode cloud SWORD Group - Nuxeo Tour 2014
Nuxeo en mode cloud SWORD Group - Nuxeo Tour 2014Nuxeo en mode cloud SWORD Group - Nuxeo Tour 2014
Nuxeo en mode cloud SWORD Group - Nuxeo Tour 2014
 
Cerberus Testing
Cerberus TestingCerberus Testing
Cerberus Testing
 
TechDays 2014 : retour d'expérience Kompass migration Java dans Azure
TechDays 2014 : retour d'expérience Kompass migration Java dans AzureTechDays 2014 : retour d'expérience Kompass migration Java dans Azure
TechDays 2014 : retour d'expérience Kompass migration Java dans Azure
 
Esiea - 5A - Archi 1/3
Esiea - 5A - Archi 1/3Esiea - 5A - Archi 1/3
Esiea - 5A - Archi 1/3
 
"J'ai migré mon SI intégralement en Java dans Windows Azure et je me porte bi...
"J'ai migré mon SI intégralement en Java dans Windows Azure et je me porte bi..."J'ai migré mon SI intégralement en Java dans Windows Azure et je me porte bi...
"J'ai migré mon SI intégralement en Java dans Windows Azure et je me porte bi...
 
Low code, lean et agilité sur les projets SHarePoint - SPS Dakar
Low code, lean et agilité sur les projets SHarePoint - SPS DakarLow code, lean et agilité sur les projets SHarePoint - SPS Dakar
Low code, lean et agilité sur les projets SHarePoint - SPS Dakar
 
SPS Dakar 2018 - Low code, lean et agilité - Sébastien Paulet
SPS Dakar 2018 - Low code, lean et agilité - Sébastien PauletSPS Dakar 2018 - Low code, lean et agilité - Sébastien Paulet
SPS Dakar 2018 - Low code, lean et agilité - Sébastien Paulet
 
Enrichir Ses Méthodes Avec des Processus Unifiés Agiles
Enrichir Ses Méthodes Avec des Processus Unifiés AgilesEnrichir Ses Méthodes Avec des Processus Unifiés Agiles
Enrichir Ses Méthodes Avec des Processus Unifiés Agiles
 
Les métiers du web
Les métiers du webLes métiers du web
Les métiers du web
 
Des bancs de l’école à la réalité en entreprise, retour d’expérience sur...
Des bancs de l’école à la réalité en entreprise, retour d’expérience sur...Des bancs de l’école à la réalité en entreprise, retour d’expérience sur...
Des bancs de l’école à la réalité en entreprise, retour d’expérience sur...
 
Dev opsday case study
Dev opsday   case studyDev opsday   case study
Dev opsday case study
 
Du JavaScript dans mon projet
Du JavaScript dans mon projetDu JavaScript dans mon projet
Du JavaScript dans mon projet
 
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et ...
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et  ...Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et  ...
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et ...
 
Introduction DevOps & containarization des applications
Introduction DevOps & containarization des applicationsIntroduction DevOps & containarization des applications
Introduction DevOps & containarization des applications
 

Retour opérationnel sur la clean architecture