2015 DWX - Komponenten und Konsequenzen

Post on 12-Aug-2015

154 views 5 download

Transcript of 2015 DWX - Komponenten und Konsequenzen

danielfisher.com

© Daniel Fisher

Komponenten und Konsequenzen

Daniel Fisher | info@lennybacon.com

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

danielfisher.com

EFFICIENT COMMUNICATION…

danielfisher.com

No more monoliths

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

danielfisher.com

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

danielfisher.com

Change must be cheap

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

danielfisher.com

Feedback must be fast

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

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

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

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

danielfisher.com

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

What about micro services?

danielfisher.com

Don't reinvent the wheel!

danielfisher.com

‘Nuf bla bla!

So what’s a component?

danielfisher.com

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

danielfisher.com

Divide and Conquer

danielfisher.com

danielfisher.com

Separation of ConcernsSingle Responsibility

…Clean Code

danielfisher.com

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

danielfisher.com

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

danielfisher.com

Explicit boundariesAutonomous

Shared schema and contractCompatibility through Policy

danielfisher.com

Ensure separation

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

danielfisher.com

Component Component Component

Domain ServicesDomain Objects

APIAPI

DD

DTE

C

Layers

Value Objects

Aggregate Root

danielfisher.com

The only thing

really hard is making things

really easy

danielfisher.com

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

danielfisher.com

Dependencies

Core

Directory

Data

DataModel Diagnostics

ComponentModel

DataModel.Data

danielfisher.com

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

Source Control Repositories

danielfisher.com

Branch Strategy

Branch for stability Commit for stability

danielfisher.com

Usual Repository

Class Library Test Sample Class Library

Class LibrarySample Test Test

Class Library Test Sample Class Library

Class LibraryExecutableSample Class Library

danielfisher.com

Component Repository

Class Library Test Sample

danielfisher.com

Pros

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

beginning

danielfisher.com

Cons

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

danielfisher.com

Consequences

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

danielfisher.com

Flexible version control

• GIT

danielfisher.com

Tests

danielfisher.com

Pros

• You only see and maintain relevant tests

• Feedback is delivered faster

danielfisher.com

Cons

• Any?

danielfisher.com

Consequences

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

danielfisher.comMonolith solution or too many

tests?

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

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

danielfisher.com

© Daniel Fisher

Builds

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!

danielfisher.com

Pros

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

danielfisher.com

Cons

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

danielfisher.com

Consequences

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

en.wikipedia.org/wiki/Topological_sorting

• Aggregated overview of build results

danielfisher.com

Build Servers

• Good question!

danielfisher.com

danielfisher.com

SOS…

danielfisher.com

Build Scripts

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

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

danielfisher.com

Rake, Fake, Workflow

danielfisher.com

IMHO

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

danielfisher.com

Package Publication

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

danielfisher.comLatest & Greatest vs. Old &

Conservative

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

danielfisher.com

Package Publication

• NuGet• NPM• Bower• …

danielfisher.com

Pros

• Orchestration of releases

danielfisher.com

Cons

• Maintenance of multiple Package Repositories?

danielfisher.com

Bug Tracking

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

danielfisher.com

Software is not for itself!

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

danielfisher.com

Roadmap

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

danielfisher.com

Software is not for itself!

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

danielfisher.com

Versions

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

danielfisher.com

Software is not for support!

• One version number per Product for each Project

danielfisher.com

READ LENNYBACON.COMFOLLOW @LENNYBACON

LINK LINKEDIN.COM/IN/LENNYBACONXING XING.COM/PROFILE/DANIEL_FISHERFRIEND FB.COM/DANIEL.FISHER.LENNYBACONMAIL DANIEL.FISHER@LENNYBACON.COMCALL +49 (176) 6159 8612