SlideShare uma empresa Scribd logo
1 de 35
Baixar para ler offline
Como criar infraestrutura de sitesComo criar infraestrutura de sites
para receber milhões de usuários?para receber milhões de usuários?
Marcelo Dieder – marcelodieder@gmail.com
FLISOL 2014 / Novo Hamburgo
Internet na AtualidadeInternet na Atualidade
● População Mundial: 7.1 bilhões de pessoas
(2013) *
● Número de dispositivos conectado na internet:
39% da população mundial (2013) *
● Crescimento de serviços: Serviços Cloud, Redes
sociais, Internet das Coisas.
* Fonte: ITU
Internet na AtualidadeInternet na Atualidade
● Tudo na internet está sendo centralizado
no protocolo HTTP!
* Fonte: ITU
Protocolo HTTPProtocolo HTTP
● HTTP - Hypertext Transfer Protocol
● Versão atual: HTTP/1.1 (RFC 2616)
● Futuro prevê melhorias com o HTTP 2.0
● Situada na camada de aplicação
● Utiliza protocolo TCP como apoio
● Utiliza session/cookies como complemento
● Mensagem HTTP (Request x Response)
● Requisição
● Cabeçalho da mensagem (header)
● Corpo da mensagem
Protocolo HTTPProtocolo HTTP
(Request x Response)(Request x Response)
Fonte: http://www3.ntu.edu.sg/
Protocolo HTTPProtocolo HTTP
(Request x Response)(Request x Response)
Request
Response
Fonte: http://www3.ntu.edu.sg/
Server SideServer Side
● Operações ocorridas no lado do servidor
● Exemplos:
● Banco de dados
● Manipulação de imagens
● Busca de arquivos
● Linguagens de programação (PHP, JAVA,
PERL, RUBY, PYTHON, etc)
Client SideClient Side
● Operações ocorridas no lado do cliente
(navegador)
● Exemplos:
● Javascript
● CSS
● HTML
● XML
● Cookies
Renderização da PáginaRenderização da Página
● Processo de renderização monta o HTML/CSS no
server-side (servidor) para ser interpretado pelo
client-side (navegador).
● Como agilizar a montagem e entrega de uma página?
● Reduzir o tamanho e o número de objetos da página
● Evitar busca de conteúdos externos (web) no
server-side e também no client-side
● Disponibilizar conteúdo estático sempre que possível
● Utilizar cache no server-side, client-side, banco de
dados
● Utilizar compressão no protocolo http (gzip)
E a infraestrutura?E a infraestrutura?
● Como criar um ambiente para receber requisições
(server-side) de clientes, sem a existência de pontos
únicos de falhas?
● É necessário garantir alta disponibilidade dos serviços
de:
● Internet (BGP)
● Resolução DNS (autoritativo)
● Servidor HTTP
● Servidor Banco de Dados
Processo de conexão HTTPProcesso de conexão HTTP
Fonte: http://blog.catchpoint.com/
E agora?E agora?
Então, quais os problemas existentes
para podermos garantir a alta
disponibilidade da infraestrutura e
também garantir a entrega de sites
rápidos para milhões de usuários?
Problema 1: Alta Disponibilidade doProblema 1: Alta Disponibilidade do
registro A do DNSregistro A do DNS
● Todo domínio que possua um site, possui um registro A
apontando para um IP. Ex: linux.com aponta
140.211.167.50.
● Mas como garantir a alta disponibilidade do IP?
● Existe a opção de utilizar registros SRV para definir
pesos para servidores. Assim como ocorre no registro
MX para serviços de e-mail. Infelizmente a RFC do
HTTP não suporta SRV, talvez no HTTP 2.0?
● É possível balancear as requisições com a criação de
vários registros A, mas isto resolve o problema?
Problema 2: Banco de dadosProblema 2: Banco de dados
● Consultas lentas
● Falta de índices
● Uso incorreto do vínculo de tabelas
● Grande quantidade de registros
● Tipo de tabela no MySQL/MariaDB: Myisam x
InnoDB
● Myisam: Leitura muito rápida
● Myisam: Problemas com locks
● InnoDB: Indicado para leitura e escrita
● InnoDB: select pode ser mais lento mas ideal
para concorrência de inserts, updates e
selects
Problema 3: Manipulação deProblema 3: Manipulação de
imagensimagens
● A manipulação de imagens (crop,
redimensionamento, tratamento) deve ser feito
apenas 1 vez e não a cada acesso!
● Se possível separar servidor do tratamento de
imagens do servidor de distribuição de
conteúdo.
Problema 4: Tamanho de objetosProblema 4: Tamanho de objetos
● Atenção para o tamanho de objetos (imagens,
scripts, include de códigos, etc)
● Imagine que o usuário possui plataformas de
acesso e velocidade de internet diferentes do
que a sua. (celulares, tablets, banda larga, 3G).
● Se o conteúdo é enviado através de um editor,
certifique-se que são aplicados filtros para
verificar o tamanho do upload de objetos. (ex:
imagens)
Problema 5: Consulta a conteúdosProblema 5: Consulta a conteúdos
externosexternos
● Objetos externos devem ser utilizados apenas
em casos isolados. (ex.: tempo, facebook,
twitter, banners, imagens, etc).
● JAMAIS colocar a busca de objetos no processo
de renderização de uma página.
● O conteúdo pode ser buscado pelo servidor em
processos de apoio (ex.: crontab) ou ainda
diretamente no cliente-side (ex.: utilizando
javascript).
Problema 6: HTTP x HTTPS -Problema 6: HTTP x HTTPS -
Quando utilizar?Quando utilizar?
● HTTP é simples, texto puro, e não há
criptografia
● HTTPS realiza criptografia e utiliza mais
recursos do servidor e do cliente (cpu, memória,
link de internet).
● Utilizar HTTPS em sites envolvendo troca de
senhas ou operações de valor.
● Porque utilizar HTTPS em sites de publicação
de conteúdo? (ex.: portais, blogs)
● Controlar o uso de HTTP x HTTPS por
sessão/cookie.
Cache, cache, cache!Cache, cache, cache!
● Sempre que possível utilize cache
● Cache de DNS (ttl dns)
● Cache no http server-side
● Cache no http client-side
● Cache no banco de dados
Como criar infraestrutura de sitesComo criar infraestrutura de sites
para receber milhões de usuários?para receber milhões de usuários?
● Requisitos
● High Avaiability (HA)
● Load Balance (LB)
● Crescimento Horizontal
● Arquitetura Aberta
● Sem pontos de falhas
Camada de virtualizaçãoCamada de virtualização
● Garante o HA e LB da máquina virtual
● Não garante o HA e o LB da camada de
aplicação
● Permite melhor aproveitamento dos recursos do
hardware
● Qualquer virtualizador pode ser utilizado (KVM,
Xen, Vmware, outros)
● No cenário foi utilizado Vmware como
virtualizador.
Replicação do Banco de DadosReplicação do Banco de Dados
MySQL (Master-Master)MySQL (Master-Master)
● Permite a replicação do banco de dados em outras
instâncias.
● Garante o crescimento horizontal
● Existem diversas soluções para replicação do MySQL.
● Sistema nativo do Mysql
● Sistema nativo Mysql Cluster
● Galera Cluster (Codership)
● Principais problemas das soluções nativas do Mysql:
● Split brain
● Perda de sincronismo
● Complexidade
Galera Cluster (MySQL)Galera Cluster (MySQL)
● Multi-master replication
● Replicação sincrona
● Transparente para as aplicações
● Não é necessário dividir os nós de escrita e leitura
● Replicação em nível de arquivo
● Utiliza sistema de votação - Quorum-based system (mínimo
3 nós para evitar split brain)
● 2 nós → Split Brain!
● Suporta SSL
● Utiliza necessariamente engine Innodb
● Suportado também com MariaDB
Galera Cluster (MySQL)Galera Cluster (MySQL)
HA e LB do banco de dados comHA e LB do banco de dados com
proxyproxy
● Para LB e HA do banco de dados necessita de driver ou
sistema de proxy.
● Proxy: Pen, HAProxy, Pound
● Driver: mysqlnd (PHP), jdbc connector (JAVA)
● Utilizando driver pode necessitar de mudanças de código e
não tem tanta eficiência.
● Utilizando proxy tem melhor resultados
● Utilizado o HAProxy
HAproxyHAproxy
● Open source HTTP/TCP load balancer
● Pode fazer proxy de vários protocolos
● Utilizado para realizar o balanceamento e alta
disponibilidade do uso do banco de dados.
● Instalado em cada servidor de aplicação
● Aplicação utilizava um banco “local” (localhost)
Sistema de arquivos distribuídoSistema de arquivos distribuído
● Todos os nós de aplicação precisam acessar o mesmo
volume de arquivos.
● Para isto é necessário um sistema de arquivos
distribuido ou compartilhado.
● Opções: GFS2 (RedHat), OFCS2 (Oracle)
● Também é necessário a replicação do bloco de dados
ou o compartilhamento de um mesmo bloco. Ex: Ceph,
Volume iSCSI, DRDB.
● No cenário foi utilizado OCFS2 (melhor documentação
e estabilidade) e RAW Device Mapping no Vmware.
HTTP para a aplicaçãoHTTP para a aplicação
● Aplicação para receber requisições HTTP
● Opções: Nginx, Apache, Lighttpd, Tomcat,
outros.
● Utilizado o serviço Apache.
Replicação de sessãoReplicação de sessão
● Replicação de sessão para garantir sessão de
usuários autenticados entre os nós de aplicação.
● Alteração da regra: session.save_path no
php.ini apontando para uma pasta replicado
entre o cluster de aplicação.
Cache da aplicação HTTPCache da aplicação HTTP
● Melhora a experiência de navegação do usuário
● Reduz significativamente a carga dos servidores de
aplicação.
● Efetua LB e HA entre os servidores de aplicação.
● Sistema de cache utilizado garante a entrega de páginas
estáticas.
● O cache, tempo (ttl), pode ser configurado em nível de
objeto (fotos, html, imagens, css, etc.)
● Alternativas disponíveis: Varnish, Apache Proxy, Squid.
● Utilizado: Varnish
● Varnish: Permite regras baseados em cookies, pastas,
domínios, objetos.
Alta disponibilidade do IPAlta disponibilidade do IP
● Utilizado dois servidores FreeBSD com o protocolo CARP.
● Alternativa ao protocolo VRRP
● Protocolo CARP é exclusivo da família *BSD
● CARP pode garantir HA de um IP, resolvendo o problema
da publicação do DNS registro A.
● Também suporta o LB, apesar de não ter sido utilizado no
cenário.
● Consiste em disponibilizar um IP virtual que é
compartilhado entre n+1 hosts.
Alta disponibilidade do IP - CarpAlta disponibilidade do IP - Carp
Fonte:http://nomoa.com/
Alta disponibilidade do serviço deAlta disponibilidade do serviço de
internetinternet
● É necessário ser uma operadora de Internet
Autonomous System (AS) com mais de duas
operadores.
● Possui um bloco de ips independente da
operadora utilizada.
Topologia final do modeloTopologia final do modelo
Dúvidas?Dúvidas?
OBRIGADO!
Marcelo Dieder
marcelodieder@gmail.com

Mais conteúdo relacionado

Mais procurados

2º Meritt CC - NoSQL - E o Futuro dos Bancos de Dados na Web
2º Meritt CC - NoSQL - E o Futuro dos Bancos de Dados na Web2º Meritt CC - NoSQL - E o Futuro dos Bancos de Dados na Web
2º Meritt CC - NoSQL - E o Futuro dos Bancos de Dados na WebMeritt - Cada Aluno é Único
 
Funcionalidades das versões 9.x do PostgreSQL
Funcionalidades das versões 9.x do PostgreSQLFuncionalidades das versões 9.x do PostgreSQL
Funcionalidades das versões 9.x do PostgreSQLMatheus Espanhol
 
Distribuição de Dados em Escala Global com Cassandra
Distribuição de Dados em Escala Global com CassandraDistribuição de Dados em Escala Global com Cassandra
Distribuição de Dados em Escala Global com CassandraMário Marroquim
 
Escalabilidade, Sharding, Paralelismo e Bigdata com PostgreSQL? Yes, we can!
Escalabilidade, Sharding, Paralelismo e Bigdata com PostgreSQL? Yes, we can!Escalabilidade, Sharding, Paralelismo e Bigdata com PostgreSQL? Yes, we can!
Escalabilidade, Sharding, Paralelismo e Bigdata com PostgreSQL? Yes, we can!Matheus Espanhol
 
PostgreSQL Tuning: O elefante mais rápido que um leopardo
PostgreSQL Tuning: O elefante mais rápido que um leopardoPostgreSQL Tuning: O elefante mais rápido que um leopardo
PostgreSQL Tuning: O elefante mais rápido que um leopardoelliando dias
 
Desenvolvendo aplicações Web escaláveis
Desenvolvendo aplicações Web escaláveisDesenvolvendo aplicações Web escaláveis
Desenvolvendo aplicações Web escaláveiselliando dias
 
MEO Cloud - Python Lisbon Meetup
MEO Cloud - Python Lisbon MeetupMEO Cloud - Python Lisbon Meetup
MEO Cloud - Python Lisbon MeetupAndré Cruz
 
HA em PostgreSQL: O Elefante disponível para além do infinito
HA em PostgreSQL: O Elefante disponível para além do infinitoHA em PostgreSQL: O Elefante disponível para além do infinito
HA em PostgreSQL: O Elefante disponível para além do infinitoelliando dias
 
TDC2012 - Sua aplicação JAVA flutuando nas nuvens
TDC2012 - Sua aplicação JAVA flutuando nas nuvensTDC2012 - Sua aplicação JAVA flutuando nas nuvens
TDC2012 - Sua aplicação JAVA flutuando nas nuvensLeandro Guimarães
 
Escalabilidade horizontal com PostgreSQL e Pgpool II
Escalabilidade horizontal com PostgreSQL e Pgpool IIEscalabilidade horizontal com PostgreSQL e Pgpool II
Escalabilidade horizontal com PostgreSQL e Pgpool IIMatheus Espanhol
 
Alta Disponibilidade em Linux com Heartbeat e Drbd
Alta Disponibilidade em Linux com Heartbeat e DrbdAlta Disponibilidade em Linux com Heartbeat e Drbd
Alta Disponibilidade em Linux com Heartbeat e DrbdFrederico Madeira
 
Alta Disponibilidade utilizando Pacemaker e DRBD
Alta Disponibilidade utilizando Pacemaker e DRBDAlta Disponibilidade utilizando Pacemaker e DRBD
Alta Disponibilidade utilizando Pacemaker e DRBDFrederico Madeira
 
Otimizacao de websites em PHP
Otimizacao de websites em PHPOtimizacao de websites em PHP
Otimizacao de websites em PHPFelipe Ribeiro
 
De A a Zabbix Devry Metrocamp
De A a Zabbix Devry MetrocampDe A a Zabbix Devry Metrocamp
De A a Zabbix Devry MetrocampAndré Déo
 
Minicurso GNU/Linux básico - Aula2 - Semana Sistemas de Informação 2015 - UNI...
Minicurso GNU/Linux básico - Aula2 - Semana Sistemas de Informação 2015 - UNI...Minicurso GNU/Linux básico - Aula2 - Semana Sistemas de Informação 2015 - UNI...
Minicurso GNU/Linux básico - Aula2 - Semana Sistemas de Informação 2015 - UNI...Marlon Willrich
 

Mais procurados (19)

2º Meritt CC - NoSQL - E o Futuro dos Bancos de Dados na Web
2º Meritt CC - NoSQL - E o Futuro dos Bancos de Dados na Web2º Meritt CC - NoSQL - E o Futuro dos Bancos de Dados na Web
2º Meritt CC - NoSQL - E o Futuro dos Bancos de Dados na Web
 
Funcionalidades das versões 9.x do PostgreSQL
Funcionalidades das versões 9.x do PostgreSQLFuncionalidades das versões 9.x do PostgreSQL
Funcionalidades das versões 9.x do PostgreSQL
 
Gfs slides
Gfs slidesGfs slides
Gfs slides
 
Distribuição de Dados em Escala Global com Cassandra
Distribuição de Dados em Escala Global com CassandraDistribuição de Dados em Escala Global com Cassandra
Distribuição de Dados em Escala Global com Cassandra
 
Escalabilidade, Sharding, Paralelismo e Bigdata com PostgreSQL? Yes, we can!
Escalabilidade, Sharding, Paralelismo e Bigdata com PostgreSQL? Yes, we can!Escalabilidade, Sharding, Paralelismo e Bigdata com PostgreSQL? Yes, we can!
Escalabilidade, Sharding, Paralelismo e Bigdata com PostgreSQL? Yes, we can!
 
PostgreSQL Tuning: O elefante mais rápido que um leopardo
PostgreSQL Tuning: O elefante mais rápido que um leopardoPostgreSQL Tuning: O elefante mais rápido que um leopardo
PostgreSQL Tuning: O elefante mais rápido que um leopardo
 
GlusterFs
GlusterFsGlusterFs
GlusterFs
 
Desenvolvendo aplicações Web escaláveis
Desenvolvendo aplicações Web escaláveisDesenvolvendo aplicações Web escaláveis
Desenvolvendo aplicações Web escaláveis
 
MEO Cloud - Python Lisbon Meetup
MEO Cloud - Python Lisbon MeetupMEO Cloud - Python Lisbon Meetup
MEO Cloud - Python Lisbon Meetup
 
HA em PostgreSQL: O Elefante disponível para além do infinito
HA em PostgreSQL: O Elefante disponível para além do infinitoHA em PostgreSQL: O Elefante disponível para além do infinito
HA em PostgreSQL: O Elefante disponível para além do infinito
 
Google File System
Google File SystemGoogle File System
Google File System
 
TDC2012 - Sua aplicação JAVA flutuando nas nuvens
TDC2012 - Sua aplicação JAVA flutuando nas nuvensTDC2012 - Sua aplicação JAVA flutuando nas nuvens
TDC2012 - Sua aplicação JAVA flutuando nas nuvens
 
Escalabilidade horizontal com PostgreSQL e Pgpool II
Escalabilidade horizontal com PostgreSQL e Pgpool IIEscalabilidade horizontal com PostgreSQL e Pgpool II
Escalabilidade horizontal com PostgreSQL e Pgpool II
 
Alta Disponibilidade em Linux com Heartbeat e Drbd
Alta Disponibilidade em Linux com Heartbeat e DrbdAlta Disponibilidade em Linux com Heartbeat e Drbd
Alta Disponibilidade em Linux com Heartbeat e Drbd
 
Alta Disponibilidade utilizando Pacemaker e DRBD
Alta Disponibilidade utilizando Pacemaker e DRBDAlta Disponibilidade utilizando Pacemaker e DRBD
Alta Disponibilidade utilizando Pacemaker e DRBD
 
Otimizacao de websites em PHP
Otimizacao de websites em PHPOtimizacao de websites em PHP
Otimizacao de websites em PHP
 
De A a Zabbix Devry Metrocamp
De A a Zabbix Devry MetrocampDe A a Zabbix Devry Metrocamp
De A a Zabbix Devry Metrocamp
 
Minicurso GNU/Linux básico - Aula2 - Semana Sistemas de Informação 2015 - UNI...
Minicurso GNU/Linux básico - Aula2 - Semana Sistemas de Informação 2015 - UNI...Minicurso GNU/Linux básico - Aula2 - Semana Sistemas de Informação 2015 - UNI...
Minicurso GNU/Linux básico - Aula2 - Semana Sistemas de Informação 2015 - UNI...
 
Memcached
MemcachedMemcached
Memcached
 

Destaque

Aumente a velocidade de seu site com o Varnish: Proxy cache para sites com co...
Aumente a velocidade de seu site com o Varnish: Proxy cache para sites com co...Aumente a velocidade de seu site com o Varnish: Proxy cache para sites com co...
Aumente a velocidade de seu site com o Varnish: Proxy cache para sites com co...Marcelo Dieder
 
Apresentação Openstack - FISL 2013
Apresentação Openstack - FISL 2013Apresentação Openstack - FISL 2013
Apresentação Openstack - FISL 2013Marcelo Dieder
 
Computação nas Nuvens, Virtualização e Software Livre - Como eles caminham ju...
Computação nas Nuvens, Virtualização e Software Livre - Como eles caminham ju...Computação nas Nuvens, Virtualização e Software Livre - Como eles caminham ju...
Computação nas Nuvens, Virtualização e Software Livre - Como eles caminham ju...Marcelo Dieder
 
UM ESTUDO PARA A IMPLANTAÇÃO DE UM MODELO DE GERÊNCIA DE NUVEM HÍBRIDA UTILIZ...
UM ESTUDO PARA A IMPLANTAÇÃO DE UM MODELO DE GERÊNCIA DE NUVEM HÍBRIDA UTILIZ...UM ESTUDO PARA A IMPLANTAÇÃO DE UM MODELO DE GERÊNCIA DE NUVEM HÍBRIDA UTILIZ...
UM ESTUDO PARA A IMPLANTAÇÃO DE UM MODELO DE GERÊNCIA DE NUVEM HÍBRIDA UTILIZ...Marcelo Dieder
 
O futuro do Openstack, NFV, SDN e Cloud Computing - FISL 2014
O futuro do Openstack, NFV, SDN e Cloud Computing - FISL 2014O futuro do Openstack, NFV, SDN e Cloud Computing - FISL 2014
O futuro do Openstack, NFV, SDN e Cloud Computing - FISL 2014Marcelo Dieder
 
Apresentação ser human capital management - institucional
Apresentação ser   human capital management - institucionalApresentação ser   human capital management - institucional
Apresentação ser human capital management - institucionalserhcm
 
Living From the Core of Our Being, Letting Go of Legitimacy Props
Living From the Core of Our Being, Letting Go of Legitimacy PropsLiving From the Core of Our Being, Letting Go of Legitimacy Props
Living From the Core of Our Being, Letting Go of Legitimacy Propsrfochler
 
Uma visão incomum do ser humano
Uma visão incomum do ser humanoUma visão incomum do ser humano
Uma visão incomum do ser humanofflorion
 
Feitos para atingir a maturidade
Feitos para atingir a maturidadeFeitos para atingir a maturidade
Feitos para atingir a maturidadenoel jose pereira
 
Revolutionizing IT and Telecom Industry with OpenStack, SDN and NFV
Revolutionizing IT and Telecom Industry with OpenStack, SDN and NFVRevolutionizing IT and Telecom Industry with OpenStack, SDN and NFV
Revolutionizing IT and Telecom Industry with OpenStack, SDN and NFVPLUMgrid
 
Practice In Mindfulness
Practice In MindfulnessPractice In Mindfulness
Practice In MindfulnessChris Kuehn
 
Random testing
Random testingRandom testing
Random testingLocaweb
 
A UTILIZAÇÃO DE METODOLOGIAS ÁGEIS PARA A ENTREGA DE SERVIÇOS DE INFRAESTRUTU...
A UTILIZAÇÃO DE METODOLOGIAS ÁGEIS PARA A ENTREGA DE SERVIÇOS DE INFRAESTRUTU...A UTILIZAÇÃO DE METODOLOGIAS ÁGEIS PARA A ENTREGA DE SERVIÇOS DE INFRAESTRUTU...
A UTILIZAÇÃO DE METODOLOGIAS ÁGEIS PARA A ENTREGA DE SERVIÇOS DE INFRAESTRUTU...Marcelo Dieder
 
Os conflitos existem e podem atingir qualquer pessoa
Os conflitos existem e podem atingir qualquer pessoaOs conflitos existem e podem atingir qualquer pessoa
Os conflitos existem e podem atingir qualquer pessoaAlcoa
 
Cbtd 2013 p69 - carma senior
Cbtd 2013   p69 - carma seniorCbtd 2013   p69 - carma senior
Cbtd 2013 p69 - carma seniorEdson Carli
 
Effective ways to improve quality & control population
Effective ways to improve quality & control populationEffective ways to improve quality & control population
Effective ways to improve quality & control populationkjanand
 
Por que usar inovações tecnológicas na educação?, por Tatiana Klix
Por que usar inovações tecnológicas na educação?, por Tatiana KlixPor que usar inovações tecnológicas na educação?, por Tatiana Klix
Por que usar inovações tecnológicas na educação?, por Tatiana KlixSocial Good Brasil
 
Voz sobre ip uma abordagem funcional
Voz sobre ip   uma abordagem funcionalVoz sobre ip   uma abordagem funcional
Voz sobre ip uma abordagem funcionalMarcelo Dieder
 

Destaque (20)

Aumente a velocidade de seu site com o Varnish: Proxy cache para sites com co...
Aumente a velocidade de seu site com o Varnish: Proxy cache para sites com co...Aumente a velocidade de seu site com o Varnish: Proxy cache para sites com co...
Aumente a velocidade de seu site com o Varnish: Proxy cache para sites com co...
 
Apresentação Openstack - FISL 2013
Apresentação Openstack - FISL 2013Apresentação Openstack - FISL 2013
Apresentação Openstack - FISL 2013
 
Computação nas Nuvens, Virtualização e Software Livre - Como eles caminham ju...
Computação nas Nuvens, Virtualização e Software Livre - Como eles caminham ju...Computação nas Nuvens, Virtualização e Software Livre - Como eles caminham ju...
Computação nas Nuvens, Virtualização e Software Livre - Como eles caminham ju...
 
UM ESTUDO PARA A IMPLANTAÇÃO DE UM MODELO DE GERÊNCIA DE NUVEM HÍBRIDA UTILIZ...
UM ESTUDO PARA A IMPLANTAÇÃO DE UM MODELO DE GERÊNCIA DE NUVEM HÍBRIDA UTILIZ...UM ESTUDO PARA A IMPLANTAÇÃO DE UM MODELO DE GERÊNCIA DE NUVEM HÍBRIDA UTILIZ...
UM ESTUDO PARA A IMPLANTAÇÃO DE UM MODELO DE GERÊNCIA DE NUVEM HÍBRIDA UTILIZ...
 
O futuro do Openstack, NFV, SDN e Cloud Computing - FISL 2014
O futuro do Openstack, NFV, SDN e Cloud Computing - FISL 2014O futuro do Openstack, NFV, SDN e Cloud Computing - FISL 2014
O futuro do Openstack, NFV, SDN e Cloud Computing - FISL 2014
 
Apresentação ser human capital management - institucional
Apresentação ser   human capital management - institucionalApresentação ser   human capital management - institucional
Apresentação ser human capital management - institucional
 
Living From the Core of Our Being, Letting Go of Legitimacy Props
Living From the Core of Our Being, Letting Go of Legitimacy PropsLiving From the Core of Our Being, Letting Go of Legitimacy Props
Living From the Core of Our Being, Letting Go of Legitimacy Props
 
Uma visão incomum do ser humano
Uma visão incomum do ser humanoUma visão incomum do ser humano
Uma visão incomum do ser humano
 
Feitos para atingir a maturidade
Feitos para atingir a maturidadeFeitos para atingir a maturidade
Feitos para atingir a maturidade
 
Marketing and start ups
Marketing and start ups Marketing and start ups
Marketing and start ups
 
Revolutionizing IT and Telecom Industry with OpenStack, SDN and NFV
Revolutionizing IT and Telecom Industry with OpenStack, SDN and NFVRevolutionizing IT and Telecom Industry with OpenStack, SDN and NFV
Revolutionizing IT and Telecom Industry with OpenStack, SDN and NFV
 
Practice In Mindfulness
Practice In MindfulnessPractice In Mindfulness
Practice In Mindfulness
 
Random testing
Random testingRandom testing
Random testing
 
A UTILIZAÇÃO DE METODOLOGIAS ÁGEIS PARA A ENTREGA DE SERVIÇOS DE INFRAESTRUTU...
A UTILIZAÇÃO DE METODOLOGIAS ÁGEIS PARA A ENTREGA DE SERVIÇOS DE INFRAESTRUTU...A UTILIZAÇÃO DE METODOLOGIAS ÁGEIS PARA A ENTREGA DE SERVIÇOS DE INFRAESTRUTU...
A UTILIZAÇÃO DE METODOLOGIAS ÁGEIS PARA A ENTREGA DE SERVIÇOS DE INFRAESTRUTU...
 
Salud ocupacional
Salud ocupacionalSalud ocupacional
Salud ocupacional
 
Os conflitos existem e podem atingir qualquer pessoa
Os conflitos existem e podem atingir qualquer pessoaOs conflitos existem e podem atingir qualquer pessoa
Os conflitos existem e podem atingir qualquer pessoa
 
Cbtd 2013 p69 - carma senior
Cbtd 2013   p69 - carma seniorCbtd 2013   p69 - carma senior
Cbtd 2013 p69 - carma senior
 
Effective ways to improve quality & control population
Effective ways to improve quality & control populationEffective ways to improve quality & control population
Effective ways to improve quality & control population
 
Por que usar inovações tecnológicas na educação?, por Tatiana Klix
Por que usar inovações tecnológicas na educação?, por Tatiana KlixPor que usar inovações tecnológicas na educação?, por Tatiana Klix
Por que usar inovações tecnológicas na educação?, por Tatiana Klix
 
Voz sobre ip uma abordagem funcional
Voz sobre ip   uma abordagem funcionalVoz sobre ip   uma abordagem funcional
Voz sobre ip uma abordagem funcional
 

Semelhante a Como criar infraestrutura de sites para receber milhões de usuários?

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
 
Entregando conteúdo em ambientes extremos na JVM
Entregando conteúdo em ambientes extremos na JVMEntregando conteúdo em ambientes extremos na JVM
Entregando conteúdo em ambientes extremos na JVMRodrigo Zaccara
 
(A04 e A05) LabMM3 - JavaScript
(A04 e A05) LabMM3 - JavaScript(A04 e A05) LabMM3 - JavaScript
(A04 e A05) LabMM3 - JavaScriptCarlos Santos
 
Introdução ao desenvolvimento Web
Introdução ao desenvolvimento WebIntrodução ao desenvolvimento Web
Introdução ao desenvolvimento WebSérgio Souza Costa
 
Apresentação GT - Digital Preservation
Apresentação GT - Digital PreservationApresentação GT - Digital Preservation
Apresentação GT - Digital PreservationRoberto Beraldo Chaiben
 
Melhorando o desempenho do seu WordPress
Melhorando o desempenho do seu WordPressMelhorando o desempenho do seu WordPress
Melhorando o desempenho do seu WordPressJulian Fernandes
 
Escalabilidade via Software no ExpressoV3
Escalabilidade via Software no ExpressoV3Escalabilidade via Software no ExpressoV3
Escalabilidade via Software no ExpressoV3Flávio Lisboa
 
Novidades do .NET Core 2.1 e do ASP.NET Core 2.1
Novidades do .NET Core 2.1 e do ASP.NET Core 2.1Novidades do .NET Core 2.1 e do ASP.NET Core 2.1
Novidades do .NET Core 2.1 e do ASP.NET Core 2.1Giovanni Bassi
 
Desenvolvemos para web?
Desenvolvemos para web?Desenvolvemos para web?
Desenvolvemos para web?Luis Vendrame
 
Apresentacao gt cnc-workshop_iniciliazicao_fase2
Apresentacao gt cnc-workshop_iniciliazicao_fase2Apresentacao gt cnc-workshop_iniciliazicao_fase2
Apresentacao gt cnc-workshop_iniciliazicao_fase2Lucas Silva
 
Um milhao tdc2014sp Apresentação por Fernando Ike
Um milhao tdc2014sp Apresentação por Fernando IkeUm milhao tdc2014sp Apresentação por Fernando Ike
Um milhao tdc2014sp Apresentação por Fernando IkePaulo Fernandes
 
T03_LM3: Javascript (2013-2014)
T03_LM3: Javascript (2013-2014)T03_LM3: Javascript (2013-2014)
T03_LM3: Javascript (2013-2014)Carlos Santos
 
Forefront TMG - Planejando corretamente
Forefront TMG - Planejando corretamenteForefront TMG - Planejando corretamente
Forefront TMG - Planejando corretamenteUilson Souza
 
Técnicas e recursos para desenvolvimento Web em cenários de grande escala
Técnicas e recursos para desenvolvimento Web em cenários de grande escalaTécnicas e recursos para desenvolvimento Web em cenários de grande escala
Técnicas e recursos para desenvolvimento Web em cenários de grande escalaAlexandre Tarifa
 
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
 
LabMM3 - Aula teórica 04
LabMM3 - Aula teórica 04LabMM3 - Aula teórica 04
LabMM3 - Aula teórica 04Carlos Santos
 
Cloud Server Embratel
Cloud Server EmbratelCloud Server Embratel
Cloud Server EmbratelAlex Hübner
 

Semelhante a Como criar infraestrutura de sites para receber milhões de usuários? (20)

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
 
Entregando conteúdo em ambientes extremos na JVM
Entregando conteúdo em ambientes extremos na JVMEntregando conteúdo em ambientes extremos na JVM
Entregando conteúdo em ambientes extremos na JVM
 
(A04 e A05) LabMM3 - JavaScript
(A04 e A05) LabMM3 - JavaScript(A04 e A05) LabMM3 - JavaScript
(A04 e A05) LabMM3 - JavaScript
 
Introdução ao desenvolvimento Web
Introdução ao desenvolvimento WebIntrodução ao desenvolvimento Web
Introdução ao desenvolvimento Web
 
Apresentação GT - Digital Preservation
Apresentação GT - Digital PreservationApresentação GT - Digital Preservation
Apresentação GT - Digital Preservation
 
Melhorando o desempenho do seu WordPress
Melhorando o desempenho do seu WordPressMelhorando o desempenho do seu WordPress
Melhorando o desempenho do seu WordPress
 
Python CGI
Python CGIPython CGI
Python CGI
 
Escalabilidade via Software no ExpressoV3
Escalabilidade via Software no ExpressoV3Escalabilidade via Software no ExpressoV3
Escalabilidade via Software no ExpressoV3
 
Novidades do .NET Core 2.1 e do ASP.NET Core 2.1
Novidades do .NET Core 2.1 e do ASP.NET Core 2.1Novidades do .NET Core 2.1 e do ASP.NET Core 2.1
Novidades do .NET Core 2.1 e do ASP.NET Core 2.1
 
Desenvolvemos para web?
Desenvolvemos para web?Desenvolvemos para web?
Desenvolvemos para web?
 
Apresentacao gt cnc-workshop_iniciliazicao_fase2
Apresentacao gt cnc-workshop_iniciliazicao_fase2Apresentacao gt cnc-workshop_iniciliazicao_fase2
Apresentacao gt cnc-workshop_iniciliazicao_fase2
 
Um milhao tdc2014sp Apresentação por Fernando Ike
Um milhao tdc2014sp Apresentação por Fernando IkeUm milhao tdc2014sp Apresentação por Fernando Ike
Um milhao tdc2014sp Apresentação por Fernando Ike
 
T03_LM3: Javascript (2013-2014)
T03_LM3: Javascript (2013-2014)T03_LM3: Javascript (2013-2014)
T03_LM3: Javascript (2013-2014)
 
Forefront TMG - Planejando corretamente
Forefront TMG - Planejando corretamenteForefront TMG - Planejando corretamente
Forefront TMG - Planejando corretamente
 
Técnicas e recursos para desenvolvimento Web em cenários de grande escala
Técnicas e recursos para desenvolvimento Web em cenários de grande escalaTécnicas e recursos para desenvolvimento Web em cenários de grande escala
Técnicas e recursos para desenvolvimento Web em cenários de grande escala
 
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
 
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
 
Web seminario varnish
Web seminario varnishWeb seminario varnish
Web seminario varnish
 
LabMM3 - Aula teórica 04
LabMM3 - Aula teórica 04LabMM3 - Aula teórica 04
LabMM3 - Aula teórica 04
 
Cloud Server Embratel
Cloud Server EmbratelCloud Server Embratel
Cloud Server Embratel
 

Como criar infraestrutura de sites para receber milhões de usuários?

  • 1. Como criar infraestrutura de sitesComo criar infraestrutura de sites para receber milhões de usuários?para receber milhões de usuários? Marcelo Dieder – marcelodieder@gmail.com FLISOL 2014 / Novo Hamburgo
  • 2. Internet na AtualidadeInternet na Atualidade ● População Mundial: 7.1 bilhões de pessoas (2013) * ● Número de dispositivos conectado na internet: 39% da população mundial (2013) * ● Crescimento de serviços: Serviços Cloud, Redes sociais, Internet das Coisas. * Fonte: ITU
  • 3. Internet na AtualidadeInternet na Atualidade ● Tudo na internet está sendo centralizado no protocolo HTTP! * Fonte: ITU
  • 4. Protocolo HTTPProtocolo HTTP ● HTTP - Hypertext Transfer Protocol ● Versão atual: HTTP/1.1 (RFC 2616) ● Futuro prevê melhorias com o HTTP 2.0 ● Situada na camada de aplicação ● Utiliza protocolo TCP como apoio ● Utiliza session/cookies como complemento ● Mensagem HTTP (Request x Response) ● Requisição ● Cabeçalho da mensagem (header) ● Corpo da mensagem
  • 5. Protocolo HTTPProtocolo HTTP (Request x Response)(Request x Response) Fonte: http://www3.ntu.edu.sg/
  • 6. Protocolo HTTPProtocolo HTTP (Request x Response)(Request x Response) Request Response Fonte: http://www3.ntu.edu.sg/
  • 7. Server SideServer Side ● Operações ocorridas no lado do servidor ● Exemplos: ● Banco de dados ● Manipulação de imagens ● Busca de arquivos ● Linguagens de programação (PHP, JAVA, PERL, RUBY, PYTHON, etc)
  • 8. Client SideClient Side ● Operações ocorridas no lado do cliente (navegador) ● Exemplos: ● Javascript ● CSS ● HTML ● XML ● Cookies
  • 9. Renderização da PáginaRenderização da Página ● Processo de renderização monta o HTML/CSS no server-side (servidor) para ser interpretado pelo client-side (navegador). ● Como agilizar a montagem e entrega de uma página? ● Reduzir o tamanho e o número de objetos da página ● Evitar busca de conteúdos externos (web) no server-side e também no client-side ● Disponibilizar conteúdo estático sempre que possível ● Utilizar cache no server-side, client-side, banco de dados ● Utilizar compressão no protocolo http (gzip)
  • 10. E a infraestrutura?E a infraestrutura? ● Como criar um ambiente para receber requisições (server-side) de clientes, sem a existência de pontos únicos de falhas? ● É necessário garantir alta disponibilidade dos serviços de: ● Internet (BGP) ● Resolução DNS (autoritativo) ● Servidor HTTP ● Servidor Banco de Dados
  • 11. Processo de conexão HTTPProcesso de conexão HTTP Fonte: http://blog.catchpoint.com/
  • 12. E agora?E agora? Então, quais os problemas existentes para podermos garantir a alta disponibilidade da infraestrutura e também garantir a entrega de sites rápidos para milhões de usuários?
  • 13. Problema 1: Alta Disponibilidade doProblema 1: Alta Disponibilidade do registro A do DNSregistro A do DNS ● Todo domínio que possua um site, possui um registro A apontando para um IP. Ex: linux.com aponta 140.211.167.50. ● Mas como garantir a alta disponibilidade do IP? ● Existe a opção de utilizar registros SRV para definir pesos para servidores. Assim como ocorre no registro MX para serviços de e-mail. Infelizmente a RFC do HTTP não suporta SRV, talvez no HTTP 2.0? ● É possível balancear as requisições com a criação de vários registros A, mas isto resolve o problema?
  • 14. Problema 2: Banco de dadosProblema 2: Banco de dados ● Consultas lentas ● Falta de índices ● Uso incorreto do vínculo de tabelas ● Grande quantidade de registros ● Tipo de tabela no MySQL/MariaDB: Myisam x InnoDB ● Myisam: Leitura muito rápida ● Myisam: Problemas com locks ● InnoDB: Indicado para leitura e escrita ● InnoDB: select pode ser mais lento mas ideal para concorrência de inserts, updates e selects
  • 15. Problema 3: Manipulação deProblema 3: Manipulação de imagensimagens ● A manipulação de imagens (crop, redimensionamento, tratamento) deve ser feito apenas 1 vez e não a cada acesso! ● Se possível separar servidor do tratamento de imagens do servidor de distribuição de conteúdo.
  • 16. Problema 4: Tamanho de objetosProblema 4: Tamanho de objetos ● Atenção para o tamanho de objetos (imagens, scripts, include de códigos, etc) ● Imagine que o usuário possui plataformas de acesso e velocidade de internet diferentes do que a sua. (celulares, tablets, banda larga, 3G). ● Se o conteúdo é enviado através de um editor, certifique-se que são aplicados filtros para verificar o tamanho do upload de objetos. (ex: imagens)
  • 17. Problema 5: Consulta a conteúdosProblema 5: Consulta a conteúdos externosexternos ● Objetos externos devem ser utilizados apenas em casos isolados. (ex.: tempo, facebook, twitter, banners, imagens, etc). ● JAMAIS colocar a busca de objetos no processo de renderização de uma página. ● O conteúdo pode ser buscado pelo servidor em processos de apoio (ex.: crontab) ou ainda diretamente no cliente-side (ex.: utilizando javascript).
  • 18. Problema 6: HTTP x HTTPS -Problema 6: HTTP x HTTPS - Quando utilizar?Quando utilizar? ● HTTP é simples, texto puro, e não há criptografia ● HTTPS realiza criptografia e utiliza mais recursos do servidor e do cliente (cpu, memória, link de internet). ● Utilizar HTTPS em sites envolvendo troca de senhas ou operações de valor. ● Porque utilizar HTTPS em sites de publicação de conteúdo? (ex.: portais, blogs) ● Controlar o uso de HTTP x HTTPS por sessão/cookie.
  • 19. Cache, cache, cache!Cache, cache, cache! ● Sempre que possível utilize cache ● Cache de DNS (ttl dns) ● Cache no http server-side ● Cache no http client-side ● Cache no banco de dados
  • 20. Como criar infraestrutura de sitesComo criar infraestrutura de sites para receber milhões de usuários?para receber milhões de usuários? ● Requisitos ● High Avaiability (HA) ● Load Balance (LB) ● Crescimento Horizontal ● Arquitetura Aberta ● Sem pontos de falhas
  • 21. Camada de virtualizaçãoCamada de virtualização ● Garante o HA e LB da máquina virtual ● Não garante o HA e o LB da camada de aplicação ● Permite melhor aproveitamento dos recursos do hardware ● Qualquer virtualizador pode ser utilizado (KVM, Xen, Vmware, outros) ● No cenário foi utilizado Vmware como virtualizador.
  • 22. Replicação do Banco de DadosReplicação do Banco de Dados MySQL (Master-Master)MySQL (Master-Master) ● Permite a replicação do banco de dados em outras instâncias. ● Garante o crescimento horizontal ● Existem diversas soluções para replicação do MySQL. ● Sistema nativo do Mysql ● Sistema nativo Mysql Cluster ● Galera Cluster (Codership) ● Principais problemas das soluções nativas do Mysql: ● Split brain ● Perda de sincronismo ● Complexidade
  • 23. Galera Cluster (MySQL)Galera Cluster (MySQL) ● Multi-master replication ● Replicação sincrona ● Transparente para as aplicações ● Não é necessário dividir os nós de escrita e leitura ● Replicação em nível de arquivo ● Utiliza sistema de votação - Quorum-based system (mínimo 3 nós para evitar split brain) ● 2 nós → Split Brain! ● Suporta SSL ● Utiliza necessariamente engine Innodb ● Suportado também com MariaDB
  • 24. Galera Cluster (MySQL)Galera Cluster (MySQL)
  • 25. HA e LB do banco de dados comHA e LB do banco de dados com proxyproxy ● Para LB e HA do banco de dados necessita de driver ou sistema de proxy. ● Proxy: Pen, HAProxy, Pound ● Driver: mysqlnd (PHP), jdbc connector (JAVA) ● Utilizando driver pode necessitar de mudanças de código e não tem tanta eficiência. ● Utilizando proxy tem melhor resultados ● Utilizado o HAProxy
  • 26. HAproxyHAproxy ● Open source HTTP/TCP load balancer ● Pode fazer proxy de vários protocolos ● Utilizado para realizar o balanceamento e alta disponibilidade do uso do banco de dados. ● Instalado em cada servidor de aplicação ● Aplicação utilizava um banco “local” (localhost)
  • 27. Sistema de arquivos distribuídoSistema de arquivos distribuído ● Todos os nós de aplicação precisam acessar o mesmo volume de arquivos. ● Para isto é necessário um sistema de arquivos distribuido ou compartilhado. ● Opções: GFS2 (RedHat), OFCS2 (Oracle) ● Também é necessário a replicação do bloco de dados ou o compartilhamento de um mesmo bloco. Ex: Ceph, Volume iSCSI, DRDB. ● No cenário foi utilizado OCFS2 (melhor documentação e estabilidade) e RAW Device Mapping no Vmware.
  • 28. HTTP para a aplicaçãoHTTP para a aplicação ● Aplicação para receber requisições HTTP ● Opções: Nginx, Apache, Lighttpd, Tomcat, outros. ● Utilizado o serviço Apache.
  • 29. Replicação de sessãoReplicação de sessão ● Replicação de sessão para garantir sessão de usuários autenticados entre os nós de aplicação. ● Alteração da regra: session.save_path no php.ini apontando para uma pasta replicado entre o cluster de aplicação.
  • 30. Cache da aplicação HTTPCache da aplicação HTTP ● Melhora a experiência de navegação do usuário ● Reduz significativamente a carga dos servidores de aplicação. ● Efetua LB e HA entre os servidores de aplicação. ● Sistema de cache utilizado garante a entrega de páginas estáticas. ● O cache, tempo (ttl), pode ser configurado em nível de objeto (fotos, html, imagens, css, etc.) ● Alternativas disponíveis: Varnish, Apache Proxy, Squid. ● Utilizado: Varnish ● Varnish: Permite regras baseados em cookies, pastas, domínios, objetos.
  • 31. Alta disponibilidade do IPAlta disponibilidade do IP ● Utilizado dois servidores FreeBSD com o protocolo CARP. ● Alternativa ao protocolo VRRP ● Protocolo CARP é exclusivo da família *BSD ● CARP pode garantir HA de um IP, resolvendo o problema da publicação do DNS registro A. ● Também suporta o LB, apesar de não ter sido utilizado no cenário. ● Consiste em disponibilizar um IP virtual que é compartilhado entre n+1 hosts.
  • 32. Alta disponibilidade do IP - CarpAlta disponibilidade do IP - Carp Fonte:http://nomoa.com/
  • 33. Alta disponibilidade do serviço deAlta disponibilidade do serviço de internetinternet ● É necessário ser uma operadora de Internet Autonomous System (AS) com mais de duas operadores. ● Possui um bloco de ips independente da operadora utilizada.
  • 34. Topologia final do modeloTopologia final do modelo