Software Architecture for Agile Enterprises

Software Architecture for Agile Enterprises

Stefan Tilkov takes a look at challenges, patterns and antipatterns of architectural work in practice—and derive concrete recommendations for the daily work of software architects.

Afd6dc452bc20f8f06612d4792bb8be3?s=128

Stefan Tilkov

May 20, 2020
Tweet

Transcript

  1. Software Architecture for Agile Enterprises INNOQ Online Technology Lunch,
 May

    2020 Stefan Tilkov, @stilkov
 stefan.tilkov@innoq.com Image by Michael Gaida from Pixabay
  2. www.innoq.com OFFICES Monheim Berlin Offenbach Munich Hamburg Zurich FACTS ~150

    employees Privately owned Vendor-independent SERVICES Strategy & technology consulting Digital business models Software architecture & development Digital platforms & infrastructures Knowledge transfer, coaching & trainings CLIENTS Finance Telecommunications Logistics E-commerce Fortune 500 SMBs Startups
  3. @stilkov architecture/ ˈɑr kɪˌtɛk tʃər /:
 noun A fancy word for the

    stuff you should not ignore
  4. Modularization Autonomy End-to-end responsibility

  5. Modularization Autonomy End-to-end responsibility

  6. @stilkov Awesome Shop CMS Archive General Ledger Print Shop HR

  7. @stilkov Awesome Shop CMS Archive General Ledger Print Shop HR

    Context
  8. @stilkov Awesome Shop CMS Archive General Ledger Print Shop HR

    Invoicing Accounting Auth Catalog Checkout & Order Search
  9. @stilkov Awesome Shop CMS Archive General Ledger Print Shop HR

    Invoicing Accounting Auth Catalog Checkout & Order Search Domain Architecture
  10. @stilkov Invoicing Accounting Auth Catalog Checkout & Order Search

  11. @stilkov

  12. @stilkov Macro Architecture

  13. @stilkov Ruby on Rails MySQL Java Spring Boot OSS Product

    COTS Java Spring Boot NodeJS ElasticSearch
  14. @stilkov Ruby on Rails MySQL Java Spring Boot OSS Product

    COTS Java Spring Boot NodeJS ElasticSearch Micro Architecture
  15. @stilkov Invoicing Accounting Auth Catalog Checkout & Order Search

  16. @stilkov Coming up with the “right” system boundaries is an

    architecture activity that must be done first
  17. @stilkov Managing dependencies is the most important ongoing architecture task

  18. @stilkov You cannot decide to not have an architecture; if

    you don’t actively create it, be prepared to deal with the one that emerges
  19. number of
 developers strength of 
 decoupling methods modules components

    μservices systems
  20. From a layered system … System Logic Data UI Module

    Module Module
  21. … to a system of systems System System System Logic

    Data UI Logic Data UI Logic Data UI
  22. Pattern: Evolutionary Architecture @stilkov

  23. Modularization Autonomy End-to-end responsibility

  24. @stilkov Invoicing Accounting Auth Catalog Checkout & Order Search

  25. @stilkov Invoicing Accounting Auth Catalog Checkout & Order Search

  26. @stilkov Invoicing Accounting Auth Catalog Checkout & Order Search

  27. @stilkov Invoicing Accounting Auth Catalog Checkout & Order Search Team

    Architecture
  28. @stilkov Conway’s Law: Organization → Architecture “Organizations which design systems

    are constrained to produce systems which are copies of the communication structures of these organizations.”
 – M.E. Conway
  29. @stilkov If your goal is to support autonomous teams, architecture

    is an essential ingredient
  30. @stilkov Size is the #1 enemy of agility; keep your

    systems as small as you reasonably can (but no smaller)
  31. @stilkov Extremely loose coupling requires very few rules, but those

    need to be enforced strictly
  32. Pattern: Regulated Market @stilkov Troy / CC BY-SA (https://creativecommons.org/licenses/by-sa/2.0)

  33. Modularization Autonomy End-to-end responsibility

  34. @stilkov Pattern: Autonomous Cells Stakeholder Stakeholder Stakeholder Biz Dev Ops

    Biz Dev Ops Biz Dev Ops
  35. @stilkov Pattern: Autonomous Cells Stakeholder Stakeholder Stakeholder Biz Dev Ops

    Biz Dev Ops Biz Dev Ops
  36. @stilkov Not every person has to become a full-stack developer,

    but every team should be a full-stack team
  37. Recommendations

  38. @stilkov 1. Establish autonomous teams as key ingredient

  39. @stilkov 2. Manage the inter-dependencies of organization and architecture

  40. @stilkov 3. Create evolvable structures and strictly maintain few rules

  41. Krischerstr. 100 40789 Monheim am Rhein Germany +49 2173 3366-0

    Ohlauer Str. 43 10999 Berlin Germany +49 2173 3366-0 Ludwigstr. 180E 63067 Offenbach Germany +49 2173 3366-0 Kreuzstr. 16 80331 München Germany +49 2173 3366-0 Hermannstrasse 13 20095 Hamburg Germany +49 2173 3366-0 Gewerbestr. 11 CH-6330 Cham Switzerland +41 41 743 0116 innoQ Deutschland GmbH innoQ Schweiz GmbH www.innoq.com Thank you! Any questions? Stefan Tilkov @stilkov
 stefan.tilkov@innoq.com
 +49 170 471 2625