Gerenciando sites em WordPress de forma eficiente: do deploy à manutenção

Preview:

Citation preview

Gerenciando sitesem WordPressde forma eficiente:do deploy à manutençãoDaniel Kossmann Ferraz

WordCamp São Paulo 2016 | 10.DEZ.2016

Daniel Kossmann Ferrazdaniel@spirallab.com.br

www.spirallab.com.br

Desde 2009 <3 com WordPress

Criar sites no WordPressé divertido

Deploy e manutenção de vários sitesem WordPress leva muito tempo

(e não é divertido)

Minha jornadacriando sites em WordPress

WorkflowLOCAL → TEST → PROD

DeployLOCAL → TESTLOCAL → PROD

1. Abria FileZilla2. Conectava ao servidor3. Entrava na pasta do site4. Seleciona os arquivos alterados5. Enviava os arquivos desta pasta6. Entrava na outra pasta7. Seleciona os arquivos alterados8. Enviava os arquivos desta pasta

(…)

~10min

E se derproblema?

header.phpheader.bkp.20120102.phpheader.bkp.20120203.php

header.bkp.20120203.02.phpheader.bkp.20120203.03.php

header.bkp.20120205.phpheader.bkp.20120207.phpheader.bkp.20120304.phpheader.bkp.20120505.php

Problemas

● Falta de Versionamento● Trabalhoso identificar as alterações● “Bloqueio” do arquivo quando

alguém da equipe edita ele

Sistema de controle de versão(Git, eu escolho você!)

● Ver o que você alterou● Poder restaurar alterações● Sincronizar o trabalho em equipe● Visualizar histórico das alterações

DeployLOCAL → TESTLOCAL → PROD

1. Conectava no servidor pelo terminal2. Entrava na pasta do tema do site

(clone de um repositório Git)3. Atualizava o repositório

~2min

2 projetos por mês com 15 envios por semana (11 DEV e 4 PROD) por projeto

SFTP: ~240hrs/ano

Git: ~48hrs/ano

"Automatizar isto não é"Yoda,

filósofo da automatização emestre Jedi nas horas vagas

Git HooksDisparar scripts personalizados quando certas

ações importantes ocorrerem

Git Hooks

A cada envio (push):LOCAL → TEST

Git Hooks

A cada envio (push) com tag:LOCAL → PROD

0s para DEV (automático)

menos de 1min para PROD(~42s)

2 projetos por mês com 15 envios por semana (11 DEV e 4 PROD) por projeto

SFTP: ~96hrs/ano

Git: ~48hrs/ano

Git Hooks: ~4,5hrs/ano

Automatizar rulez!

Outras vantagens

Diminuir a possibilidadede erros (humano)

Todos os arquivos do projeto sincronizados

Melhorar a segurançaDesenvolvedores não precisam de acesso ao servidor

Automatizar a remoção de arquivos somente de desenvolvimento

readme.*, SCSS/, Gruntfile, node_modules/,bower_components/, ...

Deploy automatizado

Agora a manutençãodas instalações do WordPress

Processo de atualização do WordPress:

1. Acessa o /wp-admin do site2. Usa acessos do gerenciador de senhas3. Abre tela de atualização do WP4. Atualiza tudo5. Testa para ver se não quebrou nada

~2min para atualizar o WordPress+

~1min para teste mínimo do sitex

dois ambientes (TEST e PROD) =

~6min(sem erros)

WP 1WP 2WP 3WP 4

WP 11WP 12WP 13WP 14WP 15WP 16WP 17WP 18WP 19WP 20

TEST: WP 11TEST: WP 12TEST: WP 13TEST: WP 14TEST: WP 15TEST: WP 16TEST: WP 17TEST: WP 18TEST: WP 19TEST: WP 20

PROD: WP 11PROD: WP 12PROD: WP 13PROD: WP 14PROD: WP 15PROD: WP 16PROD: WP 17PROD: WP 18PROD: WP 19PROD: WP 20

ai meu corassaum

Soluçõesmais conhecidas

WordPress Multisite

Pontos negativos:● Segurança:

○ Ambiente único para os arquivos○ Um banco de dados

● Importação/exportação de sites isolados é mais difícil○ Clientes/projetos entram e saem

Plugins ( ManageWP / InfiniteWP / Calypso / ... )

Pontos negativos:● Dependência de serviços de terceiros● Custo● Segurança:

○ Comunicação externa○ Nem sempre tudo é transparente

Outra maneira?

Solução inspirada no WordPress empacotado (.deb) pelo Debian

( https://wiki.debian.org/WordPress )

Mesma instalação do WordPresspara vários sites isolados

(WordPress Farm)

Carrega instalação WordPress Farm( instalação original, apenas com wp-config.php modificado )

Carrega arquivos específicos do Site( contém wp-config.php simplificado e wp-content/ )

Acesso ao Site

Sites: Plugins

A pasta de plugins do site contém apenas links simbólicos para os

plugins do WordPress Farm

Atualizando o WordPress:wp-cli no WordPress Farm

WordPress Farm sóé acessível pelo terminal

(mais segurança)

Requisitos / Limitações

Necessário ter controle do Servidor

Uso do terminal para manutençãoe gerenciamento de temas e plugins

( usuários: role = editor)

Mesma versão (core/plugins) em todos sites no WordPress Farm

Novo processo de atualização do WordPress:

1. Abre o terminal e conecta no servidor2. wp-cli para atualizar o Farm do TEST3. Testa para ver se não quebrou nada4. wp-cli para atualizar o Farm do PROD5. Testa para ver se não quebrou nada

~30s para atualizar a base+

~1min para teste mínimo do sitex

dois ambientes (TEST e PROD) =

~3min(sem erros)

30 sites(TEST e PROD)

2 atualizações por mês(Plugins e/ou Core)

Painel do WordPress:~72hrs/ano

WordPress Farm:~12hrs/ano

Conforme o número de sites aumenta o ganho proporcional de horas

fica ainda maior

A ser implementado:atualização automática do TEST

a cada 24hrs e automatizar os testes

Outras vantagens

Facilidade emimportar/exportar sites

Autonomia e controle totaldo que acontece "nos bastidores"

(solução tecnicamente simples)

SegurançaIsolamento de sites e

sem comunicações externas

Menos um plugin ;)

Manutenção automatizada

Surgiu uma oportunidade?

Use a magiada automação!

Gerenciando sites em WordPress de forma eficiente: do deploy à manutenção

Daniel Kossmann Ferrazdaniel@spirallab.com.br

http://bit.ly/wcsp16-spirallab

WordCamp São Paulo 2016 | 10.DEZ.2016