Delusion driven development

Preview:

Citation preview

DELUSION DRIVENDEVELOPMENT

AND WHY YOU SHOULDN'T DO ITCreated by / Felipe Fernández @felipefzdz

ABOUT MEFELIPE FERNÁNDEZ

Work as Software Craftsman for Currently with Blog: http://codurance.com/blog/author/felipe-fernandezTwitter:

CoduranceCrowdmix

@felipefzdz

DEFINING DELUSION“An idiosyncratic belief or impression

maintained despite being contradicted byreality or rational argument, typically as a

symptom of mental disorder.”

ABOUT THE TALK1. Operations2. Testing3. Design

1. OPERATIONS

OPERATIONS

I’LL HAVE A LOOK WHENEVER IS NEEDED

OPERATIONS: I’LL HAVE A LOOK WHENEVER IS NEEDED

DIAGNOSIS IN DISTRIBUTED ENVIRONMENTSWhen your tests are not enoughYou need to query the state of your system

OPERATIONS: I’LL HAVE A LOOK WHENEVER IS NEEDED

DIAGNOSIS METHODOLOGIESDebuggingQuerying datastoresLogging

OPERATIONS: I’LL HAVE A LOOK WHENEVER IS NEEDED

DISTRIBUTED DIAGNOSIS METHODOLOGIESDebugging -> LOLQuerying datastores -> FragmentationLogging -> Madness

OPERATIONS

I’LL HAVE A LOOK WHENEVER IS NEEDEDPlease don't, it could be really hard and you want to be

prepared

OPERATIONS

I NEED TO REMOVE THAT DUPLICATION NOW

OPERATIONS: I NEED TO REMOVE THAT DUPLICATION NOW

GENERALISING DEPLOYMENT PIPELINESDIY deployment pipelinesMicroservices context

OPERATIONS: I NEED TO REMOVE THAT DUPLICATION NOW

GENERALIZATION ASSUMPTIONSVersioningCheckingContinuous integration

OPERATIONS

I NEED TO REMOVE THAT DUPLICATION NOWDo it when you're stable enough

OPERATIONS

I GUESS THAT IS READY

OPERATIONS: I GUESS THAT IS READY

CREATING REAL WALKING SKELETONSThat includes provisioning and deployingSmoke test as driver

OPERATIONS: I GUESS THAT IS READY

GOOS PHILOSOPHYAddress your non-functional challenges asapAntidote against technical debt

OPERATIONS

I GUESS THAT IS READYDon't guess, double check

2. TESTING

TESTING

THE PARTS ARE WORKING, SO THE WHOLE

TESTING: THE PARTS ARE WORKING, SO THE WHOLE

DISTRIBUTED TESTINGDon't give up on unit testing

But that's not enough

TESTING: THE PARTS ARE WORKING, SO THE WHOLE

CONTRACT TESTINGStart designing your APIs with respect

The customer is always right

TESTING: THE PARTS ARE WORKING, SO THE WHOLE

SMOKE TESTINGWe need more than a red test

Centralised logging and correlation ids

TESTING

THE PARTS ARE WORKING, SO THE WHOLEDon't understimate the complexity of distributed systems

TESTING

TESTING IS ALWAYS GOOD

TESTING: TESTING IS ALWAYS GOOD

TESTING TRADE-OFFSMicro unit testsSlow testsHard to read/write tests

TESTING: TESTING IS ALWAYS GOOD

TRADE-OFFS ARE JUST TRADE OFFSMicro unit testsSlow testsHard to read/write tests

TESTING

TESTING IS ALWAYS GOODAs long as you understand the trade-offs

3. DESIGN

DESIGN

LANGUAGE APPROXIMATIONS ARE OK

DESIGN: LANGUAGE APPROXIMATIONS ARE OK

BOUNDED CONTEXTSCore DDD concept

Impact mapping or even Event Storming can help you toidentify them

DESIGN: LANGUAGE APPROXIMATIONS ARE OK

HEXAGONAL ARCHITECTURE

DESIGN

LANGUAGE APPROXIMATIONS ARE OKOften I think that our profession is closer to literature than

maths

DESIGN

BUSINESS NEEDS ARE STABLE

DESIGN: BUSINESS NEEDS ARE STABLE

CQRS

DESIGN: BUSINESS NEEDS ARE STABLE

CQRSExtremely perfomant

Adds overhead

DESIGN

BUSINESS NEEDS ARE STABLEThat's not true. Design with that in mind.

THANK YOU

ANY QUESTIONS?