Modular Monoliths • Simon Brown • GOTO 2018
GOTO Conferences GOTO Conferences
1.03M subscribers
95,621 views
2.2K

 Published On Nov 22, 2018

This presentation was recorded at GOTO Berlin 2018. #gotocon #gotober
http://gotober.com

Simon Brown - Creator of C4 Software Architecture model and Author of Software Architecture for Developers ‪@simonbrown4821‬

ABSTRACT
If you want evidence that the software development industry is susceptible to fashion, just go and take a look at all of the hype around microservices. It's everywhere! For some people microservices is "the next big thing", whereas for others it's simply a lightweight evolution of the big service-oriented architectures that we saw 10 years ago "done right". Microservices is by no means a silver bullet though, and the design thinking required to create a good microservices architecture is the same as that needed to create a well structured monolith. And this begs the question that if you [...]

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

Download slides and read the full abstract here:
https://gotober.com/2018/sessions/515

RECOMMENDED BOOK
Simon Brown • Software Architecture for Developers Vol. 2 • https://leanpub.com/visualising-softw...

  / gotober  
  / gotoconference  
  / goto-  
http://gotocon.com
#EventDrivenArchitecture #Monoliths #ModularMonoliths #SoftwareArchitecture

Looking for a unique learning experience?
Attend the next GOTO Conference near you! Get your ticket at http://gotocon.com

SUBSCRIBE TO OUR CHANNEL - new videos posted almost daily.
https://www.youtube.com/user/GotoConf...

show more

Share/Embed