2015 DWX - Komponenten und Konsequenzen
-
Upload
daniel-fisher -
Category
Software
-
view
160 -
download
5
Transcript of 2015 DWX - Komponenten und Konsequenzen
![Page 2: 2015 DWX - Komponenten und Konsequenzen](https://reader036.fdocuments.net/reader036/viewer/2022062320/55cafe7dbb61ebec148b47c6/html5/thumbnails/2.jpg)
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](https://reader036.fdocuments.net/reader036/viewer/2022062320/55cafe7dbb61ebec148b47c6/html5/thumbnails/3.jpg)
danielfisher.com
EFFICIENT COMMUNICATION…
![Page 4: 2015 DWX - Komponenten und Konsequenzen](https://reader036.fdocuments.net/reader036/viewer/2022062320/55cafe7dbb61ebec148b47c6/html5/thumbnails/4.jpg)
danielfisher.com
No more monoliths
https://www.flickr.com/photos/senorwences/2366892425
![Page 5: 2015 DWX - Komponenten und Konsequenzen](https://reader036.fdocuments.net/reader036/viewer/2022062320/55cafe7dbb61ebec148b47c6/html5/thumbnails/5.jpg)
danielfisher.com
https://www.flickr.com/photos/inju/2647397230
![Page 6: 2015 DWX - Komponenten und Konsequenzen](https://reader036.fdocuments.net/reader036/viewer/2022062320/55cafe7dbb61ebec148b47c6/html5/thumbnails/6.jpg)
danielfisher.com
Change must be cheap
https://www.flickr.com/photos/smull/432813187
![Page 7: 2015 DWX - Komponenten und Konsequenzen](https://reader036.fdocuments.net/reader036/viewer/2022062320/55cafe7dbb61ebec148b47c6/html5/thumbnails/7.jpg)
danielfisher.com
Feedback must be fast
https://www.flickr.com/photos/thatguyfromcchs08/2300190277
![Page 8: 2015 DWX - Komponenten und Konsequenzen](https://reader036.fdocuments.net/reader036/viewer/2022062320/55cafe7dbb61ebec148b47c6/html5/thumbnails/8.jpg)
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](https://reader036.fdocuments.net/reader036/viewer/2022062320/55cafe7dbb61ebec148b47c6/html5/thumbnails/9.jpg)
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](https://reader036.fdocuments.net/reader036/viewer/2022062320/55cafe7dbb61ebec148b47c6/html5/thumbnails/10.jpg)
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](https://reader036.fdocuments.net/reader036/viewer/2022062320/55cafe7dbb61ebec148b47c6/html5/thumbnails/11.jpg)
danielfisher.com
http://enterprisecraftsmanship.com/2015/01/10/how-to-build-microservices-wrong
What about micro services?
![Page 12: 2015 DWX - Komponenten und Konsequenzen](https://reader036.fdocuments.net/reader036/viewer/2022062320/55cafe7dbb61ebec148b47c6/html5/thumbnails/12.jpg)
danielfisher.com
Don't reinvent the wheel!
![Page 13: 2015 DWX - Komponenten und Konsequenzen](https://reader036.fdocuments.net/reader036/viewer/2022062320/55cafe7dbb61ebec148b47c6/html5/thumbnails/13.jpg)
danielfisher.com
‘Nuf bla bla!
So what’s a component?
![Page 14: 2015 DWX - Komponenten und Konsequenzen](https://reader036.fdocuments.net/reader036/viewer/2022062320/55cafe7dbb61ebec148b47c6/html5/thumbnails/14.jpg)
danielfisher.com
https://www.flickr.com/photos/64693712@N05/8059145606
![Page 15: 2015 DWX - Komponenten und Konsequenzen](https://reader036.fdocuments.net/reader036/viewer/2022062320/55cafe7dbb61ebec148b47c6/html5/thumbnails/15.jpg)
danielfisher.com
Divide and Conquer
![Page 16: 2015 DWX - Komponenten und Konsequenzen](https://reader036.fdocuments.net/reader036/viewer/2022062320/55cafe7dbb61ebec148b47c6/html5/thumbnails/16.jpg)
danielfisher.com
![Page 17: 2015 DWX - Komponenten und Konsequenzen](https://reader036.fdocuments.net/reader036/viewer/2022062320/55cafe7dbb61ebec148b47c6/html5/thumbnails/17.jpg)
danielfisher.com
Separation of ConcernsSingle Responsibility
…Clean Code
![Page 18: 2015 DWX - Komponenten und Konsequenzen](https://reader036.fdocuments.net/reader036/viewer/2022062320/55cafe7dbb61ebec148b47c6/html5/thumbnails/18.jpg)
danielfisher.com
https://www.flickr.com/photos/lynsey_wells83/11054897226
![Page 19: 2015 DWX - Komponenten und Konsequenzen](https://reader036.fdocuments.net/reader036/viewer/2022062320/55cafe7dbb61ebec148b47c6/html5/thumbnails/19.jpg)
danielfisher.com
https://www.flickr.com/photos/miasone/8741413785
![Page 20: 2015 DWX - Komponenten und Konsequenzen](https://reader036.fdocuments.net/reader036/viewer/2022062320/55cafe7dbb61ebec148b47c6/html5/thumbnails/20.jpg)
danielfisher.com
Explicit boundariesAutonomous
Shared schema and contractCompatibility through Policy
![Page 21: 2015 DWX - Komponenten und Konsequenzen](https://reader036.fdocuments.net/reader036/viewer/2022062320/55cafe7dbb61ebec148b47c6/html5/thumbnails/21.jpg)
danielfisher.com
Ensure separation
• Ndepend– http://www.ndepend.com/
![Page 22: 2015 DWX - Komponenten und Konsequenzen](https://reader036.fdocuments.net/reader036/viewer/2022062320/55cafe7dbb61ebec148b47c6/html5/thumbnails/22.jpg)
danielfisher.com
Component Component Component
Domain ServicesDomain Objects
APIAPI
DD
DTE
C
Layers
Value Objects
Aggregate Root
![Page 23: 2015 DWX - Komponenten und Konsequenzen](https://reader036.fdocuments.net/reader036/viewer/2022062320/55cafe7dbb61ebec148b47c6/html5/thumbnails/23.jpg)
danielfisher.com
The only thing
really hard is making things
really easy
![Page 24: 2015 DWX - Komponenten und Konsequenzen](https://reader036.fdocuments.net/reader036/viewer/2022062320/55cafe7dbb61ebec148b47c6/html5/thumbnails/24.jpg)
danielfisher.com
https://www.flickr.com/photos/shardayyy/5711563136
![Page 25: 2015 DWX - Komponenten und Konsequenzen](https://reader036.fdocuments.net/reader036/viewer/2022062320/55cafe7dbb61ebec148b47c6/html5/thumbnails/25.jpg)
danielfisher.com
Dependencies
Core
Directory
Data
DataModel Diagnostics
ComponentModel
DataModel.Data
![Page 26: 2015 DWX - Komponenten und Konsequenzen](https://reader036.fdocuments.net/reader036/viewer/2022062320/55cafe7dbb61ebec148b47c6/html5/thumbnails/26.jpg)
danielfisher.com
https://www.flickr.com/photos/archivesnz/8759939806
Source Control Repositories
![Page 27: 2015 DWX - Komponenten und Konsequenzen](https://reader036.fdocuments.net/reader036/viewer/2022062320/55cafe7dbb61ebec148b47c6/html5/thumbnails/27.jpg)
danielfisher.com
Branch Strategy
Branch for stability Commit for stability
![Page 28: 2015 DWX - Komponenten und Konsequenzen](https://reader036.fdocuments.net/reader036/viewer/2022062320/55cafe7dbb61ebec148b47c6/html5/thumbnails/28.jpg)
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](https://reader036.fdocuments.net/reader036/viewer/2022062320/55cafe7dbb61ebec148b47c6/html5/thumbnails/29.jpg)
danielfisher.com
Component Repository
Class Library Test Sample
![Page 30: 2015 DWX - Komponenten und Konsequenzen](https://reader036.fdocuments.net/reader036/viewer/2022062320/55cafe7dbb61ebec148b47c6/html5/thumbnails/30.jpg)
danielfisher.com
Pros
• You just work with what you need• Separation of concerns from the
beginning
![Page 31: 2015 DWX - Komponenten und Konsequenzen](https://reader036.fdocuments.net/reader036/viewer/2022062320/55cafe7dbb61ebec148b47c6/html5/thumbnails/31.jpg)
danielfisher.com
Cons
• There will be lots of repositories• There will be multiple histories/logs
![Page 32: 2015 DWX - Komponenten und Konsequenzen](https://reader036.fdocuments.net/reader036/viewer/2022062320/55cafe7dbb61ebec148b47c6/html5/thumbnails/32.jpg)
danielfisher.com
Consequences
• The need for a flexible SCM• Aggregated feeds of history/logs
![Page 33: 2015 DWX - Komponenten und Konsequenzen](https://reader036.fdocuments.net/reader036/viewer/2022062320/55cafe7dbb61ebec148b47c6/html5/thumbnails/33.jpg)
danielfisher.com
Flexible version control
• GIT
![Page 34: 2015 DWX - Komponenten und Konsequenzen](https://reader036.fdocuments.net/reader036/viewer/2022062320/55cafe7dbb61ebec148b47c6/html5/thumbnails/34.jpg)
danielfisher.com
Tests
![Page 35: 2015 DWX - Komponenten und Konsequenzen](https://reader036.fdocuments.net/reader036/viewer/2022062320/55cafe7dbb61ebec148b47c6/html5/thumbnails/35.jpg)
danielfisher.com
Pros
• You only see and maintain relevant tests
• Feedback is delivered faster
![Page 36: 2015 DWX - Komponenten und Konsequenzen](https://reader036.fdocuments.net/reader036/viewer/2022062320/55cafe7dbb61ebec148b47c6/html5/thumbnails/36.jpg)
danielfisher.com
Cons
• Any?
![Page 37: 2015 DWX - Komponenten und Konsequenzen](https://reader036.fdocuments.net/reader036/viewer/2022062320/55cafe7dbb61ebec148b47c6/html5/thumbnails/37.jpg)
danielfisher.com
Consequences
• You need to change the way you did it before?
![Page 38: 2015 DWX - Komponenten und Konsequenzen](https://reader036.fdocuments.net/reader036/viewer/2022062320/55cafe7dbb61ebec148b47c6/html5/thumbnails/38.jpg)
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](https://reader036.fdocuments.net/reader036/viewer/2022062320/55cafe7dbb61ebec148b47c6/html5/thumbnails/39.jpg)
danielfisher.com
© Daniel Fisher
Builds
![Page 40: 2015 DWX - Komponenten und Konsequenzen](https://reader036.fdocuments.net/reader036/viewer/2022062320/55cafe7dbb61ebec148b47c6/html5/thumbnails/40.jpg)
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](https://reader036.fdocuments.net/reader036/viewer/2022062320/55cafe7dbb61ebec148b47c6/html5/thumbnails/41.jpg)
danielfisher.com
Pros
• Build can be parallelized• Feedback is delivered faster• You see where it breaks
![Page 42: 2015 DWX - Komponenten und Konsequenzen](https://reader036.fdocuments.net/reader036/viewer/2022062320/55cafe7dbb61ebec148b47c6/html5/thumbnails/42.jpg)
danielfisher.com
Cons
• There will be lots of builds• There will be even more build results
![Page 43: 2015 DWX - Komponenten und Konsequenzen](https://reader036.fdocuments.net/reader036/viewer/2022062320/55cafe7dbb61ebec148b47c6/html5/thumbnails/43.jpg)
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](https://reader036.fdocuments.net/reader036/viewer/2022062320/55cafe7dbb61ebec148b47c6/html5/thumbnails/44.jpg)
danielfisher.com
Build Servers
• Good question!
![Page 45: 2015 DWX - Komponenten und Konsequenzen](https://reader036.fdocuments.net/reader036/viewer/2022062320/55cafe7dbb61ebec148b47c6/html5/thumbnails/45.jpg)
danielfisher.com
![Page 46: 2015 DWX - Komponenten und Konsequenzen](https://reader036.fdocuments.net/reader036/viewer/2022062320/55cafe7dbb61ebec148b47c6/html5/thumbnails/46.jpg)
danielfisher.com
SOS…
![Page 47: 2015 DWX - Komponenten und Konsequenzen](https://reader036.fdocuments.net/reader036/viewer/2022062320/55cafe7dbb61ebec148b47c6/html5/thumbnails/47.jpg)
danielfisher.com
Build Scripts
https://www.flickr.com/photos/frf_kmeron/3587872772
![Page 48: 2015 DWX - Komponenten und Konsequenzen](https://reader036.fdocuments.net/reader036/viewer/2022062320/55cafe7dbb61ebec148b47c6/html5/thumbnails/48.jpg)
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](https://reader036.fdocuments.net/reader036/viewer/2022062320/55cafe7dbb61ebec148b47c6/html5/thumbnails/49.jpg)
danielfisher.com
Rake, Fake, Workflow
![Page 50: 2015 DWX - Komponenten und Konsequenzen](https://reader036.fdocuments.net/reader036/viewer/2022062320/55cafe7dbb61ebec148b47c6/html5/thumbnails/50.jpg)
danielfisher.com
IMHO
• Until you don't build value by writing build scripts avoid it
![Page 51: 2015 DWX - Komponenten und Konsequenzen](https://reader036.fdocuments.net/reader036/viewer/2022062320/55cafe7dbb61ebec148b47c6/html5/thumbnails/51.jpg)
danielfisher.com
Package Publication
https://www.flickr.com/photos/leshaines123/5422165409
![Page 52: 2015 DWX - Komponenten und Konsequenzen](https://reader036.fdocuments.net/reader036/viewer/2022062320/55cafe7dbb61ebec148b47c6/html5/thumbnails/52.jpg)
danielfisher.comLatest & Greatest vs. Old &
Conservative
https://www.flickr.com/photos/thomasletholsen/11139022726
![Page 53: 2015 DWX - Komponenten und Konsequenzen](https://reader036.fdocuments.net/reader036/viewer/2022062320/55cafe7dbb61ebec148b47c6/html5/thumbnails/53.jpg)
danielfisher.com
Package Publication
• NuGet• NPM• Bower• …
![Page 54: 2015 DWX - Komponenten und Konsequenzen](https://reader036.fdocuments.net/reader036/viewer/2022062320/55cafe7dbb61ebec148b47c6/html5/thumbnails/54.jpg)
danielfisher.com
Pros
• Orchestration of releases
![Page 55: 2015 DWX - Komponenten und Konsequenzen](https://reader036.fdocuments.net/reader036/viewer/2022062320/55cafe7dbb61ebec148b47c6/html5/thumbnails/55.jpg)
danielfisher.com
Cons
• Maintenance of multiple Package Repositories?
![Page 56: 2015 DWX - Komponenten und Konsequenzen](https://reader036.fdocuments.net/reader036/viewer/2022062320/55cafe7dbb61ebec148b47c6/html5/thumbnails/56.jpg)
danielfisher.com
Bug Tracking
https://www.flickr.com/photos/goingslo/4523034319
![Page 57: 2015 DWX - Komponenten und Konsequenzen](https://reader036.fdocuments.net/reader036/viewer/2022062320/55cafe7dbb61ebec148b47c6/html5/thumbnails/57.jpg)
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](https://reader036.fdocuments.net/reader036/viewer/2022062320/55cafe7dbb61ebec148b47c6/html5/thumbnails/58.jpg)
danielfisher.com
Roadmap
https://www.flickr.com/photos/aigle_dore/5849712695
![Page 59: 2015 DWX - Komponenten und Konsequenzen](https://reader036.fdocuments.net/reader036/viewer/2022062320/55cafe7dbb61ebec148b47c6/html5/thumbnails/59.jpg)
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](https://reader036.fdocuments.net/reader036/viewer/2022062320/55cafe7dbb61ebec148b47c6/html5/thumbnails/60.jpg)
danielfisher.com
Versions
https://www.flickr.com/photos/jasonmichael/5396824640
![Page 61: 2015 DWX - Komponenten und Konsequenzen](https://reader036.fdocuments.net/reader036/viewer/2022062320/55cafe7dbb61ebec148b47c6/html5/thumbnails/61.jpg)
danielfisher.com
Software is not for support!
• One version number per Product for each Project
![Page 62: 2015 DWX - Komponenten und Konsequenzen](https://reader036.fdocuments.net/reader036/viewer/2022062320/55cafe7dbb61ebec148b47c6/html5/thumbnails/62.jpg)
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