208-04-19 - Architecture hexagonale pour les...

Preview:

Citation preview

Architecturehexagonalepourlesnuls(etlesdéveloppeursSpring)Speakers:YouenChéné(CTOSaagie)Format:ConférenceDate:19avril2018YouenestunanciendéveloppeurSpring,désormaisProductManagerchezSaagie.Rencontrantdesdifficultéàfaireévolueruneapplication,YouensedemandesileDomainDrivenDevelopment(DDD)nepourraitpasl’aider.IlaassistéàbeaucoupdeconférencessurlesDDD.Maislessnippetsdecodeétaienttoujourssansframework.Bref,descasd’écoleàmillelieuxdesapplicationsJavabourréesdeframework.CetalkapourobjectifdecréerunpontentrelemondeDDDetlesapplisencouchebaséessurSpring.Youenprésenteuneapplicationdanslaquelleunerèglemétierestrépartiedans3serviceset2DAO.Cetéparpillementestàl’architectureencouche.Nécessiteunrefactoringpourlacentraliserdansuneseuleméthode.Dupointdevued’unCTO,touscesmouvementsseressemblentCleanArchitectureóOnionArchitectureóHexagonalArchitectureModélisationduDomaineLes3gèlesàrespecterlorsqu’onmodéliseleDomaine:

1. Règle1:dansunframework,pasdedépendanceversunframeworkouunlibrairie(àl’exceptiondeGuava)

2. Règle2:ledomainen’appellejamaisdirectementl’extérieur3. Règle3:pasdecoded’infrastructuredansledomaine

Pouraccéderauxrèglesmétiersdudomaine,ilfautcréerdesflux.Pourcela,onvacréerdesportsprimairesetsecondaires:

• Portprimaire:portsd’entréedudomaineutilisésparlacoucheapplicative• Portsecondaire:interfacepermettantaudomained’appelerl’extérieur(reposesur

del’injectiondedépendance)Danslalittérature,ontrouveégalementdesDrivingPort,InputPortetOutputPort.LesAdaptersvontsebranchersurlesports.ToutelagluetechniqueestplacéedanslesAdapters.Exemple:lagestiondesexceptionstechniques.LeDDDnécessitedesmappersentrelesobjetsdudomaineetlesDTO.

ImplémentationMiseenœuvredansuneapplicationSpringBoot:

HackpourencapsulerleDomainedansle@ServicedeSpringBoot:injecterleportsecondairedansleDomaine.MettreenplaceleDDDnécessitedeformerlesdéveloppeursavecdesDOJOparexemple.Conclusion

Recommended