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

Architecture at scale - The Essentials (Tech.Ro...

Architecture at scale - The Essentials (Tech.Rocks Meetup)

An overview of what you should keep in mind on software architecture at scale, especially if you are a CTO in a growing company.

#coordination #autonomy #decentralization #domain-driven #boundedcontexts #microservices #monolith

Cyrille Martraire

June 16, 2020
Tweet

More Decks by Cyrille Martraire

Other Decks in Programming

Transcript

  1. e-commerce Bounded Contexts • SEO, Traffic Acquisition • Marketing &

    Targeting • PIM (Product Identification Management) • Catalogue • Categorization • Search • Recommendation • Pricing, Promotions • Basket • Discount, Loyalties • Shipping Cost Estimation • Payment • (Fraud Detection) • Order Management • Billing • Stock / Overbooking • Shipping • Return • CRM
  2. Payment Event Anomaly Agent Transaction Transaction Status Account Basket Items

    Recent Baskets Shopping Cart Payment Payment Fraud Detection
  3. Sub-Domains Names • Often end in ”-ing” or ”-tion” •

    Because purpose verbs made into nouns HEURISTICS
  4. THE SAME THING IN THE REAL WORLD (EG A CUSTOMER)

    FOR DIFFERENT PURPOSES BECOMES DIFFERENT THINGS
  5. “At Amazon, what a book is for you?” •Catalog: Picture,

    title, authors, rating, format (ebook or paper), category •Recommandation: List of books often bought together with it •Shipping: Dimensions, weight, international restrictions due to content •Shopping cart: Price, discount eligible •Customer review: List of (rating, review, review rating) •Book Search: title, isbn, authors •Search Inside!: full-text content, copyright- dealing policy thx @gweinbach
  6. • Directors by departments (Marketing, Sales, Operations, Customer Support…) •

    Interviews people and listen to their purpose & language
  7. Pre-Negotiation Listing) B2BOrdering Fraud Détection Payment Sourcing Distribution Rates Grid

    RealTime Prices Gift Cards Content & Comparators Sales Promotion Acquisition TV Campaigns Online Ads Company Rating Product Reviews Shopping Cart Catalogue Search Categories Tags Partnerships Secondary Listing Internal Purchasing Rates CrossSales Navigation SEO Marketing
  8. Sub-Domain A sub-sub domain A1 sub-sub domain B1 sub-sub domain

    C1 Domain Sub-Domain B Sub-Domain C sub-sub domain A2 sub-sub domain C2 Customers Experience X1 Customers Experience X2 Customers Experience X3 Generic enabler Audience Experiences Business (Sub)- Domains Domain- agnostic Enablers Collaborators Experience X4 Very specific Generic Specific audience Domain- Specific Domain- Agnostic Volatile Stable MAPPING THE POTENTIAL BOUNDED CONTEXTS
  9. @CYRIUX GUIDING DELIVERY PROJECTS @CYRIUX Don’t split for the sake

    of it. Split Opportunistically when needed. Never fully done.
  10. Mapping the Potential Bounded Contexts Sub-Domain A sub-sub domain A1

    sub-sub domain B1 sub-sub domain C1 Domain Sub-Domain B Sub-Domain C sub-sub domain A2 sub-sub domain C2 Customers Experience X1 Customers Experience X2 Customers Experience X3 Generic enabler Audience Experiences Business (Sub)- Domains Domain- agnostic Enablers Collaborators Experience X4 Very specific Generic Specific audience Domain- Specific Domain- Agnostic Volatile Stable legacy components not aligned (at all)
  11. @cyriux Fraud Détection Payment Gift Cards n mpany ting Review

    Shopping Cart EVENT-SOURCED HEXAGONAL ARCHITECTURE CRUD SaaS
  12. @cyriux Fraud Détection Payment Gift Cards n mpany ting Review

    Shopping Cart CASSANDRA POSTGRES ORACLE MongoDB
  13. @cyriux Fraud Détection Payment Gift Cards n mpany ting Review

    Shopping Cart Azure API APP on-premise Azure/WEbapp SaaS Azure FUNCTIONS Azure ML
  14. @cyriux Fraud Détection Payment Gift Cards n mpany ting Review

    Shopping Cart REWRITE EXTERNALIZE KEEP AS-IS KEEP EXTRACT EXTRACT AS LIB
  15. @cyriux Fraud Détection Payment Gift Cards n mpany ting Review

    Shopping Cart NOW WHEN NECESSARY NEXT YEAR LATER Q3 Q4
  16. @CYRIUX Data Sharing @CYRIUX DATA SHARING - SYNC QUERY OR

    - DB VIEWS OR - IMMUTABLE - VERSIONED - EVENT-DRIVEN MESSAGING ONLY ONE AUTHORITY FOR EACH DATA (data licence?)
  17. MAPPING THE POTENTIAL BOUNDED CONTEXTS Sub-Domain A sub-sub domain A1

    sub-sub domain B1 sub-sub domain C1 Domain Sub-Domain B Sub-Domain C sub-sub domain A2 sub-sub domain C2 Customers Experience X1 Customers Experience X2 Customers Experience X3 Generic enabler Audience Experiences Business (Sub)- Domains Domain- agnostic Enablers Collaborators Experience X4 Very specific Generic Specific audience Domain- Specific Domain- Agnostic Volatile Stable
  18. Sub-Domain A sub-sub domain A1 sub-sub domain B1 sub-sub domain

    C1 Domain Sub-Domain B Sub-Domain C sub-sub domain A2 sub-sub domain C2 Customers Experience X1 Customers Experience X2 Customers Experience X3 Generic enabler Audience Experiences Business (Sub)- Domains Domain- agnostic Enablers Collaborators Experience X4 Very specific Generic Specific audience Domain- Specific Domain- Agnostic Volatile Stable SpringBoot Postgres / Elastic Search RabbitMQ Microservice MAPPING THE POTENTIAL BOUNDED CONTEXTS
  19. MAPPING THE TARGET ARCHITECTURE Sub-Domain A sub-sub domain A1 sub-sub

    domain B1 sub-sub domain C1 Domain Sub-Domain B Sub-Domain C sub-sub domain A2 sub-sub domain C2 Customers Experience X1 Customers Experience X2 Customers Experience X3 Generic enabler Audience Experiences Business (Sub)- Domains Domain- agnostic Enablers Collaborators Experience X4 Very specific Generic Specific audience Domain- Specific Domain- Agnostic Volatile Stable Modular Monolith
  20. @CYRIUX CALL TO ACTION from where you are, CONSIDER: WHERE

    TO SPLIT NEXT? ON WHAT BOUNDARIES? ACKNOWLEDGE: WHAT CONTRACTS ARE ALREADY THERE, EVEN IMPLICITLY? START QUESTIONING: WHO REALLY OWNS EACH PIECE OF DATA?