SlideShare uma empresa Scribd logo
1 de 26
Baixar para ler offline
Clean Architecture
Meetup Alt.Net
Agenda
A multi-brand / multi-country galaxy
A brief of technical history
Actual technical solution
Team organization
227/06/2013 Clean Architecture / Meetup Alt.Net
A multi-brand / multi-country galaxy
3Clean Architecture / Meetup Alt.Net6/27/2013
.COM
.COM
.COM
.COM - .IT
.FR - .COM - .IT
.FR - .COM - .IT
.COM - .IT
.FR
.FR - .COM - .IT
A brief of technical history
27/06/2013 Clean Architecture / Meetup Alt.Net # 4
SPORTSBOOK (PRE LIVE / LIVE)
TURF
CASINO / LIVE CASINO / GAMES
COMMON
BETCLIC.FR
(VB.Net WebFoms)
BETCLIC.COM
(VB.Net WebFoms)
BETCLIC.IT
(C# WebForms)
COMMON COMMON
SPORTSBOOK (PRE LIVE / LIVE) SPORTSBOOK (PRE LIVE / LIVE)
POKER
CASINO / LIVE CASINO / GAMES
POKERPOKER
BETCLIC.IT
(C# MVC)
POKER MVC
(Almost) Actual technical solution
27/06/2013 Clean Architecture / Meetup Alt.Net # 5
BETCLIC.FR BETCLIC.COM BETCLIC.IT
SPORTSBOOK (PRE LIVE / LIVE) - (ASP.Net MVC4)
TURF - (ASP.Net MVC4)
POKER - (ASP.Net MVC4)
CASINO / LIVE CASINO / GAMES - (ASP.Net MVC4)
GLOBAL (REGISTER / PAYMENT / MY ACCOUNT) – (Portable areas)
Actual technical solution – Portable Areas
27/06/2013 Clean Architecture / Meetup Alt.Net # 6
 A Portable Area is a dll that contains items that would normally be part of your
solution.
 Portable Areas contain Views, Controllers, Models, even JS Scripts, CSS files
and images.
 The items in your Portable Area work together to create cohesive functionality.
 Portable Areas are meant for mature functionality to be re-used in multiple
projects or solutions as-is.
 Apache License 2.0
Actual technical solution - Views
27/06/2013 Clean Architecture / Meetup Alt.Net # 7
A custom ViewEngine
The deeper you go, the more specific you get
Global customization – Register functionnality
6/27/2013 Clean Architecture / Meetup Alt.Net # 8
Betclic.com
• Provider
Betclic.fr
• Provider
• ARJEL
Everest.com
• Provider
Everest.fr
• Provider
• ARJEL
Register Basically, it’s just creating an account but…
Global customization
6/27/2013 Clean Architecture / Meetup Alt.Net # 9
.FR
.FR .COM .IT
GLOBAL
Common domain
layer
Specific legislation
customization
Brand
customization
Output Websites
New
market
.COM .IT .COM
Actual technical solution - Views
27/06/2013 Clean Architecture / Meetup Alt.Net # 10
Register View
Actual technical solution - Views
27/06/2013 Clean Architecture / Meetup Alt.Net # 11
Personal Details .Com Partial View Personal Details .Fr Partial View
Clean Architecture
6/27/2013 Clean Architecture / Meetup Alt.Net # 12
What Uncle Bob says:
“A good architecture allows you to defer critical decisions like the UI,
frameworks, database, etc.”
“A good architecture allows you to defer critical decisions, it doesn’t force you to
defer them. However, if you can defer them, it means you have lots of flexibility.
For example, you could create an interim simple UI for the first few sprints, and
then replace it with a more capable UI later.”
“The application code is completely decoupled from the UI. You can test the
application code without the UI present. You don’t need to fire up the web server,
or the container, or Rails, or any of the other frameworks in order to run your
tests.”
6/27/2013 Clean Architecture / Meetup Alt.Net
Inftrastructure /
DAL
Core / BLL
UI
DB
Utilities/Common/Shared
nHibernate /
Entity Fmwk
ASP.NET
Log4Net
AutoMapper
StructureMap
Traditional n-tiers
Architecture
Onion Architecture
27/06/2013 Clean Architecture / Meetup Alt.Net # 14
User Interface
Application Services
Domain Services
Domain
Model
Dependency Resolution
Onion Architecture
27/06/2013 Clean Architecture / Meetup Alt.Net # 15
• Everything unique to the business: Domain model, validation rules,
business workflows
• Defines all technical implementation (non-business) needs as interfaces
• CANNOT reference any external libraries
• NO technology specific code
Core
• Provide implementations for Core interfaces
• Call web services, access a database
• CAN reference external libraries to provide implementations
• ONLY technology specific code (non-business) belongs in infrastructure
Infrastructure
• Very thin layer, has no logic of its own
• Wires up Core interfaces to Infrastructure implementations.
• Runs startup/configuration logic
Dependency
Resolution
Onion Architecture - Benefits
27/06/2013 Clean Architecture / Meetup Alt.Net # 16
– Draw application using concentric circles
– Direction of dependency is toward the center
– Externalize all technology related code
– Limit re-write necessity over time as business logic is entirely self-
contained
– Developers know where components go
– Infrastructure is free to use any provider to do its work
– Business logic has no dependency tentacles
– True loose coupling between layers/components
– UI and Data Access “layers” become much smaller, deal strictly with
technology-related code
Teams organization
27/06/2013 Clean Architecture / Meetup Alt.Net # 17
Global Team
Global packages
Sport Front Team
Casino Front Team
Poker Front Team
Turf Front Team
Teams organization
27/06/2013 Clean Architecture / Meetup Alt.Net # 18
Sport Team
RM Team
Sport.Betclic.fr
Sport.Betclic.com
Sport.Expekt.com
Teams organization
# 19
 Head of region decides how he wants his area to evolve
 Each IT domain addresses all brands / all sites
 One Program manager for each domain
 Product Owners manage agile product backlog in sprint
 Each development team has a Project Leader + a Lead Developer
BETCLIC.FR BETCLIC.COM BETCLIC.IT
SPORTSBOOK (PRE LIVE / LIVE)
TURF
POKER
CASINO / LIVE CASINO / GAMES
GLOBAL (REGISTER / PAYMENT / MY ACCOUNT)Global Dev Team
Sport Dev Team
Business
Poker Dev Team
Casino Dev Team
Turf Dev Team
Business Business
Questions?
27/06/2013 Clean Architecture / Meetup Alt.Net # 20
References / Links
27/06/2013 Clean Architecture / Meetup Alt.Net # 21
– Uncle Bob – Clean Architecture
– Jeffrey Palermo
– Matt Hidinger
– Me and the Onion on StackOverflow
– Betclic Tech Blog
Clean Architecture (Alt.Net Meetup on 26/06/2013)
Clean Architecture (Alt.Net Meetup on 26/06/2013)
Clean Architecture (Alt.Net Meetup on 26/06/2013)
Clean Architecture (Alt.Net Meetup on 26/06/2013)
Clean Architecture (Alt.Net Meetup on 26/06/2013)

Mais conteúdo relacionado

Mais procurados

Internet of Things 101 - For software engineers
Internet of Things 101 - For software engineersInternet of Things 101 - For software engineers
Internet of Things 101 - For software engineersKashif Ali Siddiqui
 
Building applications in a Micro-frontends way
Building applications in a Micro-frontends wayBuilding applications in a Micro-frontends way
Building applications in a Micro-frontends wayPrasanna Venkatesan
 
Building rich domain models with ddd and tdd ivan paulovich - betsson
Building rich domain models with ddd and tdd   ivan paulovich - betssonBuilding rich domain models with ddd and tdd   ivan paulovich - betsson
Building rich domain models with ddd and tdd ivan paulovich - betssonIvan Paulovich
 
Click, Click, Test - Automated Tests for APEX Applications
Click, Click, Test - Automated Tests for APEX ApplicationsClick, Click, Test - Automated Tests for APEX Applications
Click, Click, Test - Automated Tests for APEX ApplicationsKai Donato
 
Evolutionary architecture guiding principles
Evolutionary architecture guiding principlesEvolutionary architecture guiding principles
Evolutionary architecture guiding principlesAidan Casey
 
How can agile help you in clearing the technical debt
How can agile help you in clearing the technical debtHow can agile help you in clearing the technical debt
How can agile help you in clearing the technical debtManu Pk
 
How to build a JavaScript toolkit
How to build a JavaScript toolkitHow to build a JavaScript toolkit
How to build a JavaScript toolkitMichael Nelson
 
Rapid With Spring Roo
Rapid With Spring RooRapid With Spring Roo
Rapid With Spring RooMorten Lileng
 
Introduction to NativeScript - BuildTruly Native Apps using JavaScript
Introduction to NativeScript - BuildTruly Native Apps using JavaScriptIntroduction to NativeScript - BuildTruly Native Apps using JavaScript
Introduction to NativeScript - BuildTruly Native Apps using JavaScriptLohith Goudagere Nagaraj
 
Scott Schuster Portfolio 04262011
Scott Schuster Portfolio 04262011Scott Schuster Portfolio 04262011
Scott Schuster Portfolio 04262011schusco12
 
13 providing an ide for creating, simulating and assessing accessible applica...
13 providing an ide for creating, simulating and assessing accessible applica...13 providing an ide for creating, simulating and assessing accessible applica...
13 providing an ide for creating, simulating and assessing accessible applica...AEGIS-ACCESSIBLE Projects
 
TUTTO SU VISUAL STUDIO ALM 2015
TUTTO SU VISUAL STUDIO ALM 2015TUTTO SU VISUAL STUDIO ALM 2015
TUTTO SU VISUAL STUDIO ALM 2015DotNetCampus
 
MWLUG - Universal Java
MWLUG  -  Universal JavaMWLUG  -  Universal Java
MWLUG - Universal JavaPhilippe Riand
 
Que hay de nuevo en Visual Studio 2013 y ASP.NET 5.1
Que hay de nuevo en Visual Studio 2013 y ASP.NET 5.1Que hay de nuevo en Visual Studio 2013 y ASP.NET 5.1
Que hay de nuevo en Visual Studio 2013 y ASP.NET 5.1Rodolfo Finochietti
 
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 PaulovichIvan Paulovich
 
Native Script by Sebastian Witalec
Native Script by Sebastian WitalecNative Script by Sebastian Witalec
Native Script by Sebastian WitalecSimone Basso
 
apidays LIVE New York 2021 - Why Software Teams Struggle with API Security Te...
apidays LIVE New York 2021 - Why Software Teams Struggle with API Security Te...apidays LIVE New York 2021 - Why Software Teams Struggle with API Security Te...
apidays LIVE New York 2021 - Why Software Teams Struggle with API Security Te...apidays
 
Clean Architecture Essentials - Stockholm Software Craftsmanship
Clean Architecture Essentials - Stockholm Software CraftsmanshipClean Architecture Essentials - Stockholm Software Craftsmanship
Clean Architecture Essentials - Stockholm Software CraftsmanshipIvan Paulovich
 
apidays LIVE New York 2021 - Designing API's: Less Data is More! by Damir Svr...
apidays LIVE New York 2021 - Designing API's: Less Data is More! by Damir Svr...apidays LIVE New York 2021 - Designing API's: Less Data is More! by Damir Svr...
apidays LIVE New York 2021 - Designing API's: Less Data is More! by Damir Svr...apidays
 

Mais procurados (20)

Internet of Things 101 - For software engineers
Internet of Things 101 - For software engineersInternet of Things 101 - For software engineers
Internet of Things 101 - For software engineers
 
Building applications in a Micro-frontends way
Building applications in a Micro-frontends wayBuilding applications in a Micro-frontends way
Building applications in a Micro-frontends way
 
Building rich domain models with ddd and tdd ivan paulovich - betsson
Building rich domain models with ddd and tdd   ivan paulovich - betssonBuilding rich domain models with ddd and tdd   ivan paulovich - betsson
Building rich domain models with ddd and tdd ivan paulovich - betsson
 
Click, Click, Test - Automated Tests for APEX Applications
Click, Click, Test - Automated Tests for APEX ApplicationsClick, Click, Test - Automated Tests for APEX Applications
Click, Click, Test - Automated Tests for APEX Applications
 
Evolutionary architecture guiding principles
Evolutionary architecture guiding principlesEvolutionary architecture guiding principles
Evolutionary architecture guiding principles
 
How can agile help you in clearing the technical debt
How can agile help you in clearing the technical debtHow can agile help you in clearing the technical debt
How can agile help you in clearing the technical debt
 
How to build a JavaScript toolkit
How to build a JavaScript toolkitHow to build a JavaScript toolkit
How to build a JavaScript toolkit
 
Rapid With Spring Roo
Rapid With Spring RooRapid With Spring Roo
Rapid With Spring Roo
 
Getting Started with ASP.NET vNext
Getting Started with ASP.NET vNextGetting Started with ASP.NET vNext
Getting Started with ASP.NET vNext
 
Introduction to NativeScript - BuildTruly Native Apps using JavaScript
Introduction to NativeScript - BuildTruly Native Apps using JavaScriptIntroduction to NativeScript - BuildTruly Native Apps using JavaScript
Introduction to NativeScript - BuildTruly Native Apps using JavaScript
 
Scott Schuster Portfolio 04262011
Scott Schuster Portfolio 04262011Scott Schuster Portfolio 04262011
Scott Schuster Portfolio 04262011
 
13 providing an ide for creating, simulating and assessing accessible applica...
13 providing an ide for creating, simulating and assessing accessible applica...13 providing an ide for creating, simulating and assessing accessible applica...
13 providing an ide for creating, simulating and assessing accessible applica...
 
TUTTO SU VISUAL STUDIO ALM 2015
TUTTO SU VISUAL STUDIO ALM 2015TUTTO SU VISUAL STUDIO ALM 2015
TUTTO SU VISUAL STUDIO ALM 2015
 
MWLUG - Universal Java
MWLUG  -  Universal JavaMWLUG  -  Universal Java
MWLUG - Universal Java
 
Que hay de nuevo en Visual Studio 2013 y ASP.NET 5.1
Que hay de nuevo en Visual Studio 2013 y ASP.NET 5.1Que hay de nuevo en Visual Studio 2013 y ASP.NET 5.1
Que hay de nuevo en Visual Studio 2013 y ASP.NET 5.1
 
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
 
Native Script by Sebastian Witalec
Native Script by Sebastian WitalecNative Script by Sebastian Witalec
Native Script by Sebastian Witalec
 
apidays LIVE New York 2021 - Why Software Teams Struggle with API Security Te...
apidays LIVE New York 2021 - Why Software Teams Struggle with API Security Te...apidays LIVE New York 2021 - Why Software Teams Struggle with API Security Te...
apidays LIVE New York 2021 - Why Software Teams Struggle with API Security Te...
 
Clean Architecture Essentials - Stockholm Software Craftsmanship
Clean Architecture Essentials - Stockholm Software CraftsmanshipClean Architecture Essentials - Stockholm Software Craftsmanship
Clean Architecture Essentials - Stockholm Software Craftsmanship
 
apidays LIVE New York 2021 - Designing API's: Less Data is More! by Damir Svr...
apidays LIVE New York 2021 - Designing API's: Less Data is More! by Damir Svr...apidays LIVE New York 2021 - Designing API's: Less Data is More! by Damir Svr...
apidays LIVE New York 2021 - Designing API's: Less Data is More! by Damir Svr...
 

Destaque

ImplementingChangeTrackingAndFlagging
ImplementingChangeTrackingAndFlaggingImplementingChangeTrackingAndFlagging
ImplementingChangeTrackingAndFlaggingSuite Solutions
 
Feature flagsareflawed
Feature flagsareflawedFeature flagsareflawed
Feature flagsareflawedStephen Young
 
Clean Architecture
Clean ArchitectureClean Architecture
Clean ArchitectureBadoo
 
The Cultural Changes of Feature Flagging
The Cultural Changes of Feature FlaggingThe Cultural Changes of Feature Flagging
The Cultural Changes of Feature FlaggingLaunchDarkly
 
Seguridad en Cloud Pública, de los mitos a la realidad - Codemotion 2015
Seguridad en Cloud Pública, de los mitos a la realidad - Codemotion 2015Seguridad en Cloud Pública, de los mitos a la realidad - Codemotion 2015
Seguridad en Cloud Pública, de los mitos a la realidad - Codemotion 2015Arsys
 
Scrum em Escala: de volta às origens
Scrum em Escala: de volta às origensScrum em Escala: de volta às origens
Scrum em Escala: de volta às origensRodrigo Silva Pinto
 
Turmeric patent dispute
Turmeric patent disputeTurmeric patent dispute
Turmeric patent disputeDevyani Joshi
 
Facilitation patterns and antipatterns workshop
Facilitation patterns and antipatterns workshopFacilitation patterns and antipatterns workshop
Facilitation patterns and antipatterns workshopDoc List
 
Plant layout of capsules industrial pharmacy
Plant layout of capsules   industrial pharmacyPlant layout of capsules   industrial pharmacy
Plant layout of capsules industrial pharmacyJessica Fernandes
 
Group 3 Case Study of PayPal
Group 3 Case Study of PayPalGroup 3 Case Study of PayPal
Group 3 Case Study of PayPaldanmatheny
 
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next LevelAgile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next LevelCraig Smith
 
Los emojis en la comunicación
Los emojis en la comunicaciónLos emojis en la comunicación
Los emojis en la comunicaciónAntoni
 
Continuous Delivery and Feature Flagging
Continuous Delivery and Feature FlaggingContinuous Delivery and Feature Flagging
Continuous Delivery and Feature FlaggingLaunchDarkly
 
Types of maintenance of industrial pharmacy
Types of maintenance of industrial pharmacyTypes of maintenance of industrial pharmacy
Types of maintenance of industrial pharmacyJessica Fernandes
 
Similarity and difference factors of dissolution
Similarity and difference factors of dissolutionSimilarity and difference factors of dissolution
Similarity and difference factors of dissolutionJessica Fernandes
 
Launch your own: Corporate innovation accelerator
Launch your own: Corporate innovation acceleratorLaunch your own: Corporate innovation accelerator
Launch your own: Corporate innovation acceleratorBoard of Innovation
 
Going All XP On Your Business
Going All XP On Your BusinessGoing All XP On Your Business
Going All XP On Your BusinessCraig Smith
 
Why agile doesn't work in your organization
Why agile doesn't work in your organizationWhy agile doesn't work in your organization
Why agile doesn't work in your organizationGino Marckx
 

Destaque (20)

How to Discipline Effectively
How to Discipline Effectively   How to Discipline Effectively
How to Discipline Effectively
 
ImplementingChangeTrackingAndFlagging
ImplementingChangeTrackingAndFlaggingImplementingChangeTrackingAndFlagging
ImplementingChangeTrackingAndFlagging
 
Feature flagsareflawed
Feature flagsareflawedFeature flagsareflawed
Feature flagsareflawed
 
Clean Architecture
Clean ArchitectureClean Architecture
Clean Architecture
 
The Cultural Changes of Feature Flagging
The Cultural Changes of Feature FlaggingThe Cultural Changes of Feature Flagging
The Cultural Changes of Feature Flagging
 
Seguridad en Cloud Pública, de los mitos a la realidad - Codemotion 2015
Seguridad en Cloud Pública, de los mitos a la realidad - Codemotion 2015Seguridad en Cloud Pública, de los mitos a la realidad - Codemotion 2015
Seguridad en Cloud Pública, de los mitos a la realidad - Codemotion 2015
 
Scrum em Escala: de volta às origens
Scrum em Escala: de volta às origensScrum em Escala: de volta às origens
Scrum em Escala: de volta às origens
 
Turmeric patent dispute
Turmeric patent disputeTurmeric patent dispute
Turmeric patent dispute
 
Facilitation patterns and antipatterns workshop
Facilitation patterns and antipatterns workshopFacilitation patterns and antipatterns workshop
Facilitation patterns and antipatterns workshop
 
Plant layout of capsules industrial pharmacy
Plant layout of capsules   industrial pharmacyPlant layout of capsules   industrial pharmacy
Plant layout of capsules industrial pharmacy
 
Group 3 Case Study of PayPal
Group 3 Case Study of PayPalGroup 3 Case Study of PayPal
Group 3 Case Study of PayPal
 
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next LevelAgile Tool Hacking - Taking Your Agile Development Tools To The Next Level
Agile Tool Hacking - Taking Your Agile Development Tools To The Next Level
 
Los emojis en la comunicación
Los emojis en la comunicaciónLos emojis en la comunicación
Los emojis en la comunicación
 
Continuous Delivery and Feature Flagging
Continuous Delivery and Feature FlaggingContinuous Delivery and Feature Flagging
Continuous Delivery and Feature Flagging
 
Types of maintenance of industrial pharmacy
Types of maintenance of industrial pharmacyTypes of maintenance of industrial pharmacy
Types of maintenance of industrial pharmacy
 
Quality by Design : Design of experiments
Quality by Design : Design of experimentsQuality by Design : Design of experiments
Quality by Design : Design of experiments
 
Similarity and difference factors of dissolution
Similarity and difference factors of dissolutionSimilarity and difference factors of dissolution
Similarity and difference factors of dissolution
 
Launch your own: Corporate innovation accelerator
Launch your own: Corporate innovation acceleratorLaunch your own: Corporate innovation accelerator
Launch your own: Corporate innovation accelerator
 
Going All XP On Your Business
Going All XP On Your BusinessGoing All XP On Your Business
Going All XP On Your Business
 
Why agile doesn't work in your organization
Why agile doesn't work in your organizationWhy agile doesn't work in your organization
Why agile doesn't work in your organization
 

Semelhante a Clean Architecture (Alt.Net Meetup on 26/06/2013)

Cloud-Native .Net des applications containerisées .Net sur Linux, Windows e...
 Cloud-Native .Net des applications containerisées .Net sur Linux, Windows e... Cloud-Native .Net des applications containerisées .Net sur Linux, Windows e...
Cloud-Native .Net des applications containerisées .Net sur Linux, Windows e...VMware Tanzu
 
Workshop About Software Engineering Skills 2019
Workshop About Software Engineering Skills 2019Workshop About Software Engineering Skills 2019
Workshop About Software Engineering Skills 2019PhuocNT (Fresher.VN)
 
Plastic SCM: Entreprise Version Control Platform for Modern Applications and ...
Plastic SCM: Entreprise Version Control Platform for Modern Applications and ...Plastic SCM: Entreprise Version Control Platform for Modern Applications and ...
Plastic SCM: Entreprise Version Control Platform for Modern Applications and ...Kiko Monteverde
 
Ports-and-Adapters Architecture for Embedded HMI
Ports-and-Adapters Architecture for Embedded HMIPorts-and-Adapters Architecture for Embedded HMI
Ports-and-Adapters Architecture for Embedded HMIBurkhard Stubert
 
Agile Mëtteg series session 7
Agile Mëtteg series session 7Agile Mëtteg series session 7
Agile Mëtteg series session 7Agile Partner S.A.
 
Employee Info Starter Kit
Employee Info Starter KitEmployee Info Starter Kit
Employee Info Starter Kitjoycsc
 
From Embedded to IoT and From Cloud to Edge & AIoT -- A computer technology t...
From Embedded to IoT and From Cloud to Edge & AIoT -- A computer technology t...From Embedded to IoT and From Cloud to Edge & AIoT -- A computer technology t...
From Embedded to IoT and From Cloud to Edge & AIoT -- A computer technology t...William Liang
 
ODSA - Business Workstream
ODSA - Business WorkstreamODSA - Business Workstream
ODSA - Business WorkstreamODSA Workgroup
 
Anypoint Tools and MuleSoft Automation (DRAFT).pptx
Anypoint Tools and MuleSoft Automation (DRAFT).pptxAnypoint Tools and MuleSoft Automation (DRAFT).pptx
Anypoint Tools and MuleSoft Automation (DRAFT).pptxAkshata Sawant
 
MuleSoft Meetup #9 - Anypoint Tools and MuleSoft Automation (FINAL).pptx
MuleSoft Meetup #9 - Anypoint Tools and MuleSoft Automation (FINAL).pptxMuleSoft Meetup #9 - Anypoint Tools and MuleSoft Automation (FINAL).pptx
MuleSoft Meetup #9 - Anypoint Tools and MuleSoft Automation (FINAL).pptxSteve Clarke
 
SACON NY 19: "Creating an effective developer experience for cloud-native apps"
SACON NY 19: "Creating an effective developer experience for cloud-native apps"SACON NY 19: "Creating an effective developer experience for cloud-native apps"
SACON NY 19: "Creating an effective developer experience for cloud-native apps"Daniel Bryant
 
OCTO On-Site Off-Site Update on D8 Roadmap
OCTO On-Site Off-Site Update on D8 RoadmapOCTO On-Site Off-Site Update on D8 Roadmap
OCTO On-Site Off-Site Update on D8 RoadmapAngela Byron
 
Micro Front-End & Microservices - Plansoft
Micro Front-End & Microservices - PlansoftMicro Front-End & Microservices - Plansoft
Micro Front-End & Microservices - PlansoftMiki Lombardi
 
Why the yocto project for my io t project elc_edinburgh_2018
Why the yocto project for my io t project elc_edinburgh_2018Why the yocto project for my io t project elc_edinburgh_2018
Why the yocto project for my io t project elc_edinburgh_2018Mender.io
 
Sogeti Java Meetup - How to ensure your code is maintainable
Sogeti Java Meetup - How to ensure your code is maintainableSogeti Java Meetup - How to ensure your code is maintainable
Sogeti Java Meetup - How to ensure your code is maintainablePeter Rombouts
 
Agile Architecture (MAE slides)
Agile Architecture (MAE slides)Agile Architecture (MAE slides)
Agile Architecture (MAE slides)Richard Green
 
[Oracle Webcast] Discover the Oracle Blockchain Platform through the eyes of ...
[Oracle Webcast] Discover the Oracle Blockchain Platform through the eyes of ...[Oracle Webcast] Discover the Oracle Blockchain Platform through the eyes of ...
[Oracle Webcast] Discover the Oracle Blockchain Platform through the eyes of ...Sanae BEKKAR
 
The Architecture Of Software Defined Radios Essay
The Architecture Of Software Defined Radios EssayThe Architecture Of Software Defined Radios Essay
The Architecture Of Software Defined Radios EssayDivya Watson
 

Semelhante a Clean Architecture (Alt.Net Meetup on 26/06/2013) (20)

Cloud-Native .Net des applications containerisées .Net sur Linux, Windows e...
 Cloud-Native .Net des applications containerisées .Net sur Linux, Windows e... Cloud-Native .Net des applications containerisées .Net sur Linux, Windows e...
Cloud-Native .Net des applications containerisées .Net sur Linux, Windows e...
 
Workshop About Software Engineering Skills 2019
Workshop About Software Engineering Skills 2019Workshop About Software Engineering Skills 2019
Workshop About Software Engineering Skills 2019
 
Plastic SCM: Entreprise Version Control Platform for Modern Applications and ...
Plastic SCM: Entreprise Version Control Platform for Modern Applications and ...Plastic SCM: Entreprise Version Control Platform for Modern Applications and ...
Plastic SCM: Entreprise Version Control Platform for Modern Applications and ...
 
Ports-and-Adapters Architecture for Embedded HMI
Ports-and-Adapters Architecture for Embedded HMIPorts-and-Adapters Architecture for Embedded HMI
Ports-and-Adapters Architecture for Embedded HMI
 
Agile Mëtteg series session 7
Agile Mëtteg series session 7Agile Mëtteg series session 7
Agile Mëtteg series session 7
 
Employee Info Starter Kit
Employee Info Starter KitEmployee Info Starter Kit
Employee Info Starter Kit
 
From Embedded to IoT and From Cloud to Edge & AIoT -- A computer technology t...
From Embedded to IoT and From Cloud to Edge & AIoT -- A computer technology t...From Embedded to IoT and From Cloud to Edge & AIoT -- A computer technology t...
From Embedded to IoT and From Cloud to Edge & AIoT -- A computer technology t...
 
ODSA - Business Workstream
ODSA - Business WorkstreamODSA - Business Workstream
ODSA - Business Workstream
 
Anypoint Tools and MuleSoft Automation (DRAFT).pptx
Anypoint Tools and MuleSoft Automation (DRAFT).pptxAnypoint Tools and MuleSoft Automation (DRAFT).pptx
Anypoint Tools and MuleSoft Automation (DRAFT).pptx
 
MuleSoft Meetup #9 - Anypoint Tools and MuleSoft Automation (FINAL).pptx
MuleSoft Meetup #9 - Anypoint Tools and MuleSoft Automation (FINAL).pptxMuleSoft Meetup #9 - Anypoint Tools and MuleSoft Automation (FINAL).pptx
MuleSoft Meetup #9 - Anypoint Tools and MuleSoft Automation (FINAL).pptx
 
SACON NY 19: "Creating an effective developer experience for cloud-native apps"
SACON NY 19: "Creating an effective developer experience for cloud-native apps"SACON NY 19: "Creating an effective developer experience for cloud-native apps"
SACON NY 19: "Creating an effective developer experience for cloud-native apps"
 
Contiki OS Research Projects Guidance
Contiki OS Research Projects GuidanceContiki OS Research Projects Guidance
Contiki OS Research Projects Guidance
 
OCTO On-Site Off-Site Update on D8 Roadmap
OCTO On-Site Off-Site Update on D8 RoadmapOCTO On-Site Off-Site Update on D8 Roadmap
OCTO On-Site Off-Site Update on D8 Roadmap
 
Micro Front-End & Microservices - Plansoft
Micro Front-End & Microservices - PlansoftMicro Front-End & Microservices - Plansoft
Micro Front-End & Microservices - Plansoft
 
24 Tips for SITECORE
24 Tips for SITECORE24 Tips for SITECORE
24 Tips for SITECORE
 
Why the yocto project for my io t project elc_edinburgh_2018
Why the yocto project for my io t project elc_edinburgh_2018Why the yocto project for my io t project elc_edinburgh_2018
Why the yocto project for my io t project elc_edinburgh_2018
 
Sogeti Java Meetup - How to ensure your code is maintainable
Sogeti Java Meetup - How to ensure your code is maintainableSogeti Java Meetup - How to ensure your code is maintainable
Sogeti Java Meetup - How to ensure your code is maintainable
 
Agile Architecture (MAE slides)
Agile Architecture (MAE slides)Agile Architecture (MAE slides)
Agile Architecture (MAE slides)
 
[Oracle Webcast] Discover the Oracle Blockchain Platform through the eyes of ...
[Oracle Webcast] Discover the Oracle Blockchain Platform through the eyes of ...[Oracle Webcast] Discover the Oracle Blockchain Platform through the eyes of ...
[Oracle Webcast] Discover the Oracle Blockchain Platform through the eyes of ...
 
The Architecture Of Software Defined Radios Essay
The Architecture Of Software Defined Radios EssayThe Architecture Of Software Defined Radios Essay
The Architecture Of Software Defined Radios Essay
 

Mais de Betclic Everest Group Tech Team

Mini-training: Personalization & Recommendation Demystified
Mini-training: Personalization & Recommendation DemystifiedMini-training: Personalization & Recommendation Demystified
Mini-training: Personalization & Recommendation DemystifiedBetclic Everest Group Tech Team
 

Mais de Betclic Everest Group Tech Team (20)

Mini training - Reactive Extensions (Rx)
Mini training - Reactive Extensions (Rx)Mini training - Reactive Extensions (Rx)
Mini training - Reactive Extensions (Rx)
 
Mini training - Moving to xUnit.net
Mini training - Moving to xUnit.netMini training - Moving to xUnit.net
Mini training - Moving to xUnit.net
 
Mini training - Introduction to Microsoft Azure Storage
Mini training - Introduction to Microsoft Azure StorageMini training - Introduction to Microsoft Azure Storage
Mini training - Introduction to Microsoft Azure Storage
 
Akka.Net
Akka.NetAkka.Net
Akka.Net
 
Mini training- Scenario Driven Design
Mini training- Scenario Driven DesignMini training- Scenario Driven Design
Mini training- Scenario Driven Design
 
Email Management in Outlook
Email Management in OutlookEmail Management in Outlook
Email Management in Outlook
 
Mini-Training: SSO with Windows Identity Foundation
Mini-Training: SSO with Windows Identity FoundationMini-Training: SSO with Windows Identity Foundation
Mini-Training: SSO with Windows Identity Foundation
 
Training - What is Performance ?
Training  - What is Performance ?Training  - What is Performance ?
Training - What is Performance ?
 
Mini-Training: Docker
Mini-Training: DockerMini-Training: Docker
Mini-Training: Docker
 
Mini Training Flyway
Mini Training FlywayMini Training Flyway
Mini Training Flyway
 
Mini-Training: NDepend
Mini-Training: NDependMini-Training: NDepend
Mini-Training: NDepend
 
Management 3.0 Workout
Management 3.0 WorkoutManagement 3.0 Workout
Management 3.0 Workout
 
Lean for Business
Lean for BusinessLean for Business
Lean for Business
 
Short-Training asp.net vNext
Short-Training asp.net vNextShort-Training asp.net vNext
Short-Training asp.net vNext
 
Training – Going Async
Training – Going AsyncTraining – Going Async
Training – Going Async
 
Mini-Training: Mobile UX Trends
Mini-Training: Mobile UX TrendsMini-Training: Mobile UX Trends
Mini-Training: Mobile UX Trends
 
Training: MVVM Pattern
Training: MVVM PatternTraining: MVVM Pattern
Training: MVVM Pattern
 
Mini-training: Personalization & Recommendation Demystified
Mini-training: Personalization & Recommendation DemystifiedMini-training: Personalization & Recommendation Demystified
Mini-training: Personalization & Recommendation Demystified
 
Mini-training: Let’s Git It!
Mini-training: Let’s Git It!Mini-training: Let’s Git It!
Mini-training: Let’s Git It!
 
AngularJS Best Practices
AngularJS Best PracticesAngularJS Best Practices
AngularJS Best Practices
 

Último

2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 

Último (20)

2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 

Clean Architecture (Alt.Net Meetup on 26/06/2013)

  • 2. Agenda A multi-brand / multi-country galaxy A brief of technical history Actual technical solution Team organization 227/06/2013 Clean Architecture / Meetup Alt.Net
  • 3. A multi-brand / multi-country galaxy 3Clean Architecture / Meetup Alt.Net6/27/2013 .COM .COM .COM .COM - .IT .FR - .COM - .IT .FR - .COM - .IT .COM - .IT .FR .FR - .COM - .IT
  • 4. A brief of technical history 27/06/2013 Clean Architecture / Meetup Alt.Net # 4 SPORTSBOOK (PRE LIVE / LIVE) TURF CASINO / LIVE CASINO / GAMES COMMON BETCLIC.FR (VB.Net WebFoms) BETCLIC.COM (VB.Net WebFoms) BETCLIC.IT (C# WebForms) COMMON COMMON SPORTSBOOK (PRE LIVE / LIVE) SPORTSBOOK (PRE LIVE / LIVE) POKER CASINO / LIVE CASINO / GAMES POKERPOKER BETCLIC.IT (C# MVC) POKER MVC
  • 5. (Almost) Actual technical solution 27/06/2013 Clean Architecture / Meetup Alt.Net # 5 BETCLIC.FR BETCLIC.COM BETCLIC.IT SPORTSBOOK (PRE LIVE / LIVE) - (ASP.Net MVC4) TURF - (ASP.Net MVC4) POKER - (ASP.Net MVC4) CASINO / LIVE CASINO / GAMES - (ASP.Net MVC4) GLOBAL (REGISTER / PAYMENT / MY ACCOUNT) – (Portable areas)
  • 6. Actual technical solution – Portable Areas 27/06/2013 Clean Architecture / Meetup Alt.Net # 6  A Portable Area is a dll that contains items that would normally be part of your solution.  Portable Areas contain Views, Controllers, Models, even JS Scripts, CSS files and images.  The items in your Portable Area work together to create cohesive functionality.  Portable Areas are meant for mature functionality to be re-used in multiple projects or solutions as-is.  Apache License 2.0
  • 7. Actual technical solution - Views 27/06/2013 Clean Architecture / Meetup Alt.Net # 7 A custom ViewEngine The deeper you go, the more specific you get
  • 8. Global customization – Register functionnality 6/27/2013 Clean Architecture / Meetup Alt.Net # 8 Betclic.com • Provider Betclic.fr • Provider • ARJEL Everest.com • Provider Everest.fr • Provider • ARJEL Register Basically, it’s just creating an account but…
  • 9. Global customization 6/27/2013 Clean Architecture / Meetup Alt.Net # 9 .FR .FR .COM .IT GLOBAL Common domain layer Specific legislation customization Brand customization Output Websites New market .COM .IT .COM
  • 10. Actual technical solution - Views 27/06/2013 Clean Architecture / Meetup Alt.Net # 10 Register View
  • 11. Actual technical solution - Views 27/06/2013 Clean Architecture / Meetup Alt.Net # 11 Personal Details .Com Partial View Personal Details .Fr Partial View
  • 12. Clean Architecture 6/27/2013 Clean Architecture / Meetup Alt.Net # 12 What Uncle Bob says: “A good architecture allows you to defer critical decisions like the UI, frameworks, database, etc.” “A good architecture allows you to defer critical decisions, it doesn’t force you to defer them. However, if you can defer them, it means you have lots of flexibility. For example, you could create an interim simple UI for the first few sprints, and then replace it with a more capable UI later.” “The application code is completely decoupled from the UI. You can test the application code without the UI present. You don’t need to fire up the web server, or the container, or Rails, or any of the other frameworks in order to run your tests.”
  • 13. 6/27/2013 Clean Architecture / Meetup Alt.Net Inftrastructure / DAL Core / BLL UI DB Utilities/Common/Shared nHibernate / Entity Fmwk ASP.NET Log4Net AutoMapper StructureMap Traditional n-tiers Architecture
  • 14. Onion Architecture 27/06/2013 Clean Architecture / Meetup Alt.Net # 14 User Interface Application Services Domain Services Domain Model Dependency Resolution
  • 15. Onion Architecture 27/06/2013 Clean Architecture / Meetup Alt.Net # 15 • Everything unique to the business: Domain model, validation rules, business workflows • Defines all technical implementation (non-business) needs as interfaces • CANNOT reference any external libraries • NO technology specific code Core • Provide implementations for Core interfaces • Call web services, access a database • CAN reference external libraries to provide implementations • ONLY technology specific code (non-business) belongs in infrastructure Infrastructure • Very thin layer, has no logic of its own • Wires up Core interfaces to Infrastructure implementations. • Runs startup/configuration logic Dependency Resolution
  • 16. Onion Architecture - Benefits 27/06/2013 Clean Architecture / Meetup Alt.Net # 16 – Draw application using concentric circles – Direction of dependency is toward the center – Externalize all technology related code – Limit re-write necessity over time as business logic is entirely self- contained – Developers know where components go – Infrastructure is free to use any provider to do its work – Business logic has no dependency tentacles – True loose coupling between layers/components – UI and Data Access “layers” become much smaller, deal strictly with technology-related code
  • 17. Teams organization 27/06/2013 Clean Architecture / Meetup Alt.Net # 17 Global Team Global packages Sport Front Team Casino Front Team Poker Front Team Turf Front Team
  • 18. Teams organization 27/06/2013 Clean Architecture / Meetup Alt.Net # 18 Sport Team RM Team Sport.Betclic.fr Sport.Betclic.com Sport.Expekt.com
  • 19. Teams organization # 19  Head of region decides how he wants his area to evolve  Each IT domain addresses all brands / all sites  One Program manager for each domain  Product Owners manage agile product backlog in sprint  Each development team has a Project Leader + a Lead Developer BETCLIC.FR BETCLIC.COM BETCLIC.IT SPORTSBOOK (PRE LIVE / LIVE) TURF POKER CASINO / LIVE CASINO / GAMES GLOBAL (REGISTER / PAYMENT / MY ACCOUNT)Global Dev Team Sport Dev Team Business Poker Dev Team Casino Dev Team Turf Dev Team Business Business
  • 21. References / Links 27/06/2013 Clean Architecture / Meetup Alt.Net # 21 – Uncle Bob – Clean Architecture – Jeffrey Palermo – Matt Hidinger – Me and the Onion on StackOverflow – Betclic Tech Blog