14. SoundCloud was
born on Rails
It allowed us to iterate real
fast and keep
code quality up(-ish).
Sunday, March 10, 13
15. Rails is simple.
Controller
ActiveRecord
Model
Database
Sunday, March 10, 13
16. Rails is simple.
Controller
ActiveRecord
Model
Database
If you want to write
a toy blog engine.
Sunday, March 10, 13
17. In the real world,
it gets messy.
Controller
ActiveRecord
Model
Database
Sunday, March 10, 13
18. In the real world,
it gets messy.
thin yajl
Controller amqp
EventMachine
haml
sc-caching ActiveRecord
DelayedJobs
Model
mysql master/
sc-logging slave adapter
Database Memcached
lhm nokogiri
statsy new relic
Real messy.
Sunday, March 10, 13
48. Non-Rails Ruby
+ Simple
+ Easy to hire engineers
+ Lingua-franca inside SC
- Most code not thread-safe
- Lots of native code
- Rails mindset everywhere
Sunday, March 10, 13
49. Scala
+ “twitter stack” (Finagle, docs)
+ Good Java interop
+ Static typing
+ Good engineering practices
starting to emerge
- Binary compatibility
- Can get complicated
Sunday, March 10, 13
50. Clojure
+ Easier to get started with
+ Favours smaller apps
+ Good Java interop
- Very early days for engineering
good practices
- 3rd party libs a bit off in quality
Sunday, March 10, 13
55. 1) Micro-services
- A couple of thousand LOC
- Once you grasp the domain, can
be rewritten in ~1 week
- Reduces risk in trying new things
Sunday, March 10, 13
56. internet
Legacy Application
(Rails)
Database
Sunday, March 10, 13
58. Sounds Users Stats Stream
DB DB DB DB
Notifications Settings Recommender Messaging
DB DB DB DB
Sunday, March 10, 13
59. internet
API
Sounds Users Stats Stream
Notifications Settings Recommender Messaging
Sunday, March 10, 13
60. 2) Easy to deploy
- Old Rails system has fully
automated deployment
- From change to production
should take minutes
- Integrated to CI
- Reverting is easy
Sunday, March 10, 13