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

Aimeos

May 09, 2016
Tweet

More Decks by Aimeos

Other Decks in Programming

Transcript

  1. Micro services as
    architectural concept

    View Slide

  2. Previous applications
    architectures

    View Slide

  3. “Spaghetti”

    View Slide

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

    View Slide

  5. Objekt oriented

    View Slide

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

    View Slide

  7. Layer model

    View Slide

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

    View Slide

  9. Similarity:
    Deployment monoliths

    View Slide

  10. Micro services

    View Slide

  11. Single, independent
    applications

    View Slide

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

    View Slide

  13. Requirement:
    Domain driven design

    View Slide

  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

    View Slide

  15. Micro services
    in “real life”

    View Slide

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

    View Slide

  17. Interfaces and
    data exchange

    View Slide

  18. Domain 1
    Domain 5
    Format?
    Versioning?
    Compatibility?
    Fault tolerance?
    Number of calls?
    Common
    data model?

    View Slide

  19. Shared kernel

    View Slide

  20. Domain 1
    Data model
    Domain 3

    View Slide

  21. Best case
    ● Work independently from each other
    ● Extendable by different teams
    ● Exchangeable
    ● Scalable

    View Slide

  22. Worst case
    ● Erros are even harder to find
    ● Increased total complexity
    ● Performance suffers
    ● Cascading outages

    View Slide

  23. Aimeos

    View Slide

  24. E-Commerce components
    for integration into
    applications

    View Slide

  25. View Slide

  26. Layer model

    View Slide

  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

    View Slide

  28. Data domains

    View Slide

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

    View Slide

  30. Separation into stacks
    for micro services

    View Slide

  31. Config
    List
    Client
    ...
    Client
    Cntl
    ...
    Cntl
    Product
    ...
    Order
    ...
    Basket
    By domain

    View Slide

  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

    View Slide

  33. Frontend
    client
    List
    ...
    Basket
    Frontend
    controller
    Data access
    With shared kernel
    JQuery
    JQAdm
    ExtAdm
    JsonAdm
    Admin Controller
    ExtJS
    JSON API

    View Slide

  34. As Composer packages
    ● Aimeos core (shared kernel)
    ● HTML client (frontend)
    ● JQAdm (JQuery admin)
    ● ExtAdm (ExtJS admin)
    ● JsonAdm (JSON admin API)
    ● Jobs (cronjob controller)

    View Slide

  35. Open
    questions

    View Slide

  36. Further separation?
    Frontend?
    Shared admin controller?

    View Slide

  37. Best size for
    micro services?

    View Slide

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

    View Slide