YOU ARE DOWNLOADING DOCUMENT

Please tick the box to continue:

Transcript
Page 1: Ncrafts.io - Refactor your software architecture

Refactor your Software Architecture

Page 2: Ncrafts.io - Refactor your software architecture

Who am I?Julien Lavigne du CadetDev lead at Criteo

http://fr.linkedin.com/in/julienlavigneducadet/@julienlavigne

Page 3: Ncrafts.io - Refactor your software architecture

How to structure yourenterprise applications

Page 4: Ncrafts.io - Refactor your software architecture

… a business problem!

We often start with…

Page 5: Ncrafts.io - Refactor your software architecture

That we try to solve with…

Page 6: Ncrafts.io - Refactor your software architecture

That we try to solve with…

Languages

Frameworks

Persistencetechnologies

Page 7: Ncrafts.io - Refactor your software architecture

...and a 3 tiers architecture

Business

Data

UI

Page 8: Ncrafts.io - Refactor your software architecture

…and a 3 tiers architecture

Asp.net MVC

SQL Server

Angular

Page 9: Ncrafts.io - Refactor your software architecture

…and a 3 tiers architecture

WCF

SQL Server

WPF

Page 10: Ncrafts.io - Refactor your software architecture

...and a 3 tiers architecture

Play

Oracle

Ember

Page 11: Ncrafts.io - Refactor your software architecture

With some layers…

DTOApplication LogicBusiness LogicData Access

Database

UI

Page 12: Ncrafts.io - Refactor your software architecture

With some layers…

Application LogicBusiness LogicData Access

Database

UI

Page 13: Ncrafts.io - Refactor your software architecture

And it grows…

Page 14: Ncrafts.io - Refactor your software architecture

And it grows…

… and it gets slow!

Page 15: Ncrafts.io - Refactor your software architecture

And it gets unmaintanable!

Page 16: Ncrafts.io - Refactor your software architecture

Why?Why?

Page 17: Ncrafts.io - Refactor your software architecture

Releases are all or nothing*

Page 18: Ncrafts.io - Refactor your software architecture

Releases are all or nothing**Some people will tell you that’s why we have stored procedures... Don’t trust them :p.

Page 19: Ncrafts.io - Refactor your software architecture

Refactorings are expansiveMigrating to new frameworks requires rewriting a whole layer

Page 20: Ncrafts.io - Refactor your software architecture

One size doesn’t fit allHard to have custom solutions for a vertical

Page 21: Ncrafts.io - Refactor your software architecture

What can we do?

Page 22: Ncrafts.io - Refactor your software architecture

We learned to split in the wrong direction

Page 23: Ncrafts.io - Refactor your software architecture

Split the system into small components…

Page 24: Ncrafts.io - Refactor your software architecture

… releasable independently from each other

Page 25: Ncrafts.io - Refactor your software architecture

Architecture:interfaces and interactions between our components

Page 26: Ncrafts.io - Refactor your software architecture

Business

Database

UI

Or how to go from…

Page 27: Ncrafts.io - Refactor your software architecture

UI

To…

Page 28: Ncrafts.io - Refactor your software architecture

UI

Or more realistically to…

Business

Database

Page 29: Ncrafts.io - Refactor your software architecture

UI

Or even that…

Business

Database

Job Scheduler

Page 30: Ncrafts.io - Refactor your software architecture

How do we proceed?

Page 31: Ncrafts.io - Refactor your software architecture

Start small

Page 32: Ncrafts.io - Refactor your software architecture

Identify one featurethat has few dependencies… Example: sending emails

Page 33: Ncrafts.io - Refactor your software architecture

Define the APIinterface & communication protocol

Page 34: Ncrafts.io - Refactor your software architecture

Choose an architectural style

RESTWEB SERVICESERVICE BUS…

Page 35: Ncrafts.io - Refactor your software architecture

What is the offered service?

Page 36: Ncrafts.io - Refactor your software architecture

What is the offered service?

InputsFROMTOTITLEBODY

Page 37: Ncrafts.io - Refactor your software architecture

What is the offered service?

InputsFROMTOTITLEBODY

OutputsACK / ERROR CODECALLBACKS / EVENTS

Page 38: Ncrafts.io - Refactor your software architecture

UI

Focus on

Page 39: Ncrafts.io - Refactor your software architecture

Implement and deploydeployment should be independent of everything else!

Page 40: Ncrafts.io - Refactor your software architecture

Replace usages everywhere

Page 41: Ncrafts.io - Refactor your software architecture

Go back to step one and… start again**a lot… :-)

Page 42: Ncrafts.io - Refactor your software architecture

The next steps

Page 43: Ncrafts.io - Refactor your software architecture

Start writing all new code in components

Page 44: Ncrafts.io - Refactor your software architecture

Encapsulate legacy codeIt’s fine to have some uglyness in a component as long as the interface is clean!

Page 45: Ncrafts.io - Refactor your software architecture

Define clear boundaries

Page 46: Ncrafts.io - Refactor your software architecture

Make everything accessible through an APIFrom business features to technical features

Page 47: Ncrafts.io - Refactor your software architecture

What did we achieve?

Page 48: Ncrafts.io - Refactor your software architecture

Reuse and centralisation

Page 49: Ncrafts.io - Refactor your software architecture

Independent deployments…and rollbacks!Shorter release cycles, less risks, happy users!

Page 50: Ncrafts.io - Refactor your software architecture

Independent component designsKeep It Simple, Stupid

Page 51: Ncrafts.io - Refactor your software architecture

Independent component designsExperiment!

Page 52: Ncrafts.io - Refactor your software architecture

Replaceable components

Page 53: Ncrafts.io - Refactor your software architecture

Easier testingTest the component & the interactions with the component

Page 54: Ncrafts.io - Refactor your software architecture

In conclusion…

Page 55: Ncrafts.io - Refactor your software architecture

Software architecture is aboutdefining high level principles…

Page 56: Ncrafts.io - Refactor your software architecture

To shorten release cycles…

Page 57: Ncrafts.io - Refactor your software architecture

And keep the system maintenable

Page 58: Ncrafts.io - Refactor your software architecture

My suggestion

Page 59: Ncrafts.io - Refactor your software architecture

build small components…

Page 60: Ncrafts.io - Refactor your software architecture

That communicate throuh defined interfaces

Page 61: Ncrafts.io - Refactor your software architecture

Give it a try!

Page 62: Ncrafts.io - Refactor your software architecture

Thank you!

Page 63: Ncrafts.io - Refactor your software architecture

We’re hiring!http://www.criteo.com/en/jobs


Related Documents