51
Thursday, November 3, 11

Ruby-on-Infinispan

Embed Size (px)

DESCRIPTION

Over the past year, more and more Java applications have benefited from gaining access to elastic, cloud-ready, data grids thanks to Infinispan, and from now on, Ruby apps running within TorqueBox get the same benefit as well thanks to the ability of TorqueBox to talk to Infinispan Hot Rod servers. In this talk, Galder will demo the integrations between TorqueBox, which is a Ruby application plattform, and Infinispan, which is a Java based data grid plattform, highlighting the benefits for TorqueBox administrators and Ruby developers, which include, amongst others, access to highly-scalable, low-latency data store that avoids single point of failure.

Citation preview

Page 1: Ruby-on-Infinispan

Thursday, November 3, 11

Page 2: Ruby-on-Infinispan

Ruby-on-Infinispan Cloud-tastic Data Grids for Ruby apps

Galder ZamarreñoSenior Software Engineer

Red Hat, Inc

Thursday, November 3, 11

Page 3: Ruby-on-Infinispan

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

Page 4: Ruby-on-Infinispan

Agenda

• What is TorqueBox?• Rails caching limitations• What is Infinispan?• TorqueBoxStore• Cloud storage with Infinispan

Thursday, November 3, 11

Page 5: Ruby-on-Infinispan

What is TorqueBox?

The mating of JRuby to JBoss Application Server

Thursday, November 3, 11

Page 6: Ruby-on-Infinispan

What is TorqueBox?

Thursday, November 3, 11

Page 7: Ruby-on-Infinispan

Goals of TorqueBox

• Support Ruby web frameworks• Rails, Sinatra, Rack

• Go beyond web• Messaging• Enterprise-Grade Caching• Data Grid Storage

Thursday, November 3, 11

Page 8: Ruby-on-Infinispan

Hmmm, but...

... Rails already supports caching... and why would I want to store data in a data grid?

Thursday, November 3, 11

Page 9: Ruby-on-Infinispan

What’s wrong with Rails caching?

Thursday, November 3, 11

Page 10: Ruby-on-Infinispan

Caches are OK

Actually, action and fragment caches are useful in production but they don’t cover all needs

Thursday, November 3, 11

Page 11: Ruby-on-Infinispan

Cache Stores

Choice provided by Rails is a bit limited...

Thursday, November 3, 11

Page 12: Ruby-on-Infinispan

MemoryStore

Does not share cache contents and is not concurrent-safe

Thursday, November 3, 11

Page 13: Ruby-on-Infinispan

MemCacheStore

Caches in Danga’s Memcached servers

Probably the most popular option in production

Thursday, November 3, 11

Page 14: Ruby-on-Infinispan

MemCacheStore

Do you really need a separate process for a cache?

Cache operations not local...

Thursday, November 3, 11

Page 15: Ruby-on-Infinispan

TorqueBoxStore

Brand new store!

Integrates with Infinispan, a data grid platform from JBoss

Thursday, November 3, 11

Page 16: Ruby-on-Infinispan

Introducing

Thursday, November 3, 11

Page 17: Ruby-on-Infinispan

What is Infinispan?

An in-memory, highly available, elastic, and open source (LGPL) data grid platform

Thursday, November 3, 11

Page 18: Ruby-on-Infinispan

Clustered

Consistency achieved via invalidation, replication and distribution modes

Thursday, November 3, 11

Page 19: Ruby-on-Infinispan

API

Map-like key/value store and JPA layer via Hibernate OGM

Thursday, November 3, 11

Page 20: Ruby-on-Infinispan

Embedded Access

Thursday, November 3, 11

Page 21: Ruby-on-Infinispan

Remote Access

• Via protocols :

• REST

• Hot Rod

Thursday, November 3, 11

Page 22: Ruby-on-Infinispan

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

Page 23: Ruby-on-Infinispan

Why should I use TorqueBoxStore?

Thursday, November 3, 11

Page 24: Ruby-on-Infinispan

TorqueBoxStore

Provides a local, in-memory, highly-concurrent, clustered cache

Thursday, November 3, 11

Page 25: Ruby-on-Infinispan

config/application.rb

Thursday, November 3, 11

Page 26: Ruby-on-Infinispan

Default Cache Mode

When TorqueBox clustered, it uses Invalidation, otherwise it’s just Local

Thursday, November 3, 11

Page 27: Ruby-on-Infinispan

Beyond Rails Caching...

Thursday, November 3, 11

Page 28: Ruby-on-Infinispan

Durable Counters

Thursday, November 3, 11

Page 29: Ruby-on-Infinispan

Enough of caching...

Thursday, November 3, 11

Page 30: Ruby-on-Infinispan

What’s all about data grid storage?

Thursday, November 3, 11

Page 31: Ruby-on-Infinispan

Traditional 3-tier App

Thursday, November 3, 11

Page 32: Ruby-on-Infinispan

Typical IaaS App

Thursday, November 3, 11

Page 33: Ruby-on-Infinispan

Traditional PaaS App

Thursday, November 3, 11

Page 34: Ruby-on-Infinispan

Where’s your data stored??

Thursday, November 3, 11

Page 35: Ruby-on-Infinispan

Clouds are ephemeral!!

Thursday, November 3, 11

Page 36: Ruby-on-Infinispan

State

Thursday, November 3, 11

Page 37: Ruby-on-Infinispan

Virtualizing Data

Some public services exist (i.e. Amazon RDS), but not all cloud deployments are public!

Thursday, November 3, 11

Page 38: Ruby-on-Infinispan

Characteristics of DaaS

Elastic, scalable and highly available!

Thursday, November 3, 11

Page 39: Ruby-on-Infinispan

DaaS with Infinispan

Thursday, November 3, 11

Page 40: Ruby-on-Infinispan

ArchitectureM

anage and Monitor

Thursday, November 3, 11

Page 41: Ruby-on-Infinispan

What are those Infinispan nodes??

Thursday, November 3, 11

Page 42: Ruby-on-Infinispan

Either

• Infinispan Hot Rod servers started via:

• or servlet container w/ Infinispan REST war• or JBoss Enterprise Data Grid nodes

Thursday, November 3, 11

Page 43: Ruby-on-Infinispan

How do Ruby apps talk to them?

Thursday, November 3, 11

Page 44: Ruby-on-Infinispan

Talk to Infinispan REST

Thursday, November 3, 11

Page 45: Ruby-on-Infinispan

Hmm, Hot Rod is a custom protocol...

Thursday, November 3, 11

Page 46: Ruby-on-Infinispan

JRuby Hot Rod clientgithub.com/noelo/hotrod-jruby.git

Thursday, November 3, 11

Page 47: Ruby-on-Infinispan

What’s next?

Thursday, November 3, 11

Page 48: Ruby-on-Infinispan

Roadmap

ActiveModel backend that stores stuff in Infinispan data grid nodes

Thursday, November 3, 11

Page 49: Ruby-on-Infinispan

Summary

TorqueBoxStore: in-memory, clustered & highly concurrent

Rails and low level caching!

Thursday, November 3, 11

Page 50: Ruby-on-Infinispan

Summary

Infinispan servers: distributed, elastic and highly available cloud-ready store

Thursday, November 3, 11

Page 51: Ruby-on-Infinispan

Questions?

torquebox.org - infinispan.org#torquebox #infinispan on IRC@torquebox - @infinispan

speakerrate.com/galder

Thursday, November 3, 11