2014 – Patkós Csaba / [email protected] / @PatkosCsaba / patkoscsaba.blogspot.com 4/38
SO, WHAT WILL THIS TALK BE ABOUT?
Architecture,
Infrastructure,
Processes and Practices
Slide 5
Slide 5 text
2014 – Patkós Csaba / [email protected] / @PatkosCsaba / patkoscsaba.blogspot.com 5/38
HIGH LEVEL ARCHITECTURE
BUSINESS LOGIC
DATABASE FILESYSTEM
UI
MVC
NET.
API
MAIN
FACTORY
Slide 6
Slide 6 text
2014 – Patkós Csaba / [email protected] / @PatkosCsaba / patkoscsaba.blogspot.com 6/38
MODEL
M
MVC AS WE KNOW IT TODAY
V C
PRESENTATION
ROUTING
DATA TRANSFER
DATABASE
FILESYSTEM
BUSINESS LOGIC
FACTORY
NET.
API
Slide 7
Slide 7 text
2014 – Patkós Csaba / [email protected] / @PatkosCsaba / patkoscsaba.blogspot.com 7/38
MODEL
SOLID CHANGE
V C
PRESENTATION
ROUTING
DATA TRANSFER
DATABASE
FILESYSTEM
BUSINESS LOGIC
FACTORY
NET.
API
S O L I D
Slide 8
Slide 8 text
2014 – Patkós Csaba / [email protected] / @PatkosCsaba / patkoscsaba.blogspot.com 8/38
MODEL
APPLYING SRP
DATABASE
FILESYSTEM
BUSINESS LOGIC
FACTORY
NET.
API
Single Responsibility
Principle
A single reason to
change
DATABASE
FILESYSTEM
FACTORY
NET.
API
Slide 9
Slide 9 text
2014 – Patkós Csaba / [email protected] / @PatkosCsaba / patkoscsaba.blogspot.com 9/38
MODEL
APPLYING OCP
BUSINESS LOGIC
Open Closed Principle
Open to extension & Closed to modification
DATABASE
FILESYSTEM
FACTORY
NET.
API
BUSINESS LOGIC
Slide 10
Slide 10 text
2014 – Patkós Csaba / [email protected] / @PatkosCsaba / patkoscsaba.blogspot.com 10/38
MODEL
APPLYING DIP
Dependency Inversion
Always depend on abstract things
DATABASE
FACTORY
NET.
API
BUSINESS LOGIC
FILESYSTEM
Slide 11
Slide 11 text
2014 – Patkós Csaba / [email protected] / @PatkosCsaba / patkoscsaba.blogspot.com 11/38
HIGH LEVEL ARCHITECTURE
BUSINESS LOGIC
DATABASE FILESYSTEM
UI
MVC
NET.
API
MAIN
FACTORY
Slide 12
Slide 12 text
2014 – Patkós Csaba / [email protected] / @PatkosCsaba / patkoscsaba.blogspot.com 12/38
HOW DOES UNCLE BOB DO IT?
Robert C. Martin
Uncle Bob
Slide 13
Slide 13 text
2014 – Patkós Csaba / [email protected] / @PatkosCsaba / patkoscsaba.blogspot.com 13/38
SO HE SAYS...
DELIVERY
INTERACTOR
ENTITY ENTITY ENTITY
BOUNDARY [ i ]
BOUNDARY [ i ]
Slide 14
Slide 14 text
2014 – Patkós Csaba / [email protected] / @PatkosCsaba / patkoscsaba.blogspot.com 14/38
SO HE SAYS...
DELIVERY
BOUNDARY [ i ]
BOUNDARY [ i ]
INTERACTOR
ENTITY ENTITY ENTITY
REQUEST
MODEL
RESPONSE
MODEL
Slide 15
Slide 15 text
2014 – Patkós Csaba / [email protected] / @PatkosCsaba / patkoscsaba.blogspot.com 15/38
FROM PAPER TO PRACTICE
?
Slide 16
Slide 16 text
2014 – Patkós Csaba / [email protected] / @PatkosCsaba / patkoscsaba.blogspot.com 16/38
THE WAY WE DID IT
FACADE
Cake PHP
Controller
View
Model
Validate
Delegate
MODULE
BUSINESS
LOGIC
REQUEST MODEL
RESPONSE MODEL
JSON API
Slide 17
Slide 17 text
2014 – Patkós Csaba / [email protected] / @PatkosCsaba / patkoscsaba.blogspot.com 17/38
MAPPING ON OTHER ARCHITECTURES
C 4
Architecture
Hexagonal
Architecture
Slide 18
Slide 18 text
2014 – Patkós Csaba / [email protected] / @PatkosCsaba / patkoscsaba.blogspot.com 18/38
Q & A ABOUT ARCHITECTURE
Questions About
Architecture?
2014 – Patkós Csaba / [email protected] / @PatkosCsaba / patkoscsaba.blogspot.com 25/38
WHAT OTHER TESTS?
UNIT TESTS
COMPONENT TESTS
INTEGRATION TESTS
API TESTS
E2E
M.T.
Slide 26
Slide 26 text
2014 – Patkós Csaba / [email protected] / @PatkosCsaba / patkoscsaba.blogspot.com 26/38
UI TESTS
Tens of UI tests
Run over a fake B. Logic
~10 minutes
Slide 27
Slide 27 text
2014 – Patkós Csaba / [email protected] / @PatkosCsaba / patkoscsaba.blogspot.com 27/38
CONTRACT TESTS
A few
hundred
20 min.
Slide 28
Slide 28 text
2014 – Patkós Csaba / [email protected] / @PatkosCsaba / patkoscsaba.blogspot.com 28/38
END TO END TESTS
Even less
~ 30 min.
Only essential features tested
Robot & Selenium
Slide 29
Slide 29 text
2014 – Patkós Csaba / [email protected] / @PatkosCsaba / patkoscsaba.blogspot.com 29/38
CONNECTING THE DOTS
UNISTORE
ILLUMOS
...
...
TEAM CITY
BUILD
ENCODE
UNIT TEST
PUBLISH
E2E TEST M.
LONG
RUNNING
TEST
NOTIFY USERS
Slide 30
Slide 30 text
2014 – Patkós Csaba / [email protected] / @PatkosCsaba / patkoscsaba.blogspot.com 30/38
Q & A ABOUT INFRASTRUCTURE
Questions About
Continuous XYZ
2014 – Patkós Csaba / [email protected] / @PatkosCsaba / patkoscsaba.blogspot.com 34/38
BE AGILE WITH THE TOOLS ALSO
Slide 35
Slide 35 text
2014 – Patkós Csaba / [email protected] / @PatkosCsaba / patkoscsaba.blogspot.com 35/38
CONTINUOUS LEARNING
Too Difficult
Too Easy
Just Right
Complexity
Time