What are micro services, some history and how we use it in Aimeos
Micro services asarchitectural concept
View Slide
Previous applicationsarchitectures
“Spaghetti”
Function 2Function 3Function ...ApplicationFunction 5Function 4Function 1
Objekt oriented
Object 1- Data- MethodsObject 1- Data- MethodsObject ...- Data- MethodsApplication
Layer model
Layer 1.3Layer 1.2Layer 1.1Layer 2.2Layer 2.1Application
Similarity:Deployment monoliths
Micro services
Single, independentapplications
Layer 2.2Layer 2.1Layer 1.3Layer 1.2Layer 1.1Application 1 Application 2
Requirement:Domain driven design
Layer 1.3Layer 1.2Layer 1.1Layer 2.2Layer 2.1Layer 3.4Layer 3.4Layer 3.1Layer 3.2Domain 1 Domain 3 Domain 3
Micro servicesin “real life”
Domäne 3Domain 1Domain 2Domain 5Domain 4Domain 3Bounded contexts
Interfaces anddata exchange
Domain 1Domain 5Format?Versioning?Compatibility?Fault tolerance?Number of calls?Commondata model?
Shared kernel
Domain 1Data modelDomain 3
Best case● Work independently from each other● Extendable by different teams● Exchangeable● Scalable
Worst case● Erros are even harder to find● Increased total complexity● Performance suffers● Cascading outages
Aimeos
E-Commerce componentsfor integration intoapplications
ConfigData accessJQAdm JQueryFrontendclientList...BasketAdmincontrollerFrontendcontrollerPHPI18nConfigDatabaseViewLoggerSessionBandend applicationFrontend applicationExtAdmJsonAdmExtJSJSON API
Data domains
ProductCatalogIndexOrder...16 DatendomänenData access
Separation into stacksfor micro services
ConfigListClient...ClientCntl...CntlProduct...Order...BasketBy domain
FrontendclientList...BasketFrontendcontrollerData accessBy use caseConfigJQueryJQAdmExtAdmJsonAdmCntlCntlCntlDataDataDataExtJSJSON API
FrontendclientList...BasketFrontendcontrollerData accessWith shared kernelJQueryJQAdmExtAdmJsonAdmAdmin ControllerExtJSJSON API
As Composer packages● Aimeos core (shared kernel)● HTML client (frontend)● JQAdm (JQuery admin)● ExtAdm (ExtJS admin)● JsonAdm (JSON admin API)● Jobs (cronjob controller)
Openquestions
Further separation?Frontend?Shared admin controller?
Best size formicro services?
Aimeosaimeos.orgTwitter: @aimeosfacebook.com/Aimeos