Transcript
Page 1: 2015 DWX - Komponenten und Konsequenzen

danielfisher.com

© Daniel Fisher

Komponenten und Konsequenzen

Daniel Fisher | [email protected]

Page 2: 2015 DWX - Komponenten und Konsequenzen

danielfisher.com

• danielfisher.com– Developer, Architect, Coach, Trainer

• lennybacon.com– Blog

• Justcommunity.de– Mit-Gründer und Vorstand

• nrwconf.de– Mit-Gründer und Organisator

• twitter.com– @lennybacon

Daniel Fisher

Page 3: 2015 DWX - Komponenten und Konsequenzen

danielfisher.com

EFFICIENT COMMUNICATION…

Page 4: 2015 DWX - Komponenten und Konsequenzen

danielfisher.com

No more monoliths

https://www.flickr.com/photos/senorwences/2366892425

Page 5: 2015 DWX - Komponenten und Konsequenzen

danielfisher.com

https://www.flickr.com/photos/inju/2647397230

Page 6: 2015 DWX - Komponenten und Konsequenzen

danielfisher.com

Change must be cheap

https://www.flickr.com/photos/smull/432813187

Page 7: 2015 DWX - Komponenten und Konsequenzen

danielfisher.com

Feedback must be fast

https://www.flickr.com/photos/thatguyfromcchs08/2300190277

Page 8: 2015 DWX - Komponenten und Konsequenzen

danielfisher.com

Component-based software engineering is a branch

of software engineering that emphasizes the

separation of concerns in respect of the wide-ranging functionality available throughout a

given software system.

http://en.wikipedia.org/wiki/Component-based_software_engineering

Page 9: 2015 DWX - Komponenten und Konsequenzen

danielfisher.com

It is a reuse-based approach to defining,

implementing and composing loosely coupled independent components into systems.

This practice aims to bring about an equally wide-ranging degree of

benefits in both the short-term and the

long-term for the software itself and for

organizations that sponsor such software.

http://en.wikipedia.org/wiki/Component-based_software_engineering

Page 10: 2015 DWX - Komponenten und Konsequenzen

danielfisher.com

Sorry this is *NO hot shit*!

The idea first became prominent with

Douglas McIlroy at the NATO conference on software

engineering in Garmisch, Germany,

1968

Page 11: 2015 DWX - Komponenten und Konsequenzen

danielfisher.com

http://enterprisecraftsmanship.com/2015/01/10/how-to-build-microservices-wrong

What about micro services?

Page 12: 2015 DWX - Komponenten und Konsequenzen

danielfisher.com

Don't reinvent the wheel!

Page 13: 2015 DWX - Komponenten und Konsequenzen

danielfisher.com

‘Nuf bla bla!

So what’s a component?

Page 14: 2015 DWX - Komponenten und Konsequenzen

danielfisher.com

https://www.flickr.com/photos/64693712@N05/8059145606

Page 15: 2015 DWX - Komponenten und Konsequenzen

danielfisher.com

Divide and Conquer

Page 16: 2015 DWX - Komponenten und Konsequenzen

danielfisher.com

Page 17: 2015 DWX - Komponenten und Konsequenzen

danielfisher.com

Separation of ConcernsSingle Responsibility

…Clean Code

Page 18: 2015 DWX - Komponenten und Konsequenzen

danielfisher.com

https://www.flickr.com/photos/lynsey_wells83/11054897226

Page 19: 2015 DWX - Komponenten und Konsequenzen

danielfisher.com

https://www.flickr.com/photos/miasone/8741413785

Page 20: 2015 DWX - Komponenten und Konsequenzen

danielfisher.com

Explicit boundariesAutonomous

Shared schema and contractCompatibility through Policy

Page 21: 2015 DWX - Komponenten und Konsequenzen

danielfisher.com

Ensure separation

• Ndepend– http://www.ndepend.com/

Page 22: 2015 DWX - Komponenten und Konsequenzen

danielfisher.com

Component Component Component

Domain ServicesDomain Objects

APIAPI

DD

DTE

C

Layers

Value Objects

Aggregate Root

Page 23: 2015 DWX - Komponenten und Konsequenzen

danielfisher.com

The only thing

really hard is making things

really easy

Page 24: 2015 DWX - Komponenten und Konsequenzen

danielfisher.com

https://www.flickr.com/photos/shardayyy/5711563136

Page 25: 2015 DWX - Komponenten und Konsequenzen

danielfisher.com

Dependencies

Core

Directory

Data

DataModel Diagnostics

ComponentModel

DataModel.Data

Page 26: 2015 DWX - Komponenten und Konsequenzen

danielfisher.com

https://www.flickr.com/photos/archivesnz/8759939806

Source Control Repositories

Page 27: 2015 DWX - Komponenten und Konsequenzen

danielfisher.com

Branch Strategy

Branch for stability Commit for stability

Page 28: 2015 DWX - Komponenten und Konsequenzen

danielfisher.com

Usual Repository

Class Library Test Sample Class Library

Class LibrarySample Test Test

Class Library Test Sample Class Library

Class LibraryExecutableSample Class Library

Page 29: 2015 DWX - Komponenten und Konsequenzen

danielfisher.com

Component Repository

Class Library Test Sample

Page 30: 2015 DWX - Komponenten und Konsequenzen

danielfisher.com

Pros

• You just work with what you need• Separation of concerns from the

beginning

Page 31: 2015 DWX - Komponenten und Konsequenzen

danielfisher.com

Cons

• There will be lots of repositories• There will be multiple histories/logs

Page 32: 2015 DWX - Komponenten und Konsequenzen

danielfisher.com

Consequences

• The need for a flexible SCM• Aggregated feeds of history/logs

Page 33: 2015 DWX - Komponenten und Konsequenzen

danielfisher.com

Flexible version control

• GIT

Page 34: 2015 DWX - Komponenten und Konsequenzen

danielfisher.com

Tests

Page 35: 2015 DWX - Komponenten und Konsequenzen

danielfisher.com

Pros

• You only see and maintain relevant tests

• Feedback is delivered faster

Page 36: 2015 DWX - Komponenten und Konsequenzen

danielfisher.com

Cons

• Any?

Page 37: 2015 DWX - Komponenten und Konsequenzen

danielfisher.com

Consequences

• You need to change the way you did it before?

Page 38: 2015 DWX - Komponenten und Konsequenzen

danielfisher.comMonolith solution or too many

tests?

• NCrunch.NET– http://www.ncrunch.net/

• Wallaby.JS– http://wallabyjs.com/

Page 39: 2015 DWX - Komponenten und Konsequenzen

danielfisher.com

© Daniel Fisher

Builds

Page 40: 2015 DWX - Komponenten und Konsequenzen

danielfisher.com

Builds

• A project consist of multiple builds– Per branch?

• Check-In• Nightly• Feature• Team• Release

It really depends on your business strategy and team organization!

Page 41: 2015 DWX - Komponenten und Konsequenzen

danielfisher.com

Pros

• Build can be parallelized• Feedback is delivered faster• You see where it breaks

Page 42: 2015 DWX - Komponenten und Konsequenzen

danielfisher.com

Cons

• There will be lots of builds• There will be even more build results

Page 43: 2015 DWX - Komponenten und Konsequenzen

danielfisher.com

Consequences

• Build Process that supports build trees– https://

en.wikipedia.org/wiki/Topological_sorting

• Aggregated overview of build results

Page 44: 2015 DWX - Komponenten und Konsequenzen

danielfisher.com

Build Servers

• Good question!

Page 45: 2015 DWX - Komponenten und Konsequenzen

danielfisher.com

Page 46: 2015 DWX - Komponenten und Konsequenzen

danielfisher.com

SOS…

Page 47: 2015 DWX - Komponenten und Konsequenzen

danielfisher.com

Build Scripts

https://www.flickr.com/photos/frf_kmeron/3587872772

Page 48: 2015 DWX - Komponenten und Konsequenzen

danielfisher.com

Build ProcessCh

ecko

ut-S

ourc

es

Gen

erat

e-Co

de

Set-

Vers

ion

Com

pile

-Cod

e

Reso

lve-

Dep

ende

ncie

s

Sign

-Out

put

Pack

age-

Out

put

Publ

ish-

Pack

age

Anal

yze-

Out

put

Doc

umen

t-O

utpu

t

Test

-Out

put

Dep

loy-

Pack

age

Test

-Dep

loym

ent

Test

-Inte

grati

on

Page 49: 2015 DWX - Komponenten und Konsequenzen

danielfisher.com

Rake, Fake, Workflow

Page 50: 2015 DWX - Komponenten und Konsequenzen

danielfisher.com

IMHO

• Until you don't build value by writing build scripts avoid it

Page 51: 2015 DWX - Komponenten und Konsequenzen

danielfisher.com

Package Publication

https://www.flickr.com/photos/leshaines123/5422165409

Page 52: 2015 DWX - Komponenten und Konsequenzen

danielfisher.comLatest & Greatest vs. Old &

Conservative

https://www.flickr.com/photos/thomasletholsen/11139022726

Page 53: 2015 DWX - Komponenten und Konsequenzen

danielfisher.com

Package Publication

• NuGet• NPM• Bower• …

Page 54: 2015 DWX - Komponenten und Konsequenzen

danielfisher.com

Pros

• Orchestration of releases

Page 55: 2015 DWX - Komponenten und Konsequenzen

danielfisher.com

Cons

• Maintenance of multiple Package Repositories?

Page 56: 2015 DWX - Komponenten und Konsequenzen

danielfisher.com

Bug Tracking

https://www.flickr.com/photos/goingslo/4523034319

Page 57: 2015 DWX - Komponenten und Konsequenzen

danielfisher.com

Software is not for itself!

• A Bug Tracker for each Product– A category/tag for each project

Page 58: 2015 DWX - Komponenten und Konsequenzen

danielfisher.com

Roadmap

https://www.flickr.com/photos/aigle_dore/5849712695

Page 59: 2015 DWX - Komponenten und Konsequenzen

danielfisher.com

Software is not for itself!

• A Feature plan for each Product– A category/tag for each project

Page 60: 2015 DWX - Komponenten und Konsequenzen

danielfisher.com

Versions

https://www.flickr.com/photos/jasonmichael/5396824640

Page 61: 2015 DWX - Komponenten und Konsequenzen

danielfisher.com

Software is not for support!

• One version number per Product for each Project

Page 62: 2015 DWX - Komponenten und Konsequenzen

danielfisher.com

READ LENNYBACON.COMFOLLOW @LENNYBACON

LINK LINKEDIN.COM/IN/LENNYBACONXING XING.COM/PROFILE/DANIEL_FISHERFRIEND FB.COM/DANIEL.FISHER.LENNYBACONMAIL [email protected] +49 (176) 6159 8612


Recommended