Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Reclaim your architecture @ sbonrails
Search
shagemann
February 12, 2014
Technology
130
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Reclaim your architecture @ sbonrails
The slides of my February 12, 2014 talk at Santa Barbara on Rails
shagemann
February 12, 2014
More Decks by shagemann
See All by shagemann
Gradually Modularizing your Monolith with Ruby Packs and Packwerk
shagemann
0
1.5k
Structural Engineering in Ruby
shagemann
0
1.6k
Productize Your Services! @ springone 2017
shagemann
0
1.6k
Software Components @ RUG-B
shagemann
0
1.6k
Boulder Ruby Group Beginner's Track - What to Do Next?
shagemann
0
110
GET STARTED WITH COMPONENT-BASED RAILS APPLICATIONS! @ Rocky Mountain Ruby 2015
shagemann
1
170
Get started with Component-Based Rails @ RailsConf 2015
shagemann
3
1.9k
Refactoring towards Component-based Rails Architectures @ RailsConf 2014
shagemann
5
2.1k
The Rich, Flowers, and Piles of Sh%#t - And What To Do About It
shagemann
0
110
Other Decks in Technology
See All in Technology
関西に縁あるMicrosoft MVPsが語るCopilotの未来
kasada
0
1.2k
[モダンアプリ勉強会]今更聞けないGit/GitHub入門
tsukuboshi
0
290
Agentic ERPをどう設計するか ー 受発注エージェントを動かす、現場の知見と設計思想ー
recerqainc
1
1.8k
LLMと共に進化するプロセスを目指して
ymatsuwitter
12
3.5k
製造業のクラウド活用最適解〜AI,DXを加速するデータ基盤の作り方〜
hamadakoji
0
400
価格.comをAI駆動で全面刷新する ー 30年分の技術的負債を返し、次の30年の土台をつくる ー / AI Engineering Summit Tokyo 2026
tkyowa
50
55k
Claude code Orchestra
ozakiomumkj
3
1k
MIERUNE JCT 発表資料「宇宙から伊能忠敬ごっこ」
syuchimu
0
190
AI駆動開発が変える、大規模開発の前提 ーHuman in the Loop から Human on the Loop へ / AIE2026
visional_engineering_and_design
26
16k
Agentic Defenseとともにセキュリティエンジニアが輝き続けるには / How Security Engineers Can Keep Excelling with Agentic Defense
yuj1osm
0
120
ITエンジニアを取り巻く環境とキャリアパス / A career path for Japanese IT engineers
takatama
4
1.8k
コードレビューを制するチームがソフトウェアデリバリーのフローを制す / Beyond Code Review: Distributing Its Responsibilities Across the SDLC
mtx2s
4
1.2k
Featured
See All Featured
AI Search: Where Are We & What Can We Do About It?
aleyda
0
7.6k
A Soul's Torment
seathinner
6
2.9k
Designing Powerful Visuals for Engaging Learning
tmiket
1
400
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
4k
A Modern Web Designer's Workflow
chriscoyier
698
190k
How to make the Groovebox
asonas
2
2.2k
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.3k
The Cult of Friendly URLs
andyhume
79
6.9k
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
140
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
210
The World Runs on Bad Software
bkeepers
PRO
72
12k
Tell your own story through comics
letsgokoyo
1
950
Transcript
Reclaim your architecture Stephan Hagemann
Rails developers?
STEPHAN GERMAN GERMANY BOULDER ROCK CLIMBING WHITE MALE NETHERLANDS CYCLING
DIVING CONSULTANT RUBY RAILS GO XING PIVOTAL LABS
None
None
Labeling in Software development
No Rails app starts with a namespace
All gems start with a namespace
Rails Gems
AEH FACE Rails Gems
! ! ! ! ! ! ! ! ! +
active record + active support + action controller Rails Gems
How can you tell what still belongs?
None
Try this! ! Namespace everything in your next app
Give yourself a box so you can start thinking outside
of it
Can you prove small chunks?
Growing size
Exploding complexity SIZE POSSIBLE INTERACTIONS
Effect of structure VS
SIZE POSSIBLE INTERACTIONS Reduced exploding complexity
Slashing complexity SIZE COMPLEXITY SPLIT!
Making chunks early SIZE COMPLEXITY SPLIT!
Net win? SIZE COMPLEXITY SPLIT! $ $
You’re going to do it often SIZE DOUBLE SPLIT! COMPLEXITY
NEW CODE IN ENGINE NEW CODE IN ENGINE
Never build large apps to build large apps
github.com/shageman/ the_next_big_thing
5 looser coupling 3 gems 1 one app 4 engines
8 HTTP SOA 2 modules 7 eco-system 6 services
1 The one app
HTTP://WWW.FLICKR.COM/PHOTOS/WIDNR/6589525327/
Examples ! diaspora, CF CC, canvas
If you are in the situation where you’re reading some
text, investigating, trying to figure out what is going on... That is a very good property of a detective novel and a very bad property of code. ! Martin Fowler
ANNOYANCE ENTRY STRUCTURE
2 The modularized app
HTTP://EECUE.COM/P/31426/METAL-RECYCLING-YARD.HTML
+ A higher level structure
ANNOYANCE EMAIL SIGNUP STRUCTURE
3 The gem component app
None
+ Provable independence
Choose modules that tell the story of the system and
contain a cohesive set of concepts Eric Evans
None
HTTP://WWW.SMASHINGMAGAZINE.COM/INFORMATION-AND-INSTRUCTIONAL-SIGNS-PART-1/
ANNOYANCE EMAIL SIGNUP STRUCTURE
4 The Rails component app
None
+ Provable independence for Rails
Rails Engines
EMAIL SIGNUP TEASER STRUCTURE ANNOYANCE
5 The loosely-coupled app
None
+ Clearer responsibilities
EMAIL SIGNUP TEASER STRUCTURE ANNOYANCE EVENT COUNTER
6 The service-oriented app
None
+ Reduced surface area
588 194 LOGGER::COUNT EVENTCOUNTER::*.METHODS.COUNT LOGGER 361 115
588 194 LOGGER::COUNT EVENTCOUNTER::*.METHODS.COUNT LOGGER 361 115 - OBJECT.METHODS LOGGER::COUNT
LOGGER 394 0 247 1
EMAIL SIGNUP TEASER STRUCTURE ANNOYANCE EVENT COUNTER
7 The eco-system app
None
gem build event_counter..
gem push event_counter..
None
EMAIL SIGNUP TEASER STRUCTURE ANNOYANCE EVENT COUNTER
8 The HTTP SOA app
PICTURE HERE
STRUCTURE EMAIL SIGNUP TEASER ANNOYANCE EVENT COUNTER
5 looser coupling 3 gems 1 one app 4 engines
8 HTTP SOA 2 modules 7 eco-system 6 services
5 looser coupling 3 gems 1 one app 4 engines
8 HTTP SOA 2 modules 7 eco-system 6 services
9 Architecture the reclaimed years
None
HTTP://WWW.CONFREAKS.COM/VIDEOS/759-RUBYMIDWEST2011-KEYNOTE- ARCHITECTURE-THE-LOST-YEARS
None
None
None
None
well, we just did that
EMAIL SIGNUP TEASER STRUCTURE ANNOYANCE EVENT COUNTER
Thanks! Stephan Hagemann @shageman
[email protected]