Tirando leite de Pedra
Escalabilidade e Alta Disponibilidade
em WordPress
Daniel Checchia... Quem???
• +30(!) anos em Tecnologia - “T-Rex” evoluído 
• Passagem por todos os grandes e-Commerce nacionais
(americanas.com, shoptime.com, submarino.com, ingresso.com,
pontofrio.com), empresas de internet (imovelweb.com, zap.com.br) e
startups (psafe.com, sitepx.com).
• Especializado em Arquitetura Corporativa, Infraestrutura, segurança e
Cloud Computing.
• Atualmente responsável em converter idéias em produtos na
startuplabs.com.br – procdn.com.br e laquna.tv
O que eu faço da vida....
• Planejamento Estratégico TI
• Arquitetura Corporativa de TI
• Consultoria Estratégica
• Tech Mentoring para Startups
• CTO Virtual ou On Demand
• Hands on
• Lavo
• Passo
• Cozinho....
Agenda
Conceitos Básicos sobre Escalabilidade e Alta Disponibilidade
Conceitos Básicos sobre Performance WEB
WordPress: Crescendo aos Poucos
Encerrando.....
Conceitos Básicos
Sobre Escalabilidade e Alta Disponibilidade
Características Arquiteturas
escaláveis
• Aumento de recursos resulta em um aumento proporcional no
desempenho
• é capaz de lidar com a heterogeneidade
• é operacionalmente eficiente
• é resiliente
• deve tornar-se mais rentável quando cresce
Tipos de Escalabilidade
• Vertical
• Aumenta-se CPU,
Memória e Disco
• Horizontal
• Máquinas pequenas
• Aumenta-se o número de
máquinas (pequenas) de
acordo com a demanda
Alta Disponibilidade
• OFFLine (DR)
• Solução de Desaster Recovery
• Backups são feitos e armazenados fora do ambiente
• Stand by (Ativo-Passivo)
• Uma máquina fica ativa, respondendo o site
• Uma segunda máquina fica “ligada”, recebendo sincronismo de dados
• ONLine (Ativo-Ativo)
• Duas (ou mais) máquinas ligadas e respondendo pelo site ao mesmo
tempo
Conceitos Básicos
Sobre Performance WEB
Conceitos Básicos sobre
Performance WEB
• Melhores Práticas:
• Yslow (Yahoo!)
• Google PageSpeed
• Google PageSpeed faz teste
em mobile!
Algumas validações
• Minimize HTTP Requests
• Use a Content Delivery Network
• Avoid empty src or href
• Add an Expires or a Cache-Control Header
• Gzip Components
• Put StyleSheets at the Top
• Put Scripts at the Bottom
• Avoid CSS Expressions
• Make JavaScript and CSS External
• Reduce DNS Lookups
• Minify JavaScript and CSS
• Avoid Redirects
• Remove Duplicate Scripts
• Configure ETags
• Make AJAX Cacheable
• Use GET for AJAX Requests
• Reduce the Number of DOM Elements
• No 404s
• Reduce Cookie Size
• Use Cookie-Free Domains for Components
• Avoid Filters
• Do Not Scale Images in HTML
• Make favicon.ico Small and Cacheable
O que precisa ser “Atacado”
• Minimize HTTP Requests
• Use a Content Delivery Network
• Avoid empty src or href
• Add an Expires or a Cache-Control Header
• Gzip Components
• Put StyleSheets at the Top
• Put Scripts at the Bottom
• Avoid CSS Expressions
• Make JavaScript and CSS External
• Reduce DNS Lookups
• Minify JavaScript and CSS
• Avoid Redirects
• Remove Duplicate Scripts
• Configure ETags
• Make AJAX Cacheable
• Use GET for AJAX Requests
• Reduce the Number of DOM Elements
• No 404s
• Reduce Cookie Size
• Use Cookie-Free Domains for Components
• Avoid Filters
• Do Not Scale Images in HTML
• Make favicon.ico Small and Cacheable
Crescendo aos Poucos
Instalação Padrão
• “Tudo em 1” ou LAMP:
• Linux:
• Sistema Operacional
• Apache (Nginx)
• Servidor WEB
• PHP
• Linguagem Server-side interpretada
• Banco de dados
• Banco de dados MySQL
Escalando 01: Varnish / CDN
• Servidor Único:
• Varnish
• Cache em memória
• PHP
• Apache (Nginx)
• Banco de dados
Escalando 02: “cacheando” o
Banco
• Servidor Único:
• Varnish
• PHP
• Apache (Nginx)
• Memcached
• Chave+valor em memória
• Banco de dados
Escalando 03: Separando Banco
• Servidor APP:
• Varnish
• PHP
• Apache (Nginx)
• Servidor Banco de Dados:
• Memcached
• Banco de dados
Varnish
Apache
PHP
MemCached
MariaDB
Escalando 04: Crescendo
Horizontalmente
• Servidor APP{n}:
• Varnish
• PHP
• Apache (Nginx)
• NFS
• Network File System
• Servidor Banco de Dados:
• Memcached
• Banco de dados
MemCached
MariaDB
WP-ADMIN
Varnish
WP-Content WP-Content WP-Content WP-Content WP-Content WP-Content
Escalando 05: Separando
FileSystem
• Servidor APP{n}:
• Varnish
• PHP
• Apache (Nginx)
• Servidor Admin:
• PHP
• WebServer
• NFS
• Servidor Banco de Dados:
• Memcached
• Banco de dados
MemCached
MariaDB
WP-ADMIN
Varnish
WP-Content WP-Content WP-Content WP-Content WP-Content WP-Content
Escalando 06: Suporte Especialista
• HHVM
• Auto Scalling
• Etc....
Encerrando....
Projeto para Plugins de
Escalabilidade
O objetivo do projeto é a criação de plugins, scripts e
ferramentas para facilitar aos desenvolvedores a implementação
de todas as boas práticas de escalabilidade e disponibilidade.
Procuro Desenvolvedores Voluntários!
https://github.com/checchia
Licenciamento da Apresentação
Atribuição-Uso Não-Comercial-Compatilhamento pela mesma licença 2.5 Brasil
Você pode:
•copiar, distribuir, exibir e executar a obra
•criar obras derivadas
Sob as seguintes condições:
Atribuição. Você deve dar crédito ao autor original, da forma especificada pelo autor ou licenciante.
Uso Não-Comercial. Você não pode utilizar esta obra com finalidades comerciais.
Compartilhamento pela mesma Licença. Se você alterar, transformar, ou criar outra obra com base nesta, você somente
poderá distribuir a obra resultante sob uma licença idêntica a esta.
Obrigado!!
Daniel Checchia
daniel@checchia.net
@checchia
Skype: daniel.checchia
(11) 3010-0140
(41) 4042-1050
Site pessoal:
http://Checchia.NET

Tirando leite de pedra

  • 1.
    Tirando leite dePedra Escalabilidade e Alta Disponibilidade em WordPress
  • 2.
    Daniel Checchia... Quem??? •+30(!) anos em Tecnologia - “T-Rex” evoluído  • Passagem por todos os grandes e-Commerce nacionais (americanas.com, shoptime.com, submarino.com, ingresso.com, pontofrio.com), empresas de internet (imovelweb.com, zap.com.br) e startups (psafe.com, sitepx.com). • Especializado em Arquitetura Corporativa, Infraestrutura, segurança e Cloud Computing. • Atualmente responsável em converter idéias em produtos na startuplabs.com.br – procdn.com.br e laquna.tv
  • 3.
    O que eufaço da vida.... • Planejamento Estratégico TI • Arquitetura Corporativa de TI • Consultoria Estratégica • Tech Mentoring para Startups • CTO Virtual ou On Demand • Hands on • Lavo • Passo • Cozinho....
  • 4.
    Agenda Conceitos Básicos sobreEscalabilidade e Alta Disponibilidade Conceitos Básicos sobre Performance WEB WordPress: Crescendo aos Poucos Encerrando.....
  • 5.
  • 6.
    Características Arquiteturas escaláveis • Aumentode recursos resulta em um aumento proporcional no desempenho • é capaz de lidar com a heterogeneidade • é operacionalmente eficiente • é resiliente • deve tornar-se mais rentável quando cresce
  • 7.
    Tipos de Escalabilidade •Vertical • Aumenta-se CPU, Memória e Disco • Horizontal • Máquinas pequenas • Aumenta-se o número de máquinas (pequenas) de acordo com a demanda
  • 8.
    Alta Disponibilidade • OFFLine(DR) • Solução de Desaster Recovery • Backups são feitos e armazenados fora do ambiente • Stand by (Ativo-Passivo) • Uma máquina fica ativa, respondendo o site • Uma segunda máquina fica “ligada”, recebendo sincronismo de dados • ONLine (Ativo-Ativo) • Duas (ou mais) máquinas ligadas e respondendo pelo site ao mesmo tempo
  • 9.
  • 10.
    Conceitos Básicos sobre PerformanceWEB • Melhores Práticas: • Yslow (Yahoo!) • Google PageSpeed • Google PageSpeed faz teste em mobile!
  • 11.
    Algumas validações • MinimizeHTTP Requests • Use a Content Delivery Network • Avoid empty src or href • Add an Expires or a Cache-Control Header • Gzip Components • Put StyleSheets at the Top • Put Scripts at the Bottom • Avoid CSS Expressions • Make JavaScript and CSS External • Reduce DNS Lookups • Minify JavaScript and CSS • Avoid Redirects • Remove Duplicate Scripts • Configure ETags • Make AJAX Cacheable • Use GET for AJAX Requests • Reduce the Number of DOM Elements • No 404s • Reduce Cookie Size • Use Cookie-Free Domains for Components • Avoid Filters • Do Not Scale Images in HTML • Make favicon.ico Small and Cacheable
  • 12.
    O que precisaser “Atacado” • Minimize HTTP Requests • Use a Content Delivery Network • Avoid empty src or href • Add an Expires or a Cache-Control Header • Gzip Components • Put StyleSheets at the Top • Put Scripts at the Bottom • Avoid CSS Expressions • Make JavaScript and CSS External • Reduce DNS Lookups • Minify JavaScript and CSS • Avoid Redirects • Remove Duplicate Scripts • Configure ETags • Make AJAX Cacheable • Use GET for AJAX Requests • Reduce the Number of DOM Elements • No 404s • Reduce Cookie Size • Use Cookie-Free Domains for Components • Avoid Filters • Do Not Scale Images in HTML • Make favicon.ico Small and Cacheable
  • 13.
  • 14.
    Instalação Padrão • “Tudoem 1” ou LAMP: • Linux: • Sistema Operacional • Apache (Nginx) • Servidor WEB • PHP • Linguagem Server-side interpretada • Banco de dados • Banco de dados MySQL
  • 15.
    Escalando 01: Varnish/ CDN • Servidor Único: • Varnish • Cache em memória • PHP • Apache (Nginx) • Banco de dados
  • 16.
    Escalando 02: “cacheando”o Banco • Servidor Único: • Varnish • PHP • Apache (Nginx) • Memcached • Chave+valor em memória • Banco de dados
  • 17.
    Escalando 03: SeparandoBanco • Servidor APP: • Varnish • PHP • Apache (Nginx) • Servidor Banco de Dados: • Memcached • Banco de dados Varnish Apache PHP MemCached MariaDB
  • 18.
    Escalando 04: Crescendo Horizontalmente •Servidor APP{n}: • Varnish • PHP • Apache (Nginx) • NFS • Network File System • Servidor Banco de Dados: • Memcached • Banco de dados MemCached MariaDB WP-ADMIN Varnish WP-Content WP-Content WP-Content WP-Content WP-Content WP-Content
  • 19.
    Escalando 05: Separando FileSystem •Servidor APP{n}: • Varnish • PHP • Apache (Nginx) • Servidor Admin: • PHP • WebServer • NFS • Servidor Banco de Dados: • Memcached • Banco de dados MemCached MariaDB WP-ADMIN Varnish WP-Content WP-Content WP-Content WP-Content WP-Content WP-Content
  • 20.
    Escalando 06: SuporteEspecialista • HHVM • Auto Scalling • Etc....
  • 21.
  • 22.
    Projeto para Pluginsde Escalabilidade O objetivo do projeto é a criação de plugins, scripts e ferramentas para facilitar aos desenvolvedores a implementação de todas as boas práticas de escalabilidade e disponibilidade. Procuro Desenvolvedores Voluntários! https://github.com/checchia
  • 23.
    Licenciamento da Apresentação Atribuição-UsoNão-Comercial-Compatilhamento pela mesma licença 2.5 Brasil Você pode: •copiar, distribuir, exibir e executar a obra •criar obras derivadas Sob as seguintes condições: Atribuição. Você deve dar crédito ao autor original, da forma especificada pelo autor ou licenciante. Uso Não-Comercial. Você não pode utilizar esta obra com finalidades comerciais. Compartilhamento pela mesma Licença. Se você alterar, transformar, ou criar outra obra com base nesta, você somente poderá distribuir a obra resultante sob uma licença idêntica a esta.
  • 24.
    Obrigado!! Daniel Checchia daniel@checchia.net @checchia Skype: daniel.checchia (11)3010-0140 (41) 4042-1050 Site pessoal: http://Checchia.NET