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
Taming large Rails apps with Mutations
Search
Gavin Joyce
September 02, 2015
Programming
2
370
Taming large Rails apps with Mutations
A lightning talk that I gave at Full Stack Fest
Gavin Joyce
September 02, 2015
Tweet
Share
More Decks by Gavin Joyce
See All by Gavin Joyce
Scaling Ember at Intercom - EmberCamp London
gavinjoyce
1
230
Taming Content Editable with Ember.js - Ember NYC
gavinjoyce
1
100
Taming Content Editable with Ember.js
gavinjoyce
1
360
Other Decks in Programming
See All in Programming
個人アプリを2年ぶりにアプデしたから褒めて / I just updated my personal app, praise me!
lovee
0
340
Djangoアプリケーション 運用のリアル 〜問題発生から可視化、最適化への道〜 #pyconshizu
kashewnuts
1
240
なぜイベント駆動が必要なのか - CQRS/ESで解く複雑系システムの課題 -
j5ik2o
9
3.4k
Compose でデザインと実装の差異を減らすための取り組み
oidy
1
300
ペアーズでの、Langfuseを中心とした評価ドリブンなリリースサイクルのご紹介
fukubaka0825
2
310
Writing documentation can be fun with plugin system
okuramasafumi
0
120
AWS Organizations で実現する、 マルチ AWS アカウントのルートユーザー管理からの脱却
atpons
0
130
AIの力でお手軽Chrome拡張機能作り
taiseiue
0
170
自分ひとりから始められる生産性向上の取り組み #でぃーぷらすオオサカ
irof
8
2.7k
CI改善もDatadogとともに
taumu
0
110
Honoのおもしろいミドルウェアをみてみよう
yusukebe
1
200
富山発の個人開発サービスで日本中の学校の業務を改善した話
krpk1900
4
380
Featured
See All Featured
Mobile First: as difficult as doing things right
swwweet
223
9.3k
How GitHub (no longer) Works
holman
313
140k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
3.7k
Bootstrapping a Software Product
garrettdimon
PRO
306
110k
Navigating Team Friction
lara
183
15k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
132
33k
Visualization
eitanlees
146
15k
Gamification - CAS2011
davidbonilla
80
5.1k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
49k
Java REST API Framework Comparison - PWX 2021
mraible
28
8.4k
Embracing the Ebb and Flow
colly
84
4.6k
Fontdeck: Realign not Redesign
paulrobertlloyd
82
5.4k
Transcript
Taming large Rails apps with Mutations @gavinjoyce
We're on a mission to make internet business personal.
Mutations
DB Controller View Model
DB Controller View Client Application Model
DB Controller View Ember.js App Model iOS App iOS SDK
Android App Android SDK Customer Apps
DB Controller Ember.js App Model iOS App iOS SDK Android
App Android SDK Customer Apps
DB API Ember.js App Model iOS App iOS SDK Android
App Android SDK Customer Apps
DB Ember.js App Model iOS App iOS SDK Android App
Android SDK Customer Apps Mobile APIs Ember APIs Public APIs v1 v2 v3
MySQL Ember.js App Model iOS App iOS SDK Android App
Android SDK Customer Apps Mobile APIs Ember APIs Public APIs v1 v2 v3 DynamoDB Mongo Memcached Redis
MySQL Ember.js App 100+ Models iOS App iOS SDK Android
App Android SDK Customer Apps Mobile APIs Ember APIs Public APIs v1 v2 v3 DynamoDB Mongo Memcached Redis
Ember.js App 100+ Models iOS App iOS SDK Android App
Android SDK Customer Apps Mobile APIs Ember APIs Public APIs v1 v2 v3 DB
Ember.js App 100+ Models iOS App iOS SDK Android App
Android SDK Customer Apps API DB
Client 100+ Models API DB
100+ Models API DB
100+ Models DB
200+ Models DB Large surface area Callback hell Brittle Problematic
with 40+ Engineers
Mutations
None
None
100+ Models DB
Models DB Internal API We use mutations to create REST
like internal interfaces to our core services
Models DB
Models DB User API
Models DB User API Message API
Models DB User API Message API Conversation API
Models DB User API Message API Conversation API These are
logically decoupled
Models DB User API Message API Conversation API Mobile APIs
Ember APIs Public APIs v1 v2 v3
Models DB User API Message API Conversation API Mobile APIs
Ember APIs Public APIs v1 v2 v3 We also use mutations to define our external APIs
Rails App Models DB User API Message API Conversation API
Ember.js App iOS App iOS SDK Android App Android SDK Customer Apps Mobile APIs Ember APIs Public APIs v1 v2 v3
If you have any questions... @gavinjoyce
Thanks for listening! @gavinjoyce