Domain 1
Domain 5
Format?
Versioning?
Compatibility?
Fault tolerance?
Number of calls?
Common
data model?
Slide 19
Slide 19 text
Shared kernel
Slide 20
Slide 20 text
Domain 1
Data model
Domain 3
Slide 21
Slide 21 text
Best case
● Work independently from each other
● Extendable by different teams
● Exchangeable
● Scalable
Slide 22
Slide 22 text
Worst case
● Erros are even harder to find
● Increased total complexity
● Performance suffers
● Cascading outages
Slide 23
Slide 23 text
Aimeos
Slide 24
Slide 24 text
E-Commerce components
for integration into
applications
Slide 25
Slide 25 text
No content
Slide 26
Slide 26 text
Layer model
Slide 27
Slide 27 text
Config
Data access
JQAdm JQuery
Frontend
client
List
...
Basket
Admin
controller
Frontend
controller
PHP
I18n
Config
Database
View
Logger
Session
Bandend application
Frontend application
ExtAdm
JsonAdm
ExtJS
JSON API
Slide 28
Slide 28 text
Data domains
Slide 29
Slide 29 text
Product
Catalog
Index
Order
...
16 Datendomänen
Data access
Slide 30
Slide 30 text
Separation into stacks
for micro services
Slide 31
Slide 31 text
Config
List
Client
...
Client
Cntl
...
Cntl
Product
...
Order
...
Basket
By domain
Slide 32
Slide 32 text
Frontend
client
List
...
Basket
Frontend
controller
Data access
By use case
Config
JQuery
JQAdm
ExtAdm
JsonAdm
Cntl
Cntl
Cntl
Data
Data
Data
ExtJS
JSON API
Slide 33
Slide 33 text
Frontend
client
List
...
Basket
Frontend
controller
Data access
With shared kernel
JQuery
JQAdm
ExtAdm
JsonAdm
Admin Controller
ExtJS
JSON API
Slide 34
Slide 34 text
As Composer packages
● Aimeos core (shared kernel)
● HTML client (frontend)
● JQAdm (JQuery admin)
● ExtAdm (ExtJS admin)
● JsonAdm (JSON admin API)
● Jobs (cronjob controller)
Slide 35
Slide 35 text
Open
questions
Slide 36
Slide 36 text
Further separation?
Frontend?
Shared admin controller?