Modular Monoliths

Modular Monoliths

GOTO Conferences via YouTube Direct link

Architectural principles introduce consistency via constraints and guidelines

15 of 34

15 of 34

Architectural principles introduce consistency via constraints and guidelines

Class Central Classrooms beta

YouTube videos curated by Class Central.

Classroom Contents

Modular Monoliths

Automatically move to the next video in the Classroom when playback concludes

  1. 1 Introduction
  2. 2 A well structured codebase is easy to visualise
  3. 3 the component exists conceptually
  4. 4 Abstractions should reflect the code
  5. 5 Our architecture diagrams don't match the code.
  6. 6 The code structure should reflect the architectural intent
  7. 7 Organise code based upon what the code does from a technical perspective
  8. 8 Package by layer is a "horizontal" slicing
  9. 9 Relaxed vs strict layering
  10. 10 Changes to a layered architecture usually result in changes across all layers
  11. 11 Organise code based upon what the code does from a functional perspective
  12. 12 Package by feature is a "vertical" slicing
  13. 13 Cited benefits include higher cohesion, lower coupling, and related code is easier to find
  14. 14 The "inside" is technology agnostic, and is often described in terms of a ubiquitous language
  15. 15 Architectural principles introduce consistency via constraints and guidelines
  16. 16 web controllers should never access repositories directly
  17. 17 Tooling? Static analysis tools, architecture violation checking, etc
  18. 18 types in package **/web should not access types in **/data
  19. 19 Using tools to assert good code structure seems like a hack
  20. 20 But Java's access modifiers are flawed...
  21. 21 Component? a grouping of related functionality behind a nice clean interface, which resides inside an execution environment like an application
  22. 22 Package by component is about applying component-based or service-oriented design thinking to a monolithic codebase
  23. 23 Modularity as a principle
  24. 24 Separating interface from implementation
  25. 25 Impermeable boundaries
  26. 26 The devil is in the implementation details
  27. 27 Organisation vs encapsulation
  28. 28 Use encapsulation to minimise the number of potential dependencies
  29. 29 If you're building a monolithic application with a single codebase, try to use the compiler to enforce boundaries
  30. 30 Or other decoupling modes such as a module framework that differentiates public from published types
  31. 31 Agility is a quality attribute
  32. 32 A good architecture enables agility
  33. 33 Whatever architectural approach you choose, don't forget about the implementation details
  34. 34 Beware of the model-code gap

Never Stop Learning.

Get personalized course recommendations, track subjects and courses with reminders, and more.

Someone learning on their laptop while sitting on the floor.