Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Micro services as architectural concept

Micro services as architectural concept

What are micro services, some history and how we use it in Aimeos

303c2b37c0e83e752cbc15c7feb022b8?s=128

Aimeos

May 09, 2016
Tweet

Transcript

  1. Micro services as architectural concept

  2. Previous applications architectures

  3. “Spaghetti”

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

    4 Function 1
  5. Objekt oriented

  6. Object 1 - Data - Methods Object 1 - Data

    - Methods Object ... - Data - Methods Application
  7. Layer model

  8. Layer 1.3 Layer 1.2 Layer 1.1 Layer 2.2 Layer 2.1

    Application
  9. Similarity: Deployment monoliths

  10. Micro services

  11. Single, independent applications

  12. Layer 2.2 Layer 2.1 Layer 1.3 Layer 1.2 Layer 1.1

    Application 1 Application 2
  13. Requirement: Domain driven design

  14. 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
  15. Micro services in “real life”

  16. Domäne 3 Domain 1 Domain 2 Domain 5 Domain 4

    Domain 3 Bounded contexts
  17. Interfaces and data exchange

  18. Domain 1 Domain 5 Format? Versioning? Compatibility? Fault tolerance? Number

    of calls? Common data model?
  19. Shared kernel

  20. Domain 1 Data model Domain 3

  21. Best case • Work independently from each other • Extendable

    by different teams • Exchangeable • Scalable
  22. Worst case • Erros are even harder to find •

    Increased total complexity • Performance suffers • Cascading outages
  23. Aimeos

  24. E-Commerce components for integration into applications

  25. None
  26. Layer model

  27. 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
  28. Data domains

  29. Product Catalog Index Order ... 16 Datendomänen Data access

  30. Separation into stacks for micro services

  31. Config List Client ... Client Cntl ... Cntl Product ...

    Order ... Basket By domain
  32. 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
  33. Frontend client List ... Basket Frontend controller Data access With

    shared kernel JQuery JQAdm ExtAdm JsonAdm Admin Controller ExtJS JSON API
  34. As Composer packages • Aimeos core (shared kernel) • HTML

    client (frontend) • JQAdm (JQuery admin) • ExtAdm (ExtJS admin) • JsonAdm (JSON admin API) • Jobs (cronjob controller)
  35. Open questions

  36. Further separation? Frontend? Shared admin controller?

  37. Best size for micro services?

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