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
220
Taming Content Editable with Ember.js - Ember NYC
gavinjoyce
1
100
Taming Content Editable with Ember.js
gavinjoyce
1
350
Other Decks in Programming
See All in Programming
障害対応を起点としたもっといい開発と運用のサイクル作りのためにできること / Hatena Enginner Seminar #29
polamjag
0
390
Komplexe Oberflächen mit SVG und der Web Animation API
joergneumann
0
680
Three ways to use AI on Android: The Good, the Bad and the Ugly
marxallski
0
110
冗長なエラーログを削減し、スタックトレースを手に入れる / Reducing Verbose Error Logs and Obtaining Stack Traces
upamune
0
1.1k
GitHub Copilotのススメ
marcy731
1
230
CA.swift19 恋するAIアプリ開発の裏側
oskmr
0
380
デフォルトにして至高、RubyMineの大好きな所
ruzia
0
890
禅の心を手に入れよ
eltociear
1
390
CREってこういうこと? 体験入社 - 提案資料 - / what-is-cre-trial-employment
shinden
1
540
初心者のためのRubyKaigi入門/RubyKaigi Introduction
a_matsuda
10
1.5k
slow types ってなんだろう?
karad
0
110
Implementing Design Systems in Swift
seyfoyun
2
480
Featured
See All Featured
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
501
140k
The Brand Is Dead. Long Live the Brand.
mthomps
49
29k
Docker and Python
trallard
35
2.7k
The Invisible Customer
myddelton
114
12k
Rails Girls Zürich Keynote
gr2m
91
13k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
117
18k
Large-scale JavaScript Application Architecture
addyosmani
504
110k
Building a Modern Day E-commerce SEO Strategy
aleyda
22
6.4k
Java REST API Framework Comparison - PWX 2021
mraible
PRO
18
6.9k
Building Adaptive Systems
keathley
32
1.9k
Optimising Largest Contentful Paint
csswizardry
13
2.4k
What the flash - Photography Introduction
edds
64
11k
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