184
A apresentação comecará em alguns minutos ... Wednesday, January 27, 2010

Campus Party 2010

Embed Size (px)

DESCRIPTION

Palestra sobre assuntos aleatórios de Ruby, otimização de sites com YSlow, EventMachine, Search com acts_as_solr_reloaded

Citation preview

Page 1: Campus Party 2010

A apresentação comecará em alguns minutos ...

Wednesday, January 27, 2010

Page 2: Campus Party 2010

A apresentação comecará em alguns minutos ...

Wednesday, January 27, 2010

Page 3: Campus Party 2010

AkitaOnRails.com

Wednesday, January 27, 2010

Page 4: Campus Party 2010

~ 1 h> 100 slides

Wednesday, January 27, 2010

Page 6: Campus Party 2010

Entendendo a WebLições sobre Desenvolvimento Web com Ruby

Fabio Akita

Wednesday, January 27, 2010

Page 7: Campus Party 2010

Pensamento Tradicional

Wednesday, January 27, 2010

Page 8: Campus Party 2010

Web Server

MySQL

Browser

Wednesday, January 27, 2010

Page 9: Campus Party 2010

Web Server

MySQL

Browser

Wednesday, January 27, 2010

Page 10: Campus Party 2010

Web Server

MySQL

Browser

Wednesday, January 27, 2010

Page 11: Campus Party 2010

/site/default.asp

Wednesday, January 27, 2010

Page 12: Campus Party 2010

include header

/site/default.asp

Wednesday, January 27, 2010

Page 13: Campus Party 2010

include header

while ...

/site/default.asp

Wednesday, January 27, 2010

Page 14: Campus Party 2010

include header

while ...

Response.write

/site/default.asp

Wednesday, January 27, 2010

Page 15: Campus Party 2010

include header

include footer

while ...

Response.write

/site/default.asp

Wednesday, January 27, 2010

Page 16: Campus Party 2010

Ruby?

Wednesday, January 27, 2010

Page 17: Campus Party 2010

Wednesday, January 27, 2010

Page 18: Campus Party 2010

Ruby on Rails 2.3

Ruby 1.8

“Novo” Ruby 1.9Wednesday, January 27, 2010

Page 19: Campus Party 2010

Ruby on Rails 2.3

Ruby 1.8

“Novo” Ruby 1.9Wednesday, January 27, 2010

Page 20: Campus Party 2010

Ruby on Rails 2.3

Ruby 1.8

“Novo” Ruby 1.9Wednesday, January 27, 2010

Page 21: Campus Party 2010

x mais lento que C++

Wednesday, January 27, 2010

Page 22: Campus Party 2010

Python 2

Ruby 1.9

Perl

JRuby

Python 3

PHP

Ruby 1.8.6

0 50 100 150 200

x mais lento que C++

Wednesday, January 27, 2010

Page 23: Campus Party 2010

Wednesday, January 27, 2010

Page 24: Campus Party 2010

Wednesday, January 27, 2010

Page 25: Campus Party 2010

Wednesday, January 27, 2010

Page 26: Campus Party 2010

Wednesday, January 27, 2010

Page 27: Campus Party 2010

Wednesday, January 27, 2010

Page 28: Campus Party 2010

Wednesday, January 27, 2010

Page 29: Campus Party 2010

Wednesday, January 27, 2010

Page 30: Campus Party 2010

Wednesday, January 27, 2010

Page 31: Campus Party 2010

6

Wednesday, January 27, 2010

Page 32: Campus Party 2010

Menos Requisições

Wednesday, January 27, 2010

Page 33: Campus Party 2010

Wednesday, January 27, 2010

Page 34: Campus Party 2010

Wednesday, January 27, 2010

Page 35: Campus Party 2010

DEVELOPMENT

Wednesday, January 27, 2010

Page 36: Campus Party 2010

PRODUCTION

Wednesday, January 27, 2010

Page 37: Campus Party 2010

Mini!que CSS e Javascript

Wednesday, January 27, 2010

Page 38: Campus Party 2010

Juicerhttp://github.com/cjohansen/juicer/

Wednesday, January 27, 2010

Page 39: Campus Party 2010

Wednesday, January 27, 2010

Page 40: Campus Party 2010

• git clone git://github.com/cjohansen/juicer.git

Wednesday, January 27, 2010

Page 41: Campus Party 2010

• git clone git://github.com/cjohansen/juicer.git

• cd juicer ; rake build

Wednesday, January 27, 2010

Page 42: Campus Party 2010

• git clone git://github.com/cjohansen/juicer.git

• cd juicer ; rake build

• gem install pkg/juicer-0.9.9.gem

Wednesday, January 27, 2010

Page 43: Campus Party 2010

• git clone git://github.com/cjohansen/juicer.git

• cd juicer ; rake build

• gem install pkg/juicer-0.9.9.gem

Wednesday, January 27, 2010

Page 44: Campus Party 2010

• git clone git://github.com/cjohansen/juicer.git

• cd juicer ; rake build

• gem install pkg/juicer-0.9.9.gem

• ./script/plugin install git://github.com/ktheory/juicer-rails.git

Wednesday, January 27, 2010

Page 45: Campus Party 2010

• juicer install yuicompressor

• juicer install jslint

Wednesday, January 27, 2010

Page 46: Campus Party 2010

<%= juiced_tag '/stylesheets/application.css' %> <%= yield(:head) %>

</head><body>

... <%= juiced_tag '/javascripts/application.js' %>

</body>

/app/views/layouts/application.html.erb

Wednesday, January 27, 2010

Page 47: Campus Party 2010

<%= juiced_tag '/stylesheets/application.css' %> <%= yield(:head) %>

</head><body>

... <%= juiced_tag '/javascripts/application.js' %>

</body>

/app/views/layouts/application.html.erb

Wednesday, January 27, 2010

Page 48: Campus Party 2010

@import url("reset.css");@import url("base.css");@import url("fonts.css");

...

/* @depends jquery-1.4.min.js @depends jquery.edit_in_place.js @depends jqueryamail.js*/

...

/public/stylesheets/application.css

/public/javascripts/application.js

Wednesday, January 27, 2010

Page 49: Campus Party 2010

@import url("reset.css");@import url("base.css");@import url("fonts.css");

...

/* @depends jquery-1.4.min.js @depends jquery.edit_in_place.js @depends jqueryamail.js*/

...

/public/stylesheets/application.css

/public/javascripts/application.js

Wednesday, January 27, 2010

Page 50: Campus Party 2010

Wednesday, January 27, 2010

Page 51: Campus Party 2010

• juicer merge public/stylesheets/application.css

• public/stylesheets/application.min.css

Wednesday, January 27, 2010

Page 52: Campus Party 2010

• juicer merge public/stylesheets/application.css

• public/stylesheets/application.min.css

• juicer merge -i public/javascripts/application.js

• public/javascripts/application.min.js

Wednesday, January 27, 2010

Page 53: Campus Party 2010

DEVELOPMENT

Wednesday, January 27, 2010

Page 54: Campus Party 2010

PRODUCTION

Wednesday, January 27, 2010

Page 55: Campus Party 2010

Asset HostsNavegadores abrem poucas conexões

simultâneas por domínio

Wednesday, January 27, 2010

Page 56: Campus Party 2010

Wednesday, January 27, 2010

Page 57: Campus Party 2010

def gallery gallery_path = File.join(Rails.root, "public/images/gallery/")

@images = Dir.glob(gallery_path + "*").map{ |f| f.gsub(gallery_path, "") }

end

/app/controllers/hello_controller.rb

Wednesday, January 27, 2010

Page 58: Campus Party 2010

def gallery gallery_path = File.join(Rails.root, "public/images/gallery/")

@images = Dir.glob(gallery_path + "*").map{ |f| f.gsub(gallery_path, "") }

end

/app/controllers/hello_controller.rb

/app/views/hello/gallery.html.erb

<% title "Gallery" %>

<% @images.each do |image| -%> <%= image_tag "gallery/#{image}" %>

<% end -%>

Wednesday, January 27, 2010

Page 59: Campus Party 2010

def gallery gallery_path = File.join(Rails.root, "public/images/gallery/")

@images = Dir.glob(gallery_path + "*").map{ |f| f.gsub(gallery_path, "") }

end

/app/controllers/hello_controller.rb

/app/views/hello/gallery.html.erb

<% title "Gallery" %>

<% @images.each do |image| -%> <%= image_tag "gallery/#{image}" %>

<% end -%>

Wednesday, January 27, 2010

Page 60: Campus Party 2010

DEVELOPMENT

Wednesday, January 27, 2010

Page 61: Campus Party 2010

DEVELOPMENT

Wednesday, January 27, 2010

Page 62: Campus Party 2010

/con!g/environments/production.rb

config.action_controller.asset_host = Proc.new do |source, request| protocol = if request.ssl?

request.headers["USER_AGENT"] =~ /(Safari)/ ? "http" : "https" else

"http" end

"#{protocol}://asset#{rand(6) + 1}.akitaonrails.local:3000"end

Wednesday, January 27, 2010

Page 63: Campus Party 2010

/con!g/environments/production.rb

config.action_controller.asset_host = Proc.new do |source, request| protocol = if request.ssl?

request.headers["USER_AGENT"] =~ /(Safari)/ ? "http" : "https" else

"http" end

"#{protocol}://asset#{rand(6) + 1}.akitaonrails.local:3000"end

Wednesday, January 27, 2010

Page 64: Campus Party 2010

### Host Database## localhost is used to configure the loopback interface# when the system is booting. Do not change this entry.##127.0.0.1 localhost255.255.255.255 broadcasthost::1 localhost fe80::1%lo0 localhost127.0.0.1 asset1.akitaonrails.local asset2.akitaonrails.local asset3.akitaonrails.local asset4.akitaonrails.local asset5.akitaonrails.local asset6.akitaonrails.local www.akitaonrails.local

/etc/hosts

Wednesday, January 27, 2010

Page 65: Campus Party 2010

PRODUCTION

Wednesday, January 27, 2010

Page 66: Campus Party 2010

PRODUCTION

Wednesday, January 27, 2010

Page 67: Campus Party 2010

Javascript embaixo!

Wednesday, January 27, 2010

Page 68: Campus Party 2010

<head> <title><%= h(yield(:title) || "Untitled") %></title> <%= stylesheet_link_tag 'application' %> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.0/jquery.min.js" type="text/javascript"></script> <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/jquery-ui.min.js" type="text/javascript"></script> <script src="http://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js" type="text/javascript"></script> <script src="http://ajax.googleapis.com/ajax/libs/chrome-frame/1.0.2/CFInstall.min.js" type="text/javascript"></script> <%= yield(:head) %></head><body>...

/app/views/layouts/application.html.erb

Wednesday, January 27, 2010

Page 69: Campus Party 2010

<head> <title><%= h(yield(:title) || "Untitled") %></title> <%= stylesheet_link_tag 'application' %> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.0/jquery.min.js" type="text/javascript"></script> <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/jquery-ui.min.js" type="text/javascript"></script> <script src="http://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js" type="text/javascript"></script> <script src="http://ajax.googleapis.com/ajax/libs/chrome-frame/1.0.2/CFInstall.min.js" type="text/javascript"></script> <%= yield(:head) %></head><body>...

/app/views/layouts/application.html.erb

Wednesday, January 27, 2010

Page 70: Campus Party 2010

... <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.0/jquery.min.js" type="text/javascript"></script> <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/jquery-ui.min.js" type="text/javascript"></script> <script src="http://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js" type="text/javascript"></script> <script src="http://ajax.googleapis.com/ajax/libs/chrome-frame/1.0.2/CFInstall.min.js" type="text/javascript"></script> <script type="text/javascript"> // meu javascript customizado ... </script> </body></html>

/app/views/layouts/application.html.erb

Wednesday, January 27, 2010

Page 71: Campus Party 2010

... <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.0/jquery.min.js" type="text/javascript"></script> <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/jquery-ui.min.js" type="text/javascript"></script> <script src="http://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js" type="text/javascript"></script> <script src="http://ajax.googleapis.com/ajax/libs/chrome-frame/1.0.2/CFInstall.min.js" type="text/javascript"></script> <script type="text/javascript"> // meu javascript customizado ... </script> </body></html>

/app/views/layouts/application.html.erb

Wednesday, January 27, 2010

Page 72: Campus Party 2010

Gzip

Wednesday, January 27, 2010

Page 73: Campus Party 2010

• a2enmod de!ate

• editar /etc/apache2/mods-available/de!ate.conf

Wednesday, January 27, 2010

Page 74: Campus Party 2010

<IfModule mod_deflate.c> AddOutputFilterByType DEFLATE text/plain AddOutputFilterByType DEFLATE text/html AddOutputFilterByType DEFLATE text/xml AddOutputFilterByType DEFLATE text/css AddOutputFilterByType DEFLATE image/svg+xml AddOutputFilterByType DEFLATE image/x-icon AddOutputFilterByType DEFLATE application/xml AddOutputFilterByType DEFLATE application/xhtml+xml AddOutputFilterByType DEFLATE application/rss+xml AddOutputFilterByType DEFLATE application/javascript AddOutputFilterByType DEFLATE application/x-javascript

AddOutputFilterByType DEFLATE application/x-httpd-php AddOutputFilterByType DEFLATE application/x-httpd-fastphp AddOutputFilterByType DEFLATE application/x-httpd-eruby

DeflateCompressionLevel 9

# Netscape 4.X has some problems BrowserMatch ^Mozilla/4 gzip-only-text/html

# Netscape 4.06-4.08 have some more problems BrowserMatch ^Mozilla/4\.0[678] no-gzip

# MSIE masquerades as Netscape, but it is fine BrowserMatch \bMSIE !no-gzip !gzip-only-text/html</IfModule>

/etc/apache2/mods-available/de"ate.conf

Wednesday, January 27, 2010

Page 75: Campus Party 2010

Cabeçalhos de Expiração

Wednesday, January 27, 2010

Page 76: Campus Party 2010

• a2enmod expires

• editar /etc/apache2/mods-available/expires.conf

Wednesday, January 27, 2010

Page 77: Campus Party 2010

<IfModule mod_expires.c> ExpiresByType image/x-icon "access plus 1 year" ExpiresByType image/png "access plus 1 year" ExpiresByType image/jpg "access plus 1 year" ExpiresByType image/gif "access plus 1 year" ExpiresByType image/jpeg "access plus 1 year" ExpiresByType application/pdf "access plus 1 year" ExpiresByType audio/x-wav "access plus 1 year" ExpiresByType audio/mpeg "access plus 1 year" ExpiresByType video/mpeg "access plus 1 year" ExpiresByType video/mp4 "access plus 1 year" ExpiresByType video/quicktime "access plus 1 year" ExpiresByType video/x-ms-wmv "access plus 1 year" ExpiresByType application/x-shockwave-flash "access 1 month" ExpiresByType text/css "access plus 1 year" ExpiresByType text/javascript "access plus 1 year"</IfModule>

/etc/apache2/mods-available/expires.conf

Wednesday, January 27, 2010

Page 78: Campus Party 2010

Cache Busters

Wednesday, January 27, 2010

Page 79: Campus Party 2010

<%= stylesheet_link_tag 'application' %>

<%= javascript_include_tag 'application' %>

<%= image_tag "logo.png" %>

/app/views/layouts/application.html.erb

Wednesday, January 27, 2010

Page 80: Campus Party 2010

<link href="/stylesheets/application.css?1264345891" media="screen" rel="stylesheet" type="text/css" />

<script src="/javascripts/application.js?1264345058"

type="text/javascript"></script>

<img alt="Logo" src="/images/logo.png?1268943058" />

/app/views/layouts/application.html.erb

Wednesday, January 27, 2010

Page 81: Campus Party 2010

<link href="/stylesheets/application.css?1264345891" media="screen" rel="stylesheet" type="text/css" />

<script src="/javascripts/application.js?1264345058"

type="text/javascript"></script>

<img alt="Logo" src="/images/logo.png?1268943058" />

/app/views/layouts/application.html.erb

Wednesday, January 27, 2010

Page 82: Campus Party 2010

Use CDNs

Wednesday, January 27, 2010

Page 83: Campus Party 2010

<script src="/javascripts/jquery-1.4.min.js" type="text/javascript"></script><script src="/javascripts/jquery-ui-1.7.2.min.js" type="text/javascript"></script><script src="/javascripts/swfobject-2.2.js" type="text/javascript"></script><script src="/javascripts/CFInstall-1.0.2.min.js" type="text/javascript"></script>

/app/views/layouts/application.html.erb

Wednesday, January 27, 2010

Page 84: Campus Party 2010

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.0/jquery.min.js" type="text/javascript"></script><script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/jquery-ui.min.js" type="text/javascript"></script><script src="http://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js" type="text/javascript"></script><script src="http://ajax.googleapis.com/ajax/libs/chrome-frame/1.0.2/CFInstall.min.js" type="text/javascript"></script>

/app/views/layouts/application.html.erb

Wednesday, January 27, 2010

Page 85: Campus Party 2010

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.0/jquery.min.js" type="text/javascript"></script><script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/jquery-ui.min.js" type="text/javascript"></script><script src="http://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js" type="text/javascript"></script><script src="http://ajax.googleapis.com/ajax/libs/chrome-frame/1.0.2/CFInstall.min.js" type="text/javascript"></script>

/app/views/layouts/application.html.erb

Wednesday, January 27, 2010

Page 86: Campus Party 2010

Search

Wednesday, January 27, 2010

Page 87: Campus Party 2010

select * from ... where ... like “%...%”

Wednesday, January 27, 2010

Page 88: Campus Party 2010

select * from ... where ... like “%...%”

or ... like “%...%”or ... like “%...%”or ... like “%...%”or ... like “%...%”

Wednesday, January 27, 2010

Page 89: Campus Party 2010

select * from ... where ... like “%...%”

or ... like “%...%”or ... like “%...%”or ... like “%...%”or ... like “%...%”

Wednesday, January 27, 2010

Page 90: Campus Party 2010

Wednesday, January 27, 2010

Page 91: Campus Party 2010

• Open Source Enterprise Search Platform

• Baseado no famoso Lucene

• Full Text Search, com relevância

• Indexa documentos (Word, PDF, etc)

• Interface REST

• Roda em containers de Servlet (Tomcat)

Wednesday, January 27, 2010

Page 92: Campus Party 2010

Wednesday, January 27, 2010

Page 93: Campus Party 2010

Wednesday, January 27, 2010

Page 94: Campus Party 2010

select * from ... where ... like “%...%”

or ... like “%...%”or ... like “%...%”or ... like “%...%”or ... like “%...%”

Wednesday, January 27, 2010

Page 95: Campus Party 2010

select * from ... where ... like “%...%”

or ... like “%...%”or ... like “%...%”or ... like “%...%”or ... like “%...%”

Wednesday, January 27, 2010

Page 96: Campus Party 2010

RackA API mais simples possível que

representa uma aplicação web genérica

Wednesday, January 27, 2010

Page 97: Campus Party 2010

ServerHTTP

Wednesday, January 27, 2010

Page 98: Campus Party 2010

ServerHTTPRequest

Wednesday, January 27, 2010

Page 99: Campus Party 2010

ServerHTTPRequest

Wednesday, January 27, 2010

Page 100: Campus Party 2010

ServerHTTPRequest

Wednesday, January 27, 2010

Page 101: Campus Party 2010

ServerHTTPRequest Response

Wednesday, January 27, 2010

Page 102: Campus Party 2010

lambda { |env| [200, {"Content-type" => "text/plain"}, "Hello World"] }

Wednesday, January 27, 2010

Page 103: Campus Party 2010

lambda { |env| [200, {"Content-type" => "text/plain"}, "Hello World"] }

Requisição

Wednesday, January 27, 2010

Page 104: Campus Party 2010

lambda { |env| [200, {"Content-type" => "text/plain"}, "Hello World"] }

Status

Requisição

Wednesday, January 27, 2010

Page 105: Campus Party 2010

lambda { |env| [200, {"Content-type" => "text/plain"}, "Hello World"] }

Status Cabeçalhos

Requisição

Wednesday, January 27, 2010

Page 106: Campus Party 2010

lambda { |env| [200, {"Content-type" => "text/plain"}, "Hello World"] }

Status Cabeçalhos Corpo

Requisição

Wednesday, January 27, 2010

Page 107: Campus Party 2010

RackRequest(env)

Response(Array)

Wednesday, January 27, 2010

Page 108: Campus Party 2010

RackRequest(env)

Response(Array)

.call(env)

Wednesday, January 27, 2010

Page 109: Campus Party 2010

RackRequest

Response

Rack

Rack

Wednesday, January 27, 2010

Page 110: Campus Party 2010

RackRequest

Response

Rack

Rack

Wednesday, January 27, 2010

Page 111: Campus Party 2010

RackRequest

Response

Rack

Rack

Wednesday, January 27, 2010

Page 112: Campus Party 2010

RackRequest

Response

Rack

Rack

Wednesday, January 27, 2010

Page 113: Campus Party 2010

RackRequest

Response

Rack

Rack

Wednesday, January 27, 2010

Page 114: Campus Party 2010

$ rake middleware

use ActionDispatch::Staticuse Rack::Lockuse Rack::Runtimeuse Rails::Rack::Loggeruse ActionDispatch::ShowExceptionsuse ActionDispatch::Callbacksuse ActionDispatch::Cookiesuse ActionDispatch::Session::CookieStoreuse ActionDispatch::Flashuse ActionDispatch::Cascadeuse ActionDispatch::ParamsParseruse Rack::MethodOverrideuse ActionDispatch::Headuse ActiveRecord::ConnectionAdapters::ConnectionManagementuse ActiveRecord::QueryCacherun Class

Wednesday, January 27, 2010

Page 115: Campus Party 2010

gem install rack

Wednesday, January 27, 2010

Page 116: Campus Party 2010

# run with 'rackup -p 9292 config.ru'require 'rubygems'

require 'rack'

app = Proc.new { |env| [200, {"Content-Type" => "text/html"}, "Hello Rack!"] }

run app

con!g.ru

Wednesday, January 27, 2010

Page 117: Campus Party 2010

rackup con!g.ru

Wednesday, January 27, 2010

Page 118: Campus Party 2010

Wednesday, January 27, 2010

Page 119: Campus Party 2010

Sinatrahttp://www.sinatrarb.com/

Wednesday, January 27, 2010

Page 120: Campus Party 2010

Wednesday, January 27, 2010

Page 121: Campus Party 2010

Otimizações Backend

Wednesday, January 27, 2010

Page 122: Campus Party 2010

Wednesday, January 27, 2010

Page 123: Campus Party 2010

Browser pede páginaSe existir no cache, retorna

Procura RotaChama ControllerExecuta AçãoComunica com Banco de Dados

Se existir no cache, pulaSe processar assíncrono, pula

Renderiza ViewRetorna resultado ao Browser

Wednesday, January 27, 2010

Page 124: Campus Party 2010

Browser pede páginaSe existir no cache, retorna

Procura RotaChama ControllerExecuta AçãoComunica com Banco de Dados

Se existir no cache, pulaSe processar assíncrono, pula

Renderiza ViewRetorna resultado ao Browser

Wednesday, January 27, 2010

Page 125: Campus Party 2010

Browser pede páginaSe existir no cache, retorna

Procura RotaChama ControllerExecuta AçãoComunica com Banco de Dados

Se existir no cache, pulaSe processar assíncrono, pula

Renderiza ViewRetorna resultado ao Browser

Wednesday, January 27, 2010

Page 126: Campus Party 2010

Browser pede páginaSe existir no cache, retorna

Procura RotaChama ControllerExecuta AçãoComunica com Banco de Dados

Se existir no cache, pulaSe processar assíncrono, pula

Renderiza ViewRetorna resultado ao Browser

Wednesday, January 27, 2010

Page 127: Campus Party 2010

Browser pede páginaSe existir no cache, retorna

Procura RotaChama ControllerExecuta AçãoComunica com Banco de Dados

Se existir no cache, pulaSe processar assíncrono, pula

Renderiza ViewRetorna resultado ao Browser

Wednesday, January 27, 2010

Page 128: Campus Party 2010

Browser pede páginaSe existir no cache, retorna

Procura RotaChama ControllerExecuta AçãoComunica com Banco de Dados

Se existir no cache, pulaSe processar assíncrono, pula

Renderiza ViewRetorna resultado ao Browser

Wednesday, January 27, 2010

Page 129: Campus Party 2010

Browser pede páginaSe existir no cache, retorna

Procura RotaChama ControllerExecuta AçãoComunica com Banco de Dados

Se existir no cache, pulaSe processar assíncrono, pula

Renderiza ViewRetorna resultado ao Browser

Wednesday, January 27, 2010

Page 130: Campus Party 2010

Browser pede páginaSe existir no cache, retorna

Procura RotaChama ControllerExecuta AçãoComunica com Banco de Dados

Se existir no cache, pulaSe processar assíncrono, pula

Renderiza ViewRetorna resultado ao Browser

Wednesday, January 27, 2010

Page 131: Campus Party 2010

Browser pede páginaSe existir no cache, retorna

Procura RotaChama ControllerExecuta AçãoComunica com Banco de Dados

Se existir no cache, pulaSe processar assíncrono, pula

Renderiza ViewRetorna resultado ao Browser

Wednesday, January 27, 2010

Page 132: Campus Party 2010

Browser pede páginaSe existir no cache, retorna

Procura RotaChama ControllerExecuta AçãoComunica com Banco de Dados

Se existir no cache, pulaSe processar assíncrono, pula

Renderiza ViewRetorna resultado ao Browser

Wednesday, January 27, 2010

Page 133: Campus Party 2010

Apache2+ mod_proxy_balancer

Squid

Varnish

Wednesday, January 27, 2010

Page 134: Campus Party 2010

Memcached

MySQL Proxy

Assíncrono (ex. Resque, RabbitMQ)

Wednesday, January 27, 2010

Page 135: Campus Party 2010

LoadBalancer

Wednesday, January 27, 2010

Page 136: Campus Party 2010

LoadBalancer

App Server

Cache

Wednesday, January 27, 2010

Page 137: Campus Party 2010

LoadBalancer

App Server App Server

CacheCache

Wednesday, January 27, 2010

Page 138: Campus Party 2010

LoadBalancer

App Server App Server

Cache

App Server

CacheCache

Wednesday, January 27, 2010

Page 139: Campus Party 2010

LoadBalancer

App Server App Server

Cache

App Server

CacheCache

Wednesday, January 27, 2010

Page 140: Campus Party 2010

LoadBalancer

App Server App Server

Cache

App Server

Cache

MySQLMaster

Cache

Wednesday, January 27, 2010

Page 141: Campus Party 2010

LoadBalancer

App Server App Server

Cache

App Server

Cache

MySQLMaster

MySQLSlave

MySQLSlave

Cache

Wednesday, January 27, 2010

Page 142: Campus Party 2010

LoadBalancer

App Server App Server

Cache

App Server

Cache

MySQL Proxy

MySQLMaster

MySQLSlave

MySQLSlave

Cache

Wednesday, January 27, 2010

Page 143: Campus Party 2010

LoadBalancer

App Server App Server

Cache

App Server

Cache

MySQL Proxy

MySQLMaster

MySQLSlave

MySQLSlave

Cache

Wednesday, January 27, 2010

Page 144: Campus Party 2010

LoadBalancer

App Server App Server

Cache

App Server

Cache

MySQL Proxy

MySQLMaster

MySQLSlave

MySQLSlave

Cache

Job Server

Wednesday, January 27, 2010

Page 145: Campus Party 2010

Tendências

Wednesday, January 27, 2010

Page 146: Campus Party 2010

C10K Problem

Wednesday, January 27, 2010

Page 147: Campus Party 2010

Wednesday, January 27, 2010

Page 148: Campus Party 2010

HTML 5

Web Sockets

Reactor/Deferrable Pattern

Wednesday, January 27, 2010

Page 149: Campus Party 2010

HTML 5

Web Sockets

Reactor/Deferrable Pattern

Wednesday, January 27, 2010

Page 150: Campus Party 2010

HTML 5

Web Sockets

Reactor/Deferrable Pattern

Wednesday, January 27, 2010

Page 151: Campus Party 2010

Wednesday, January 27, 2010

Page 152: Campus Party 2010

Wednesday, January 27, 2010

Page 153: Campus Party 2010

Browser

App

Banco

Browser

App

Browser

App

Wednesday, January 27, 2010

Page 154: Campus Party 2010

Browser

App

Banco

Browser

App

Browser

App

Wednesday, January 27, 2010

Page 155: Campus Party 2010

Browser

App

Banco

Browser

App

Browser

App

Wednesday, January 27, 2010

Page 156: Campus Party 2010

Browser

App

Banco

Browser

App

Browser

App

Wednesday, January 27, 2010

Page 157: Campus Party 2010

Browser

App

Banco

Browser

App

Browser

App

Browser

Wednesday, January 27, 2010

Page 158: Campus Party 2010

Browser

App

Banco

Browser

App

Browser

App

Browser

?

Wednesday, January 27, 2010

Page 159: Campus Party 2010

Browser

Banco

Browser Browser

Wednesday, January 27, 2010

Page 160: Campus Party 2010

Browser

Banco

Browser

conexões/eventos

Browser

Wednesday, January 27, 2010

Page 161: Campus Party 2010

Browser

Banco

Browser

conexões/eventos

Browser

processamento/eventos

Wednesday, January 27, 2010

Page 162: Campus Party 2010

Browser

Banco

Browser

conexões/eventos

Browser

processamento/eventos

Wednesday, January 27, 2010

Page 163: Campus Party 2010

Browser

Banco

Browser

conexões/eventos

Browser

processamento/eventos

Wednesday, January 27, 2010

Page 164: Campus Party 2010

Browser

Banco

Browser

conexões/eventos

Browser

processamento/eventos

Wednesday, January 27, 2010

Page 165: Campus Party 2010

Browser

Banco

Browser

conexões/eventos

Browser

processamento/eventos

Browser

Wednesday, January 27, 2010

Page 166: Campus Party 2010

Browser

Banco

Browser

conexões/eventos

Browser

processamento/eventos

Browser

Wednesday, January 27, 2010

Page 167: Campus Party 2010

Browser

Banco

Browser

conexões/eventos

Browser

processamento/eventos

BrowserBrowser

Wednesday, January 27, 2010

Page 168: Campus Party 2010

Browser

Banco

Browser

conexões/eventos

Browser

processamento/eventos

BrowserBrowser

Wednesday, January 27, 2010

Page 169: Campus Party 2010

Browser

Banco

Browser

conexões/eventos

Browser

processamento/eventos

BrowserBrowser

Wednesday, January 27, 2010

Page 170: Campus Party 2010

Wednesday, January 27, 2010

Page 171: Campus Party 2010

Wednesday, January 27, 2010

Page 172: Campus Party 2010

Aprendendo Mais

Wednesday, January 27, 2010

Page 173: Campus Party 2010

RAILS LABS

Wednesday, January 27, 2010

Page 174: Campus Party 2010

Wednesday, January 27, 2010

Page 175: Campus Party 2010

RAILSCASTS.com

Wednesday, January 27, 2010

Page 176: Campus Party 2010

Wednesday, January 27, 2010

Page 177: Campus Party 2010

Wednesday, January 27, 2010

Page 178: Campus Party 2010

Entenda os browsers

Entenda HTTP

Arquiteturas

Mundo Assíncrono

Mundo não Relacional

Wednesday, January 27, 2010

Page 179: Campus Party 2010

Entenda os browsers

Entenda HTTP

Arquiteturas

Mundo Assíncrono

Mundo não Relacional

Wednesday, January 27, 2010

Page 180: Campus Party 2010

Entenda os browsers

Entenda HTTP

Arquiteturas

Mundo Assíncrono

Mundo não Relacional

Wednesday, January 27, 2010

Page 181: Campus Party 2010

Entenda os browsers

Entenda HTTP

Arquiteturas

Mundo Assíncrono

Mundo não Relacional

Wednesday, January 27, 2010

Page 182: Campus Party 2010

Entenda os browsers

Entenda HTTP

Arquiteturas

Mundo Assíncrono

Mundo não Relacional

Wednesday, January 27, 2010

Page 183: Campus Party 2010

Wednesday, January 27, 2010