Thursday, November 3, 11
Ruby-on-Infinispan
Cloud-tastic Data Grids for Ruby apps
Galder Zamarreño
Senior Software Engineer
Red Hat, Inc
Thursday, November 3, 11
Galder Zamarreño
• R&D Engineer, Red Hat Inc.
• Infinispan developer
• Work on various JBoss projects
• Twitter: @galderz
• Blog: zamarreno.com
Thursday, November 3, 11
Agenda
• What is TorqueBox?
• Rails caching limitations
• What is Infinispan?
• TorqueBoxStore
• Cloud storage with Infinispan
Thursday, November 3, 11
What is TorqueBox?
The mating of JRuby to
JBoss Application Server
Thursday, November 3, 11
What is TorqueBox?
Thursday, November 3, 11
Goals of TorqueBox
• Support Ruby web frameworks
• Rails, Sinatra, Rack
• Go beyond web
• Messaging
• Enterprise-Grade Caching
• Data Grid Storage
Thursday, November 3, 11
Hmmm, but...
... Rails already supports
caching
... and why would I want to
store data in a data grid?
Thursday, November 3, 11
What’s wrong with
Rails caching?
Thursday, November 3, 11
Caches are OK
Actually, action and fragment
caches are useful in
production but they don’t cover
all needs
Thursday, November 3, 11
Cache Stores
Choice provided by Rails is a
bit limited...
Thursday, November 3, 11
MemoryStore
Does not share cache
contents and is not
concurrent-safe
Thursday, November 3, 11
MemCacheStore
Caches in Danga’s
Memcached servers
Probably the most popular
option in production
Thursday, November 3, 11
MemCacheStore
Do you really need a separate
process for a cache?
Cache operations not local...
Thursday, November 3, 11
TorqueBoxStore
Brand new store!
Integrates with Infinispan, a
data grid platform from JBoss
Thursday, November 3, 11
Introducing
Thursday, November 3, 11
What is Infinispan?
An in-memory, highly
available, elastic, and open
source (LGPL) data grid
platform
Thursday, November 3, 11
Clustered
Consistency achieved via
invalidation, replication and
distribution modes
Thursday, November 3, 11
API
Map-like key/value store and
JPA layer via Hibernate OGM
Thursday, November 3, 11
Embedded Access
Thursday, November 3, 11
Remote Access
•Via protocols :
•REST
•Hot Rod
Thursday, November 3, 11
And more...
• Highly concurrent with MVCC locking
• Persistence, not just in-memory
• Adaptive eviction and expiration
• JMX and RHQ server monitoring
• ...etc
Thursday, November 3, 11
Why should I use
TorqueBoxStore?
Thursday, November 3, 11
TorqueBoxStore
Provides a local, in-memory,
highly-concurrent, clustered
cache
Thursday, November 3, 11
config/application.rb
Thursday, November 3, 11
Default Cache Mode
When TorqueBox clustered, it
uses Invalidation, otherwise
it’s just Local
Thursday, November 3, 11
Beyond Rails
Caching...
Thursday, November 3, 11
Durable Counters
Thursday, November 3, 11
Enough of
caching...
Thursday, November 3, 11
What’s all about
data grid storage?
Thursday, November 3, 11
Traditional 3-tier App
Thursday, November 3, 11
Typical IaaS App
Thursday, November 3, 11
Traditional PaaS App
Thursday, November 3, 11
Where’s your data
stored??
Thursday, November 3, 11
Clouds are
ephemeral!!
Thursday, November 3, 11
State
Thursday, November 3, 11
Virtualizing Data
Some public services exist
(i.e. Amazon RDS), but not all
cloud deployments are public!
Thursday, November 3, 11
Characteristics of DaaS
Elastic, scalable and highly
available!
Thursday, November 3, 11
DaaS with
Infinispan
Thursday, November 3, 11
Architecture
ManageandMonitor
Thursday, November 3, 11
What are those
Infinispan nodes??
Thursday, November 3, 11
Either
• Infinispan Hot Rod servers started via:
• or servlet container w/ Infinispan REST war
• or JBoss Enterprise Data Grid nodes
Thursday, November 3, 11
How do Ruby apps
talk to them?
Thursday, November 3, 11
Talk to Infinispan REST
Thursday, November 3, 11
Hmm, Hot Rod is a
custom protocol...
Thursday, November 3, 11
JRuby Hot Rod client
github.com/noelo/hotrod-jruby.git
Thursday, November 3, 11
What’s next?
Thursday, November 3, 11
Roadmap
ActiveModel backend that
stores stuff in Infinispan data
grid nodes
Thursday, November 3, 11
Summary
TorqueBoxStore: in-memory,
clustered & highly concurrent
Rails and low level caching!
Thursday, November 3, 11
Summary
Infinispan servers: distributed,
elastic and highly available
cloud-ready store
Thursday, November 3, 11
Questions?
torquebox.org - infinispan.org
#torquebox #infinispan on IRC
@torquebox - @infinispan
speakerrate.com/galder
Thursday, November 3, 11

Ruby-on-Infinispan