Chronicle of a SOA foretold
(Ruby in the enterprise)
Slide 2
Slide 2 text
Chronicle of a SOA Foretold
• 43
Francisco Viramontes · @kidpollo · http://kidpo.io 2
Me • @kidpollo
•
Senor Engineer @ Get Satisfaction
•
I <3 Ruby
•
Mentor
•
Entrepreneur wannabe
Slide 3
Slide 3 text
Chronicle of a SOA Foretold
• 43
Francisco Viramontes · @kidpollo · http://kidpo.io 3
I take pictures and
like good food
Some will say I am a hipster
Slide 4
Slide 4 text
Chronicle of a SOA Foretold
• 43
Francisco Viramontes · @kidpollo · http://kidpo.io 4
Slide 5
Slide 5 text
Chronicle of a SOA Foretold
• 43
Francisco Viramontes · @kidpollo · http://kidpo.io 5
SOA Service Oriented Architectures
‣
Well defined
‣
Built as components
‣
Can be re-used
‣
Loosely coupled
Slide 6
Slide 6 text
Chronicle of a SOA Foretold
• 43
Francisco Viramontes · @kidpollo · http://kidpo.io 6
Ruby is no longer a kid
‣
February 24, 1993
‣
December 21, 1995
‣
February 4, 2004
‣
2.0
‣
4.0
Slide 7
Slide 7 text
Chronicle of a SOA Foretold
• 43
Francisco Viramontes · @kidpollo · http://kidpo.io 7
Rails is SOA ready
Slide 8
Slide 8 text
Chronicle of a SOA Foretold
• 43
Francisco Viramontes · @kidpollo · http://kidpo.io 8
The Novella
Slide 9
Slide 9 text
Chronicle of a SOA Foretold
• 43
Francisco Viramontes · @kidpollo · http://kidpo.io 9
Can Rails scale?
http://canrailsscale.com/
NO
Slide 10
Slide 10 text
Story of a SOA Foretold
Francisco Viramontes @kidpollo • 24
-Matz
“Ruby is simple in
appearance, but is very
complex inside, just like our
human body.”
10
Slide 11
Slide 11 text
Chronicle of a SOA Foretold
• 43
Francisco Viramontes · @kidpollo · http://kidpo.io 11
I CAN HAZ JOB?
Slide 12
Slide 12 text
Chronicle of a SOA Foretold
• 43
Francisco Viramontes · @kidpollo · http://kidpo.io 12
Ruby is in big companies
Slide 13
Slide 13 text
Chronicle of a SOA Foretold
• 43
Francisco Viramontes · @kidpollo · http://kidpo.io 13
Ruby is in the cloud
Slide 14
Slide 14 text
Chronicle of a SOA Foretold
• 43
Francisco Viramontes · @kidpollo · http://kidpo.io 14
Ruby is everywhere
MRuby
Slide 15
Slide 15 text
Chronicle of a SOA Foretold
• 43
Francisco Viramontes · @kidpollo · http://kidpo.io 15
Ruby is above and beyond
Slide 16
Slide 16 text
Chronicle of a SOA Foretold
• 43
Francisco Viramontes · @kidpollo · http://kidpo.io 16
Rails is ...
Slide 17
Slide 17 text
Chronicle of a SOA Foretold
• 43
Francisco Viramontes · @kidpollo · http://kidpo.io 17
Video
http://www.youtube.com/v/E99FnoYqoII?end=129&version=3
Slide 18
Slide 18 text
Chronicle of a SOA Foretold
• 43
Francisco Viramontes · @kidpollo · http://kidpo.io 18
Rails is ola ke ase?
Slide 19
Slide 19 text
Chronicle of a SOA Foretold
• 43
Francisco Viramontes · @kidpollo · http://kidpo.io 19
Default
Stack
Slide 20
Slide 20 text
Chronicle of a SOA Foretold
• 43
Francisco Viramontes · @kidpollo · http://kidpo.io 20
My
Stack
Slide 21
Slide 21 text
Chronicle of a SOA Foretold
• 43
Francisco Viramontes · @kidpollo · http://kidpo.io 21
The SF Burrito
Slide 22
Slide 22 text
Chronicle of a SOA Foretold
• 43
Francisco Viramontes · @kidpollo · http://kidpo.io 22
SOA Taquiza!
Slide 23
Slide 23 text
Chronicle of a SOA Foretold
• 43
Francisco Viramontes · @kidpollo · http://kidpo.io 23
Now lets get
a closer look
Slide 24
Slide 24 text
Chronicle of a SOA Foretold
• 43
Francisco Viramontes · @kidpollo · http://kidpo.io 24
•
Its all about scale
•
A brand new GC
•
Great performance increase
•
Some new syntax sparkles
•
API compatible with 1.9
Ruby 2.0
Slide 25
Slide 25 text
Chronicle of a SOA Foretold
• 43
Francisco Viramontes · @kidpollo · http://kidpo.io 25
Rails 4.x
SOA
Slide 26
Slide 26 text
Chronicle of a SOA Foretold
• 43
Francisco Viramontes · @kidpollo · http://kidpo.io 26
Strong Parameters
Slide 27
Slide 27 text
Chronicle of a SOA Foretold
• 43
Francisco Viramontes · @kidpollo · http://kidpo.io 27
Routing Concerns
Slide 28
Slide 28 text
No content
Slide 29
Slide 29 text
Chronicle of a SOA Foretold
• 43
Francisco Viramontes · @kidpollo · http://kidpo.io 29
Russian Doll (Torta de tamal) catching
Slide 30
Slide 30 text
Chronicle of a SOA Foretold
• 43
Francisco Viramontes · @kidpollo · http://kidpo.io 30
SOA also applies to code
•
PORO
•
Classes are your friends
•
Single responsibility principle
•
Resilient to change
•
Easy to test
Slide 31
Slide 31 text
Chronicle of a SOA Foretold
• 43
Francisco Viramontes · @kidpollo · http://kidpo.io 31
PORO
Slide 32
Slide 32 text
Chronicle of a SOA Foretold
• 43
Francisco Viramontes · @kidpollo · http://kidpo.io 32
Single responsibility principle
Slide 33
Slide 33 text
Chronicle of a SOA Foretold
• 43
Francisco Viramontes · @kidpollo · http://kidpo.io 33
Skinny Models
•
Keep callback logic separate (decouple)
•
Extract business logic to classes
•
Don’t mix Authorization with validations
http://blog.codeclimate.com/blog/2012/10/17/7-ways-to-decompose-fat-activerecord-models/
Slide 34
Slide 34 text
Chronicle of a SOA Foretold
• 43
Francisco Viramontes · @kidpollo · http://kidpo.io 34
Slide 35
Slide 35 text
Chronicle of a SOA Foretold
• 43
Francisco Viramontes · @kidpollo · http://kidpo.io 35
Authentication as a middleware
•
Rollout your own
•
Warden rocks!
•
Disable session based auth
•
Share across your services
•
Oauth 2.0
https://github.com/kidpollo/warden-oauth2
Slide 36
Slide 36 text
Chronicle of a SOA Foretold
• 43
Francisco Viramontes · @kidpollo · http://kidpo.io 36
Slide 37
Slide 37 text
Chronicle of a SOA Foretold
• 43
Francisco Viramontes · @kidpollo · http://kidpo.io 37
Authorization that does not suck!
•
Rollout your own
•
Use plain classes
•
Pundit rocks!
•
Don't mix with validations
•
Share across services
https://github.com/elabs/pundit
Slide 38
Slide 38 text
Chronicle of a SOA Foretold
• 43
Francisco Viramontes · @kidpollo · http://kidpo.io 38
Whats wrong?
Slide 39
Slide 39 text
Chronicle of a SOA Foretold
• 43
Francisco Viramontes · @kidpollo · http://kidpo.io 39
Versioning from the start
•
Catching
•
Documentation
•
Lifecycle
•
Dependencies
Slide 40
Slide 40 text
Chronicle of a SOA Foretold
• 43
Francisco Viramontes · @kidpollo · http://kidpo.io 40
Measure everything
•
Usage
•
Performance
•
Trace
•
Logs http://asciicasts.com/episodes/249-notifications-in-rails-3
Slide 41
Slide 41 text
Chronicle of a SOA Foretold
• 43
Francisco Viramontes · @kidpollo · http://kidpo.io 41
Now make your own SOA diagram
Slide 42
Slide 42 text
Chronicle of a SOA Foretold
• 43
Francisco Viramontes · @kidpollo · http://kidpo.io 42
Slide 43
Slide 43 text
FIN
Thanks!
@kidpollo
http://www.linkedin.com/in/fviramontes