Lightning talk Vertical vs Horizontal Software Architecture held at RubyConf India 2016 in Kochi, Kerala, India. Covers a few architecture principles to describe why vertical architectures are more maintainable than horizontal architectures.
What are the advantages and disadvantages of membrane structures.pptx
Vertical vs Horizontal Software Architecture
1. Vertical vs Horizontal
Software Architecture
Christian Hujer
CEO / CTO Nelkinda Software Craft Pvt Ltd.
At RubyConf India 2016
1@christianhujer @nelkinda #RubyConfIndia #Ruby 1
6. Cohesion
Things that change together are cohesive.
Examples:
● A model, its view and and its controller.
6@christianhujer @nelkinda #RubyConfIndia #Ruby 6
7. Collocation
Things which are “next” / “close” to each other.
Examples:
● Files in the same directory
● Classes in the same package
7@christianhujer @nelkinda #RubyConfIndia #Ruby 7
8. The 4 Design Smells (Uncle Bob)
Design smells are the odors of rotting software.
● Rigidity
● Fragility
● Immobility
● Viscosity
8@christianhujer @nelkinda #RubyConfIndia #Ruby 8
9. Immobility = Inability to Reuse
Reusable =
● Independently deployable
● Independently developable
● Independently testable
● Scalable (i.e. carving out microservices)
⇒ It’s important even if you don’t reuse!
9@christianhujer @nelkinda #RubyConfIndia #Ruby 9
10. Oh, this is an MVC web application
(Surprise, surprise!)
vs
Oh, this is an event registration system.
Software Architecture
10@christianhujer @nelkinda #RubyConfIndia #Ruby 10
11. Communicate Intent!
Like every software entity,
the architecture should
communicate its intent,
not its implementation!
11@christianhujer @nelkinda #RubyConfIndia #Ruby 11
12. CCP: Common Closure Principle
“Classes that change together are packaged
together.”
From the 11 (sic!) “SOLID” principles
Design Principles and Design Patterns (Robert
C. Martin, 2000)
12@christianhujer @nelkinda #RubyConfIndia #Ruby 12
13. CCP: Cohesion Collocation Principle
Cohesive things should be collocated!
Put things that change together in the same
place!
13@christianhujer @nelkinda #RubyConfIndia #Ruby 13