You are on page 1of 64

Distributed Systems with Rack

About Me
About Scribd
Participation!
$ gem install distributed_demo
$ distributed_demo 10.99.255.232:9876
Your role: "something"
I suck at talking.
The Problem
So, what's the problem?
Advantages of Distribution
How do we make it faster?
Advantages of Distribution
Simplify the Code
Separation of Concerns
Advantages of Distribution
Availability
Availability
What is the failure rate?
Harvest vs. Yield
Yield is Overall Availability
Harvest measures the completeness of
Hopefully you're convinced.
Great, but how?
Demo time!
$ gem install distributed_demo
$ distributed_demo 10.99.255.232:9876
Your role: "something"
<html>
<body>
<div id="foo">
<!--# block name="bar" -->
Default content!
<!--# endblock -->
<!--# include virtual="/foo" stub="bar" -->
</div>
</body>
</html>
SSI vs. ESI
<html>
<body>
<div id="foo">
<esi:try>
<esi:attempt>
<esi:include src="mysite.com/foo" />
</esi>
<esi:except>
Default content!
</esi:except>
</esi:try>
</div>
</body>
</html>
<html>
<body>
<div id="foo">
<esi:try>
<esi:attempt>
<esi:include src="mysite.com/foo"
alt="backup.mysite.com/foo" />
</esi>
<esi:except>
Default content!
</esi:except>
</esi:try>
</div>
</body>
</html>
<html>
<body>
<div id="foo">
<!--# block name="default" -->
Default content!
<!--# endblock -->
<!--# block name="backup" -->
<!--# include virtual="/backup/foo" stub="default" -->
<!--# endblock -->
<!--# include virtual="/foo" stub="backup" -->
</div>
</body>
</html>
class App
def initialize
@view = ERB.new(File.read('view.erb'))
end

def call(env)
return [200,
{ 'Content-Type' => 'text/html' },
[@view.result(binding)]]
end
end
<html>
<body>
<div id="foo">
Actual content!
</div>
</body>
</html>
<html>
<body>
<div id="foo">
Default content!
</div>
</body>
</html>
To Summarize
Questions?

You might also like