Slide 1

Slide 1 text

Micro services as architectural concept

Slide 2

Slide 2 text

Previous applications architectures

Slide 3

Slide 3 text

“Spaghetti”

Slide 4

Slide 4 text

Function 2 Function 3 Function ... Application Function 5 Function 4 Function 1

Slide 5

Slide 5 text

Objekt oriented

Slide 6

Slide 6 text

Object 1 - Data - Methods Object 1 - Data - Methods Object ... - Data - Methods Application

Slide 7

Slide 7 text

Layer model

Slide 8

Slide 8 text

Layer 1.3 Layer 1.2 Layer 1.1 Layer 2.2 Layer 2.1 Application

Slide 9

Slide 9 text

Similarity: Deployment monoliths

Slide 10

Slide 10 text

Micro services

Slide 11

Slide 11 text

Single, independent applications

Slide 12

Slide 12 text

Layer 2.2 Layer 2.1 Layer 1.3 Layer 1.2 Layer 1.1 Application 1 Application 2

Slide 13

Slide 13 text

Requirement: Domain driven design

Slide 14

Slide 14 text

Layer 1.3 Layer 1.2 Layer 1.1 Layer 2.2 Layer 2.1 Layer 3.4 Layer 3.4 Layer 3.1 Layer 3.2 Domain 1 Domain 3 Domain 3

Slide 15

Slide 15 text

Micro services in “real life”

Slide 16

Slide 16 text

Domäne 3 Domain 1 Domain 2 Domain 5 Domain 4 Domain 3 Bounded contexts

Slide 17

Slide 17 text

Interfaces and data exchange

Slide 18

Slide 18 text

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?

Slide 37

Slide 37 text

Best size for micro services?

Slide 38

Slide 38 text

Aimeos aimeos.org Twitter: @aimeos facebook.com/Aimeos