SlideShare a Scribd company logo
1 of 25
Escalabilidade em aplicações
           DevOps
               Flavio Torres, @flavio_torres
               Espec. em infra e sistemas
               iG, e agora Oi Internet
Agenda

●Arquiteturas
●WebServers: apache, nginx

●Aplicações: PHP, Java, Rails, Python, Nodejs

●SQL

●NoSQL

●Headers HTTP

●Cache Varnish ou Nginx

●Monitoramento
Arquitetura desejada!
Arquitetura entregue
Tempo é investimento!
●   Faça “em casa”

●   OU, participe de todo o processo, avalie
    propostas

●   Bom entendimento, boa arquitetura ... veja!
Arquitetura do Ger. Projeto #1
Arquitetura do Ger. Projeto #2
Fatos
Ok, minha vez...
O que temos:
●   Crawler – Python
●   Queue – 0MQ (zero mq)
●   NoSQL – Cassandra
●   SQL – MySQL
●   Map/Reduce – Hadoop
●   Indices – ElasticSearch
●   Web – NodeJS
    ●   REST: Java, PHP. CACHE: memcache, membase, redis
●   WebServer – Nginx
    ●   Jetty
●   Cache – Varnish
Backend



[root@localhost ~]#
SQL

●   Dados Transacionais; ex: dinheiro das vendas
    da filial 1 + update do financeiro da filial 2.

●   E a busca ?

●   Podemos fazer um misto ?
SQL: where data like "%performance%"
                      or "%fisl13%"'

Motorzinho SQL: full table scan.

DICA: ^expr$
Buscas
FrontEnd
Tenha em mente que
     Cache
          É VITAL!
Cache HTTP
Header unset ETag
ExpiresActive On

ExpiresByType text/css "now plus 10 years"
ExpiresByType text/html "now plus 60 seconds"
ExpiresByType image/gif "now plus 10 years"
ExpiresByType image/png "now plus 10 years"
ExpiresByType image/jpeg "now plus 10 years"
ExpiresByType application/javascript "now plus 10 minutes"
ExpiresByType application/x-shockwave-flash "now plus 10 years"
Header append Cache-Control public env=static-content


location ~* .(?:ico|css|js|gif|jpe?g|png)$ {
   expires 30d;
   add_header Pragma public;
   add_header Cache-Control "public";
}
Cache HTTP

$ curl -I www.ig.com.br
HTTP/1.1 200 OK
Last-Modified: Wed, 25 Jul 2012 21:12:46 GMT
Cache-Control: max-age=60
Expires: Wed, 25 Jul 2012 21:17:48 GMT
Vary: Accept-Encoding
Content-Type: text/html
Content-Length: 198883
Date: Wed, 25 Jul 2012 21:17:17 GMT
Connection: keep-alive
X-Cache: HIT
X-Age: 29
                 X-Varnish :)
Mas...minha aplicação não pode
                 fazer cache!
    ●   E separar conteúdo estático de dinâmico ?
    ●   Utilizar cache em busca ao banco com:




AH, e o cache (HTTP) do framework ?
memcached
MONITORAMENTO !?



 ●   Zabbix, Cacti
     ●   JMX, Perf4J
         –   zabbix_get -s server -p 10050 -k
             "check.jmx[server:16101,'br.com.corp:type=Perf4J,name=A
             pplicationPerf',getOfferMax]"
         –   GrayLog2
 ●   nagios, zenoss
     ●   HealthChecks
         –   (/healthcheck?monitors=db,memcached)
         –   Xml output + scripts
         –   Balanceador + Healthcheck
DÚVIDAS ?
Flavio Torres, @flavio_torres
Espec. Infra e sistemas
iG, e agora Oi Internet

torresflavio@gmail.com

slideshare/flatorres

More Related Content

What's hot

Cartola Fc 2010 - Uma Arquitetura escalável e performática
Cartola Fc 2010 - Uma Arquitetura escalável e performáticaCartola Fc 2010 - Uma Arquitetura escalável e performática
Cartola Fc 2010 - Uma Arquitetura escalável e performáticaMarcel Nicolay
 
Nodejs - A performance que eu sempre quis ter
Nodejs - A performance que eu sempre quis terNodejs - A performance que eu sempre quis ter
Nodejs - A performance que eu sempre quis terEmerson Macedo
 
Node.js: 5 razões para começar a utilizar
Node.js: 5 razões para começar a utilizarNode.js: 5 razões para começar a utilizar
Node.js: 5 razões para começar a utilizarFilipe Falcão
 
Node.JS - Workshop do básico ao avançado
Node.JS - Workshop do básico ao avançadoNode.JS - Workshop do básico ao avançado
Node.JS - Workshop do básico ao avançadoEduardo Bohrer
 
Introdução à Node.js + MongoDB
Introdução à Node.js + MongoDBIntrodução à Node.js + MongoDB
Introdução à Node.js + MongoDBLuiz Duarte
 
O CartolaFC e o processo de desenvolvimento na globo.com
O CartolaFC e o processo de desenvolvimento na globo.comO CartolaFC e o processo de desenvolvimento na globo.com
O CartolaFC e o processo de desenvolvimento na globo.comAlexandre Saboia Fuziyama
 
Introdução ao Node.js - FATEC SP
Introdução ao Node.js - FATEC SPIntrodução ao Node.js - FATEC SP
Introdução ao Node.js - FATEC SPArthur Fücher
 
Apresentação MongoDB
Apresentação MongoDBApresentação MongoDB
Apresentação MongoDBDavid de Lucca
 
Curso de Node.js e MongoDB - 13
Curso de Node.js e MongoDB - 13Curso de Node.js e MongoDB - 13
Curso de Node.js e MongoDB - 13Luiz Duarte
 
MongoDB: Prós, Contras e Showcases.
MongoDB: Prós, Contras e Showcases.MongoDB: Prós, Contras e Showcases.
MongoDB: Prós, Contras e Showcases.Leonardo Quevedo
 
Node.js - Programação assíncrona e de tempo real
Node.js - Programação assíncrona e de tempo realNode.js - Programação assíncrona e de tempo real
Node.js - Programação assíncrona e de tempo realDiogo Cabral da Silva
 
Light Talk: Introdução sobre Node.js
Light Talk: Introdução sobre Node.jsLight Talk: Introdução sobre Node.js
Light Talk: Introdução sobre Node.jsCaio Ribeiro Pereira
 
Melhorando o desempenho do seu WordPress [WordCamp Porto Alegre 2015]
Melhorando o desempenho do seu WordPress [WordCamp Porto Alegre 2015]Melhorando o desempenho do seu WordPress [WordCamp Porto Alegre 2015]
Melhorando o desempenho do seu WordPress [WordCamp Porto Alegre 2015]Tiago Hillebrandt
 
Apis palestra 7º JUG Vale
Apis palestra 7º JUG Vale Apis palestra 7º JUG Vale
Apis palestra 7º JUG Vale Pedro Hos
 

What's hot (20)

Cartola Fc 2010 - Uma Arquitetura escalável e performática
Cartola Fc 2010 - Uma Arquitetura escalável e performáticaCartola Fc 2010 - Uma Arquitetura escalável e performática
Cartola Fc 2010 - Uma Arquitetura escalável e performática
 
Nodejs - A performance que eu sempre quis ter
Nodejs - A performance que eu sempre quis terNodejs - A performance que eu sempre quis ter
Nodejs - A performance que eu sempre quis ter
 
Node.js: 5 razões para começar a utilizar
Node.js: 5 razões para começar a utilizarNode.js: 5 razões para começar a utilizar
Node.js: 5 razões para começar a utilizar
 
Node.JS - Workshop do básico ao avançado
Node.JS - Workshop do básico ao avançadoNode.JS - Workshop do básico ao avançado
Node.JS - Workshop do básico ao avançado
 
Introdução à Node.js + MongoDB
Introdução à Node.js + MongoDBIntrodução à Node.js + MongoDB
Introdução à Node.js + MongoDB
 
O CartolaFC e o processo de desenvolvimento na globo.com
O CartolaFC e o processo de desenvolvimento na globo.comO CartolaFC e o processo de desenvolvimento na globo.com
O CartolaFC e o processo de desenvolvimento na globo.com
 
Introdução ao Node.js - FATEC SP
Introdução ao Node.js - FATEC SPIntrodução ao Node.js - FATEC SP
Introdução ao Node.js - FATEC SP
 
Conhecendo mundo Node.js
Conhecendo mundo Node.jsConhecendo mundo Node.js
Conhecendo mundo Node.js
 
Apresentação MongoDB
Apresentação MongoDBApresentação MongoDB
Apresentação MongoDB
 
Curso de Node.js e MongoDB - 13
Curso de Node.js e MongoDB - 13Curso de Node.js e MongoDB - 13
Curso de Node.js e MongoDB - 13
 
Grunt
GruntGrunt
Grunt
 
MongoDB: Prós, Contras e Showcases.
MongoDB: Prós, Contras e Showcases.MongoDB: Prós, Contras e Showcases.
MongoDB: Prós, Contras e Showcases.
 
Node.js - Programação assíncrona e de tempo real
Node.js - Programação assíncrona e de tempo realNode.js - Programação assíncrona e de tempo real
Node.js - Programação assíncrona e de tempo real
 
Performance Web com ASP.NET MVC
Performance Web com ASP.NET MVCPerformance Web com ASP.NET MVC
Performance Web com ASP.NET MVC
 
Mongo db slides
Mongo db slidesMongo db slides
Mongo db slides
 
Light Talk: Introdução sobre Node.js
Light Talk: Introdução sobre Node.jsLight Talk: Introdução sobre Node.js
Light Talk: Introdução sobre Node.js
 
Talk at QConSP
Talk at QConSPTalk at QConSP
Talk at QConSP
 
Melhorando o desempenho do seu WordPress [WordCamp Porto Alegre 2015]
Melhorando o desempenho do seu WordPress [WordCamp Porto Alegre 2015]Melhorando o desempenho do seu WordPress [WordCamp Porto Alegre 2015]
Melhorando o desempenho do seu WordPress [WordCamp Porto Alegre 2015]
 
Apis palestra 7º JUG Vale
Apis palestra 7º JUG Vale Apis palestra 7º JUG Vale
Apis palestra 7º JUG Vale
 
Node js - Javascript Server Side
Node js - Javascript Server SideNode js - Javascript Server Side
Node js - Javascript Server Side
 

Viewers also liked

Caso del docente javier
Caso del docente javierCaso del docente javier
Caso del docente javierEdinson358
 
Construindo Poliedros Com O RéGua E Compasso
Construindo Poliedros Com O RéGua E CompassoConstruindo Poliedros Com O RéGua E Compasso
Construindo Poliedros Com O RéGua E Compassopolianalante
 
Trabalho Da 4ª SessãO 1ª Parte Nuno Tavares
Trabalho Da 4ª SessãO   1ª Parte   Nuno TavaresTrabalho Da 4ª SessãO   1ª Parte   Nuno Tavares
Trabalho Da 4ª SessãO 1ª Parte Nuno Tavaresgueste04715
 
EleiçõEs2008 Prefeito Ba Livramento
EleiçõEs2008 Prefeito Ba LivramentoEleiçõEs2008 Prefeito Ba Livramento
EleiçõEs2008 Prefeito Ba LivramentoCompet
 
Dia Da Mulher 00
Dia Da Mulher 00Dia Da Mulher 00
Dia Da Mulher 00guest81d89b
 

Viewers also liked (7)

Caso del docente javier
Caso del docente javierCaso del docente javier
Caso del docente javier
 
Construindo Poliedros Com O RéGua E Compasso
Construindo Poliedros Com O RéGua E CompassoConstruindo Poliedros Com O RéGua E Compasso
Construindo Poliedros Com O RéGua E Compasso
 
Trabalho Da 4ª SessãO 1ª Parte Nuno Tavares
Trabalho Da 4ª SessãO   1ª Parte   Nuno TavaresTrabalho Da 4ª SessãO   1ª Parte   Nuno Tavares
Trabalho Da 4ª SessãO 1ª Parte Nuno Tavares
 
EleiçõEs2008 Prefeito Ba Livramento
EleiçõEs2008 Prefeito Ba LivramentoEleiçõEs2008 Prefeito Ba Livramento
EleiçõEs2008 Prefeito Ba Livramento
 
SEMINÁRIO COPA DA EXCEÇÃO
SEMINÁRIO COPA DA EXCEÇÃOSEMINÁRIO COPA DA EXCEÇÃO
SEMINÁRIO COPA DA EXCEÇÃO
 
Trabalho - Apresentações
Trabalho -   ApresentaçõesTrabalho -   Apresentações
Trabalho - Apresentações
 
Dia Da Mulher 00
Dia Da Mulher 00Dia Da Mulher 00
Dia Da Mulher 00
 

Similar to Escalabilidade em Aplicações - Fisl13

T03_LM3: Javascript (2013-2014)
T03_LM3: Javascript (2013-2014)T03_LM3: Javascript (2013-2014)
T03_LM3: Javascript (2013-2014)Carlos Santos
 
Xen e CoreOS: solução para data mining com NodeJS e ElasticSearch
Xen e CoreOS: solução para data mining com NodeJS e ElasticSearchXen e CoreOS: solução para data mining com NodeJS e ElasticSearch
Xen e CoreOS: solução para data mining com NodeJS e ElasticSearchBernardo Donadio
 
Python mudando o modo de desenvolver para a internet
Python mudando o modo de desenvolver para a internetPython mudando o modo de desenvolver para a internet
Python mudando o modo de desenvolver para a internetMarcos Petry
 
Python mudando o modo de desenvolver para a web - Marcos Daniel Petry
Python mudando o modo de desenvolver para a web  - Marcos Daniel PetryPython mudando o modo de desenvolver para a web  - Marcos Daniel Petry
Python mudando o modo de desenvolver para a web - Marcos Daniel PetryTchelinux
 
Kubernetes no Governo Federal - Kubernetes Meetup #3
Kubernetes no Governo Federal - Kubernetes Meetup #3Kubernetes no Governo Federal - Kubernetes Meetup #3
Kubernetes no Governo Federal - Kubernetes Meetup #3Ricardo Katz
 
Adeus Wordpress. Ola Pelican!
Adeus Wordpress. Ola Pelican!Adeus Wordpress. Ola Pelican!
Adeus Wordpress. Ola Pelican!magnunleno
 
Como criar infraestrutura de sites para receber milhões de usuários?
Como criar infraestrutura de sites para receber milhões de usuários?Como criar infraestrutura de sites para receber milhões de usuários?
Como criar infraestrutura de sites para receber milhões de usuários?Marcelo Dieder
 
Escalando aplicação Python usando Getup OpenShift
Escalando aplicação Python usando Getup OpenShiftEscalando aplicação Python usando Getup OpenShift
Escalando aplicação Python usando Getup OpenShiftGetup Cloud
 
Dividindo responsabilidades com VRaptor, Rest, HTML5 e CSS3
Dividindo responsabilidades com VRaptor, Rest, HTML5 e CSS3Dividindo responsabilidades com VRaptor, Rest, HTML5 e CSS3
Dividindo responsabilidades com VRaptor, Rest, HTML5 e CSS3André Luiz Forchesatto
 
IoTizando com JavaScript
IoTizando com JavaScriptIoTizando com JavaScript
IoTizando com JavaScriptHeider Lopes
 
(A04 e A05) LabMM3 - JavaScript
(A04 e A05) LabMM3 - JavaScript(A04 e A05) LabMM3 - JavaScript
(A04 e A05) LabMM3 - JavaScriptCarlos Santos
 
Um milhao de usuários simultâneos
Um milhao de usuários simultâneosUm milhao de usuários simultâneos
Um milhao de usuários simultâneosFernando Ike
 
Apresentação CEJS - Do nada para a nuvem
Apresentação CEJS - Do nada para a nuvemApresentação CEJS - Do nada para a nuvem
Apresentação CEJS - Do nada para a nuvemRodrigo Valerio
 
ASP.Net Performance – A pragmatic approach - Luis Paulino
ASP.Net Performance – A pragmatic approach - Luis PaulinoASP.Net Performance – A pragmatic approach - Luis Paulino
ASP.Net Performance – A pragmatic approach - Luis PaulinoComunidade NetPonto
 
Otimizacao de websites em PHP
Otimizacao de websites em PHPOtimizacao de websites em PHP
Otimizacao de websites em PHPFelipe Ribeiro
 
Apresentação na PHP Conference Brasil 2012
Apresentação na PHP Conference Brasil 2012Apresentação na PHP Conference Brasil 2012
Apresentação na PHP Conference Brasil 2012Ariovaldo Carmona
 
Stream Processing - ThoughtWorks Architecture Group - 2017
Stream Processing - ThoughtWorks Architecture Group - 2017Stream Processing - ThoughtWorks Architecture Group - 2017
Stream Processing - ThoughtWorks Architecture Group - 2017Otávio Carvalho
 
Carrefour E-commerce - Multicloud Brasil Day 2017
Carrefour E-commerce - Multicloud Brasil Day 2017Carrefour E-commerce - Multicloud Brasil Day 2017
Carrefour E-commerce - Multicloud Brasil Day 2017Denis Santos
 

Similar to Escalabilidade em Aplicações - Fisl13 (20)

T03_LM3: Javascript (2013-2014)
T03_LM3: Javascript (2013-2014)T03_LM3: Javascript (2013-2014)
T03_LM3: Javascript (2013-2014)
 
Xen e CoreOS: solução para data mining com NodeJS e ElasticSearch
Xen e CoreOS: solução para data mining com NodeJS e ElasticSearchXen e CoreOS: solução para data mining com NodeJS e ElasticSearch
Xen e CoreOS: solução para data mining com NodeJS e ElasticSearch
 
Python mudando o modo de desenvolver para a internet
Python mudando o modo de desenvolver para a internetPython mudando o modo de desenvolver para a internet
Python mudando o modo de desenvolver para a internet
 
Python mudando o modo de desenvolver para a web - Marcos Daniel Petry
Python mudando o modo de desenvolver para a web  - Marcos Daniel PetryPython mudando o modo de desenvolver para a web  - Marcos Daniel Petry
Python mudando o modo de desenvolver para a web - Marcos Daniel Petry
 
Kubernetes no Governo Federal - Kubernetes Meetup #3
Kubernetes no Governo Federal - Kubernetes Meetup #3Kubernetes no Governo Federal - Kubernetes Meetup #3
Kubernetes no Governo Federal - Kubernetes Meetup #3
 
Adeus Wordpress. Ola Pelican!
Adeus Wordpress. Ola Pelican!Adeus Wordpress. Ola Pelican!
Adeus Wordpress. Ola Pelican!
 
Como criar infraestrutura de sites para receber milhões de usuários?
Como criar infraestrutura de sites para receber milhões de usuários?Como criar infraestrutura de sites para receber milhões de usuários?
Como criar infraestrutura de sites para receber milhões de usuários?
 
De 1 a 1.000.00 de usuários
De 1 a 1.000.00 de usuáriosDe 1 a 1.000.00 de usuários
De 1 a 1.000.00 de usuários
 
Escalando aplicação Python usando Getup OpenShift
Escalando aplicação Python usando Getup OpenShiftEscalando aplicação Python usando Getup OpenShift
Escalando aplicação Python usando Getup OpenShift
 
Lab
LabLab
Lab
 
Dividindo responsabilidades com VRaptor, Rest, HTML5 e CSS3
Dividindo responsabilidades com VRaptor, Rest, HTML5 e CSS3Dividindo responsabilidades com VRaptor, Rest, HTML5 e CSS3
Dividindo responsabilidades com VRaptor, Rest, HTML5 e CSS3
 
IoTizando com JavaScript
IoTizando com JavaScriptIoTizando com JavaScript
IoTizando com JavaScript
 
(A04 e A05) LabMM3 - JavaScript
(A04 e A05) LabMM3 - JavaScript(A04 e A05) LabMM3 - JavaScript
(A04 e A05) LabMM3 - JavaScript
 
Um milhao de usuários simultâneos
Um milhao de usuários simultâneosUm milhao de usuários simultâneos
Um milhao de usuários simultâneos
 
Apresentação CEJS - Do nada para a nuvem
Apresentação CEJS - Do nada para a nuvemApresentação CEJS - Do nada para a nuvem
Apresentação CEJS - Do nada para a nuvem
 
ASP.Net Performance – A pragmatic approach - Luis Paulino
ASP.Net Performance – A pragmatic approach - Luis PaulinoASP.Net Performance – A pragmatic approach - Luis Paulino
ASP.Net Performance – A pragmatic approach - Luis Paulino
 
Otimizacao de websites em PHP
Otimizacao de websites em PHPOtimizacao de websites em PHP
Otimizacao de websites em PHP
 
Apresentação na PHP Conference Brasil 2012
Apresentação na PHP Conference Brasil 2012Apresentação na PHP Conference Brasil 2012
Apresentação na PHP Conference Brasil 2012
 
Stream Processing - ThoughtWorks Architecture Group - 2017
Stream Processing - ThoughtWorks Architecture Group - 2017Stream Processing - ThoughtWorks Architecture Group - 2017
Stream Processing - ThoughtWorks Architecture Group - 2017
 
Carrefour E-commerce - Multicloud Brasil Day 2017
Carrefour E-commerce - Multicloud Brasil Day 2017Carrefour E-commerce - Multicloud Brasil Day 2017
Carrefour E-commerce - Multicloud Brasil Day 2017
 

Escalabilidade em Aplicações - Fisl13

  • 1. Escalabilidade em aplicações DevOps Flavio Torres, @flavio_torres Espec. em infra e sistemas iG, e agora Oi Internet
  • 2. Agenda ●Arquiteturas ●WebServers: apache, nginx ●Aplicações: PHP, Java, Rails, Python, Nodejs ●SQL ●NoSQL ●Headers HTTP ●Cache Varnish ou Nginx ●Monitoramento
  • 5. Tempo é investimento! ● Faça “em casa” ● OU, participe de todo o processo, avalie propostas ● Bom entendimento, boa arquitetura ... veja!
  • 6. Arquitetura do Ger. Projeto #1
  • 7. Arquitetura do Ger. Projeto #2
  • 9.
  • 11. O que temos: ● Crawler – Python ● Queue – 0MQ (zero mq) ● NoSQL – Cassandra ● SQL – MySQL ● Map/Reduce – Hadoop ● Indices – ElasticSearch ● Web – NodeJS ● REST: Java, PHP. CACHE: memcache, membase, redis ● WebServer – Nginx ● Jetty ● Cache – Varnish
  • 13.
  • 14. SQL ● Dados Transacionais; ex: dinheiro das vendas da filial 1 + update do financeiro da filial 2. ● E a busca ? ● Podemos fazer um misto ?
  • 15. SQL: where data like "%performance%" or "%fisl13%"' Motorzinho SQL: full table scan. DICA: ^expr$
  • 18. Tenha em mente que Cache É VITAL!
  • 19. Cache HTTP Header unset ETag ExpiresActive On ExpiresByType text/css "now plus 10 years" ExpiresByType text/html "now plus 60 seconds" ExpiresByType image/gif "now plus 10 years" ExpiresByType image/png "now plus 10 years" ExpiresByType image/jpeg "now plus 10 years" ExpiresByType application/javascript "now plus 10 minutes" ExpiresByType application/x-shockwave-flash "now plus 10 years" Header append Cache-Control public env=static-content location ~* .(?:ico|css|js|gif|jpe?g|png)$ { expires 30d; add_header Pragma public; add_header Cache-Control "public"; }
  • 20. Cache HTTP $ curl -I www.ig.com.br HTTP/1.1 200 OK Last-Modified: Wed, 25 Jul 2012 21:12:46 GMT Cache-Control: max-age=60 Expires: Wed, 25 Jul 2012 21:17:48 GMT Vary: Accept-Encoding Content-Type: text/html Content-Length: 198883 Date: Wed, 25 Jul 2012 21:17:17 GMT Connection: keep-alive X-Cache: HIT X-Age: 29 X-Varnish :)
  • 21. Mas...minha aplicação não pode fazer cache! ● E separar conteúdo estático de dinâmico ? ● Utilizar cache em busca ao banco com: AH, e o cache (HTTP) do framework ?
  • 23. MONITORAMENTO !? ● Zabbix, Cacti ● JMX, Perf4J – zabbix_get -s server -p 10050 -k "check.jmx[server:16101,'br.com.corp:type=Perf4J,name=A pplicationPerf',getOfferMax]" – GrayLog2 ● nagios, zenoss ● HealthChecks – (/healthcheck?monitors=db,memcached) – Xml output + scripts – Balanceador + Healthcheck
  • 25. Flavio Torres, @flavio_torres Espec. Infra e sistemas iG, e agora Oi Internet torresflavio@gmail.com slideshare/flatorres