Fisl 11 - Dicas de Desenvolvimento Web com Ruby

154
Ruby A apresentação já vai começar ...

description

Performance de sites não tem a ver com a linguagem usada por baixo. O impacto maior é a arquitetura. Nesta palestra falo sobre YSlow, Resque e Solr como algumas das coisas que podemos fazer para melhorar a performance/escalabilidade de aplicações web.

Transcript of Fisl 11 - Dicas de Desenvolvimento Web com Ruby

Page 1: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

RubyA apresentação já vai começar ...

Page 2: Fisl 11 - Dicas de Desenvolvimento Web com Ruby
Page 3: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

AkitaOnRails.com

@AkitaOnRails

Page 4: Fisl 11 - Dicas de Desenvolvimento Web com Ruby
Page 6: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

Entendendo a WebDicas sobre Desenvolvimento Web com Ruby

Fabio Akita

Page 7: Fisl 11 - Dicas de Desenvolvimento Web com Ruby
Page 8: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

Recapitulando ...

Page 9: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

Rails não Escala

Page 10: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

Rails não Escala(TM)

Page 11: Fisl 11 - Dicas de Desenvolvimento Web com Ruby
Page 12: Fisl 11 - Dicas de Desenvolvimento Web com Ruby
Page 13: Fisl 11 - Dicas de Desenvolvimento Web com Ruby
Page 14: Fisl 11 - Dicas de Desenvolvimento Web com Ruby
Page 16: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

Para colocar as coisas em perspectiva, o Friendster foi

escrito em Java e eles mudaram para PHP. MySpace foi escrito

em ColdFusion e eles mudaram para ASP.NET.

Blaine Cook

http://www.akitaonrails.com/2008/6/17/chatting-with-blaine-cook-twitter

Page 17: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

Para colocar as coisas em perspectiva, o Friendster foi

escrito em Java e eles mudaram para PHP. MySpace foi escrito

em ColdFusion e eles mudaram para ASP.NET.

Blaine Cook

http://www.akitaonrails.com/2008/6/17/chatting-with-blaine-cook-twitter

Quando as pessoas caem em problemas de escalabilidade, normalmente acham que a

linguagem é o problema, mas eu acho que isso raramente é a

realidade.

Page 18: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

http://www.computerworld.com.au/article/268003/ruby_rails_rolls_into_enterprise?fp=16&fpid=1

“O The New York Times usou Ruby on Rails para agregar, analizar e mostrar os resultados das

eleições em quase tempo real em um de seus sites mais acessados de todos os tempos.”

Page 19: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

http://www.computerworld.com.au/article/268003/ruby_rails_rolls_into_enterprise?fp=16&fpid=1

“O The New York Times usou Ruby on Rails para agregar, analizar e mostrar os resultados das

eleições em quase tempo real em um de seus sites mais acessados de todos os tempos.”

Page 20: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

Web Server

MySQL

Browser

Page 21: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

Web Server

MySQL

Browser

Varnish/HAProxy

Page 22: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

Web Server

MySQL

Browser

Varnish/HAProxy

Memcached

Page 23: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

Web Server

MySQL

Browser

Varnish/HAProxy

Memcached

CouchDB/MongoDB

Page 24: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

Ruby é Lento

Page 25: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

Ruby é Lento(TM)

Page 26: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

Existem mentiras, mentiras malditas e

estatísticas.

Page 27: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

Existem mentiras, mentiras malditas e

estatísticas.

Page 28: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

Existem mentiras, mentiras malditas e

estatísticas.

Page 29: Fisl 11 - Dicas de Desenvolvimento Web com Ruby
Page 30: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

x mais lento que C++

Page 31: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

0 32.5 65 97.5 130

Python 2

Ruby 1.9

JRuby

Perl

Python 3

PHP

Ruby 1.8

x mais lento que C++

Page 32: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

Homepage: 331 ms

Page 33: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

Homepage: 331 ms

Total: 5.45 s

Page 34: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

Performance!=

Escalabilidade

Page 35: Fisl 11 - Dicas de Desenvolvimento Web com Ruby
Page 36: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

Sempre se Lembre

Poderíamos contratar um Macaco Treinadopara fazer seu Trabalho!

Page 37: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

Exemplo

Page 38: Fisl 11 - Dicas de Desenvolvimento Web com Ruby
Page 39: Fisl 11 - Dicas de Desenvolvimento Web com Ruby
Page 40: Fisl 11 - Dicas de Desenvolvimento Web com Ruby
Page 41: Fisl 11 - Dicas de Desenvolvimento Web com Ruby
Page 42: Fisl 11 - Dicas de Desenvolvimento Web com Ruby
Page 43: Fisl 11 - Dicas de Desenvolvimento Web com Ruby
Page 44: Fisl 11 - Dicas de Desenvolvimento Web com Ruby
Page 45: Fisl 11 - Dicas de Desenvolvimento Web com Ruby
Page 46: Fisl 11 - Dicas de Desenvolvimento Web com Ruby
Page 47: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

6Técnicas

Page 48: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

Menos Requisições

Page 49: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

Mini!que CSS e Javascript

Page 50: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

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

Page 51: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

gem install juicer

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

Page 52: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

gem install juicer

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

Page 53: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

juicer install yuicompressor

juicer install jslint

juicer install closure_compiler

Page 54: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

juicer install yuicompressor

juicer install jslint

juicer install closure_compiler

Page 55: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

juicer install yuicompressor

juicer install jslint

juicer install closure_compiler

Page 56: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

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

</head><body>

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

</body>

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

Page 57: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

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

</head><body>

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

</body>

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

Page 58: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

@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

Page 59: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

@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

Page 60: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

juicer merge public/stylesheets/application.css

public/stylesheets/application.min.css

juicer merge -i public/javascripts/application.js

public/javascripts/application.min.js

Page 61: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

juicer merge public/stylesheets/application.css

public/stylesheets/application.min.css

juicer merge -i public/javascripts/application.js

public/javascripts/application.min.js

Page 62: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

juicer merge public/stylesheets/application.css

public/stylesheets/application.min.css

juicer merge -i public/javascripts/application.js

public/javascripts/application.min.js

Page 63: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

juicer merge public/stylesheets/application.css

public/stylesheets/application.min.css

juicer merge -i public/javascripts/application.js

public/javascripts/application.min.js

Page 64: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

DEVELOPMENT

Page 65: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

PRODUCTION

Page 66: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

Asset HostsNavegadores abrem poucas conexões

simultâneas por domínio

Page 67: Fisl 11 - Dicas de Desenvolvimento Web com Ruby
Page 68: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

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

Page 69: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

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 -%>

Page 70: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

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 -%>

Page 71: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

DEVELOPMENT

Page 72: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

DEVELOPMENT

Page 73: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

/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

Page 74: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

/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

Page 75: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

### 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

Page 76: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

PRODUCTION

Page 77: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

PRODUCTION

Page 78: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

Javascript embaixo!

Page 79: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

<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

Page 80: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

<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

Page 81: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

... <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

Page 82: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

... <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

Page 83: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

Gzip

Page 84: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

a2enmod de"ate

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

Page 85: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

a2enmod de"ate

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

Page 86: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

<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

Page 87: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

Cabeçalhos de Expiração

Page 88: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

a2enmod expires

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

Page 89: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

a2enmod expires

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

Page 90: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

<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

Page 91: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

Cache Busters

Page 92: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

<%= stylesheet_link_tag 'application' %>

<%= javascript_include_tag 'application' %>

<%= image_tag "logo.png" %>

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

Page 93: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

<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

Page 94: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

<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

Page 95: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

Use CDNs

Page 96: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

<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

Page 97: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

<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

Page 98: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

<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

Page 99: Fisl 11 - Dicas de Desenvolvimento Web com Ruby
Page 100: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

Search

Page 101: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

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

Page 102: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

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

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

Page 103: Fisl 11 - Dicas de Desenvolvimento Web com Ruby
Page 104: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

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)

Page 105: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

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)

Page 106: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

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)

Page 107: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

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)

Page 108: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

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)

Page 109: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

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)

Page 110: Fisl 11 - Dicas de Desenvolvimento Web com Ruby
Page 111: Fisl 11 - Dicas de Desenvolvimento Web com Ruby
Page 112: Fisl 11 - Dicas de Desenvolvimento Web com Ruby
Page 113: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

SOLR

Sphinx

Xapian

Page 114: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

SOLR

Sphinx

Xapian

Page 115: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

SOLR

Sphinx

Xapian

Page 116: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

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

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

Page 117: Fisl 11 - Dicas de Desenvolvimento Web com Ruby
Page 118: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

Tarefas Assíncronas

Page 119: Fisl 11 - Dicas de Desenvolvimento Web com Ruby
Page 120: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

Requisição

Page 121: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

ProcessamentoRequisição

Page 122: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

Resposta

ProcessamentoRequisição

Page 123: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

Crontab

Page 124: Fisl 11 - Dicas de Desenvolvimento Web com Ruby
Page 125: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

RMagick

Page 126: Fisl 11 - Dicas de Desenvolvimento Web com Ruby
Page 127: Fisl 11 - Dicas de Desenvolvimento Web com Ruby
Page 128: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

RedisWorkers

Resque-Web

Page 129: Fisl 11 - Dicas de Desenvolvimento Web com Ruby
Page 130: Fisl 11 - Dicas de Desenvolvimento Web com Ruby
Page 131: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

ProcessamentoRequisição

291 ms

Page 132: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

Resposta

Processamento

Requisição

32 ms

Worker

Page 133: Fisl 11 - Dicas de Desenvolvimento Web com Ruby
Page 134: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

Resque Redis

Delayed Job SQL

Warren RabbitMQ

Whenever Cron Jobs

Page 135: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

Resque Redis

Delayed Job SQL

Warren RabbitMQ

Whenever Cron Jobs

Page 136: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

Resque Redis

Delayed Job SQL

Warren RabbitMQ

Whenever Cron Jobs

Page 137: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

Resque Redis

Delayed Job SQL

Warren RabbitMQ

Whenever Cron Jobs

Page 138: Fisl 11 - Dicas de Desenvolvimento Web com Ruby
Page 139: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

Imagens

Relatórios

Web Services

Transações

Page 140: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

Imagens

Relatórios

Web Services

Transações

Page 141: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

Imagens

Relatórios

Web Services

Transações

Page 142: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

Imagens

Relatórios

Web Services

Transações

Page 143: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

Aprendendo Mais

Page 144: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

RAILS LABS

Page 145: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

RAILSCASTS.com

Page 146: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

caelum.com.br

Page 147: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

egenial.com.br

Page 148: Fisl 11 - Dicas de Desenvolvimento Web com Ruby
Page 149: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

Entenda os browsers

Entenda HTTP

Arquiteturas

Mundo Assíncrono

Mundo não Relacional

Page 150: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

Entenda os browsers

Entenda HTTP

Arquiteturas

Mundo Assíncrono

Mundo não Relacional

Page 151: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

Entenda os browsers

Entenda HTTP

Arquiteturas

Mundo Assíncrono

Mundo não Relacional

Page 152: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

Entenda os browsers

Entenda HTTP

Arquiteturas

Mundo Assíncrono

Mundo não Relacional

Page 153: Fisl 11 - Dicas de Desenvolvimento Web com Ruby

Entenda os browsers

Entenda HTTP

Arquiteturas

Mundo Assíncrono

Mundo não Relacional