Architektur-
entscheidungen
und ihre Folgen
The Good
The Bad
The Ugly
Slide 2
Slide 2 text
Denis Brumann
Solutions Architect
Current Maintainer of Deptrac
[email protected]
@dbrumann
Slide 3
Slide 3 text
Command Line
API Web App
What kind of application is Deptrac?
Slide 4
Slide 4 text
Command Line
API Web App
What kind of application is Deptrac?
Slide 5
Slide 5 text
Command Line
API Web App
Interactive
Non-Interactive
What kind of application is Deptrac?
Slide 6
Slide 6 text
No content
Slide 7
Slide 7 text
No content
Slide 8
Slide 8 text
No content
Slide 9
Slide 9 text
Web apps and APIs
https://my-app.com/
MyApp DB
MyApp
Slide 10
Slide 10 text
https://foo.my-app.com/
Interactive runtime in web apps and APIs
https://acme.my-app.com/ ACME DB
Foo DB
MyApp
Slide 11
Slide 11 text
https://foo.my-app.com/
Interactive runtime in web apps and APIs
https://acme.my-app.com/ ACME DB
Foo DB
MyApp
Tenant-Aware
Multi-Portal
Slide 12
Slide 12 text
Warning Signs
Services creating other services
(usage of new in code)
Service Locator or factory-usage
Config-objects (or arrays) being passed through
Slide 13
Slide 13 text
No content
Slide 14
Slide 14 text
No content
Slide 15
Slide 15 text
No content
Slide 16
Slide 16 text
Possible Problems
Runtime errors (invalid context,
misconfigured services)
Debugging is more difficult
(which service/config was used?)
More coupling & complexity
Slide 17
Slide 17 text
No content
Slide 18
Slide 18 text
Lesson
Avoid creating/configuring services at runtime
Slide 19
Slide 19 text
No content
Slide 20
Slide 20 text
No content
Slide 21
Slide 21 text
No content
Slide 22
Slide 22 text
No content
Slide 23
Slide 23 text
No content
Slide 24
Slide 24 text
No content
Slide 25
Slide 25 text
No content
Slide 26
Slide 26 text
No content
Slide 27
Slide 27 text
nikic/php-parser
is only used here
Slide 28
Slide 28 text
nikic/php-parser
is only used here
Deptrac’s
own structure
Slide 29
Slide 29 text
No content
Slide 30
Slide 30 text
No content
Slide 31
Slide 31 text
No content
Slide 32
Slide 32 text
No longer contains
dependency-references
Slide 33
Slide 33 text
No content
Slide 34
Slide 34 text
No content
Slide 35
Slide 35 text
Possible Benefits
Switching dependencies is easier
Refactoring is more contained
Easier extraction
Slide 36
Slide 36 text
No content
Slide 37
Slide 37 text
No content
Slide 38
Slide 38 text
No content
Slide 39
Slide 39 text
Possible Problems
Mapping between objects
can become annoying
More code/duplication
“Wrong” layers add complexity
Slide 40
Slide 40 text
Lesson
Isolating layers helps contain changes
and makes switching out parts easier