Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Reclaim your architecture @ sbonrails
Search
shagemann
February 12, 2014
Technology
140
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.6k
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
130
GET STARTED WITH COMPONENT-BASED RAILS APPLICATIONS! @ Rocky Mountain Ruby 2015
shagemann
1
180
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
120
Other Decks in Technology
See All in Technology
Railsのように考える: See through the Master
snoozer05
PRO
5
1.3k
Vibe Coding で作ったプロダクトをどう安全に動かすか / How to Safely Run Products Built with Vibe Coding
glidenote
0
570
AIエージェントの自己改善をどう設計するか / How to Design Self-Improvement for AI Agents
22mi
27
17k
SREは、MCPとAutopilotをこう使え!
kazumax55
3
960
[Kiro Meetup #7] Kiro Crew Dive Deep
konippi
0
310
サーバーレスをどこまで使う? WebRTC対戦ゲームで選んだVPSとの共存設計
kaidouji85
0
430
SREへの勘違いに気づいた後の話
tomodakengo
0
150
CI/CDではもう遅い - 人とAIが迂回しないDevSecOps Verify基盤の再設計 -
kintotechdev
0
160
Goodbye ShellScript, Hello File-based App
shunsock
0
960
SREの視点で考えるSIEM活用術 〜AWS環境でのセキュリティ強化〜
cscengineer
PRO
0
330
【技術的負債conf】事業成長に伴う技術的負債の説明責任とAIによるモニタリング、認知的負債について
i35_267
4
2.1k
アクセスキーこわい やめかたと漏らさない工夫
sassssan68
1
750
Featured
See All Featured
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.4k
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
12k
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.5k
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
540
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
Deep Space Network (abreviated)
tonyrice
0
320
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.8k
A Tale of Four Properties
chriscoyier
163
24k
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
430
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
470
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
120
120k
Producing Creativity
orderedlist
PRO
348
41k
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]